Nowe posty

Autor Wątek: Nie działa SU, czyli jak zepsułem Linuxa...  (Przeczytany 11095 razy)

butcheronline

  • Gość
Nie działa SU, czyli jak zepsułem Linuxa...
« dnia: 2011-01-11, 16:49:31 »
Witam,
jak widać jestem nowy. Ogólnie nie mam wiele wspólnego z Linuxem, co zresztą przyczyniło się do powstania mojego problemu.

Proszę o wyrozumiałość i pomoc... zanim szef wróci z nart i urwie mi łeb :)

Chciałem ustawić dla użytkownika dostęp do folderu, aby mógł się dostać przez ftp

chown -R user:user .

Tylko zamiast . dałem /

No i tym sposobem zmieniłem właściciela dla 50.000 plików... na szczęście nie wszystko się zmieniło i serwer działa dalej. Napisałem skrypt, który przywrócił właścicieli dla wszystkich folderów /home/* no i czym prędzej wylogowałem się z roota, jako że wreszcie zrozumiałem dlaczego działanie na koncie root nie jest bezpieczne!

Teraz chciałem się zalogować z powrotem, żeby coś zrobić... no i okazało się, że nie działa su.

Zawsze jest: su: Uwierzytelnienie nie powiodło się

Hasło na bank jest dobre. Zresztą nie da się zalogować na innych użytkoników przez su, a przez logowanie zwykłe już tak.

Nie mogę się też zalogować na root'a normalnie, ponieważ jest zablokowany przez SSH, a nie mam fizycznego dostępu do serwera...

Czy macie jakiś pomysł jak to naprawić?

Z góry wielkie dzięki!

Pozdrawiam
Krzysiek

Offline mateo86

  • Users
  • Guru
  • *****
  • Wiadomości: 647
    • Zobacz profil
Nie działa SU, czyli jak zepsułem Linuxa...
« Odpowiedź #1 dnia: 2011-01-11, 17:03:46 »
Kiedyś brat zrobił mi coś podobnego. Długo szukałem, na tym forum też chyba pisałem. Najprościej i najszybciej będzie od nowa postawić serwer jeśli jest to możliwe.
Bo bez root to raczej nic szczególnego tam nie zdziałasz...

Możesz spróbować zalogować się na konto tego użytkownika, któremu chciałeś dać dostęp i wykonać podobną komendę, z tym że użytkownikiem niech będzie root. Potem dla każdego użytkownika "zwrócić" jego pliki z /home itp.

Tak ogólnie, to musiałbyś znać kto był właścicielem i jakie miały prawa przynajmniej najważniejsze kluczowe pliki systemowe. Będzie trochę szukania i ustawiania. Bardzo czasochłonne.

U mnie była dodatkowy przypadłość taka, że wszystko świetnie działało do restartu. Potem system nie chciał się podnieść.

butcheronline

  • Gość
Nie działa SU, czyli jak zepsułem Linuxa...
« Odpowiedź #2 dnia: 2011-01-11, 18:04:02 »
do straszna kiszka... :/ instalka nie wchodzi w grę... przynajmniej póki jest cień nadziei, że da się inaczej...

najbardziej mi zależy na tym aby SU zaczęło działać... Potem będę się bawił w przywracanie prawowitego właściciela plików...

Ksanderon

  • Gość
Nie działa SU, czyli jak zepsułem Linuxa...
« Odpowiedź #3 dnia: 2011-01-11, 18:14:09 »
w takim razie nadaj uprawnienia wszystkim użytkownikom do /bin/su i przydziel uprawnienia użytkownikom do ich kont. będzie potrzebne zmienienie uprawnień dla etc/passwd, etc/groups oraz dla innych przechowujących globalne dane o użytkownikach.

Offline roobal

  • Users
  • Guru
  • *****
  • Wiadomości: 2056
    • Zobacz profil
Nie działa SU, czyli jak zepsułem Linuxa...
« Odpowiedź #4 dnia: 2011-01-11, 18:27:31 »
Cytat: butcheronline
Nie mogę się też zalogować na root'a normalnie, ponieważ jest zablokowany przez SSH, a nie mam fizycznego dostępu do serwera...
A możesz mieć fizyczny dostęp do serwera lub ktoś inny ma? Jeśli tak, to możesz spróbować wszystko odkręcić, uruchamiając jakieś livcd, np. PartedMagic, do którego można zalogować się przez ssh albo Arch Linux.

Pozdrawiam!

darko

  • Gość
Nie działa SU, czyli jak zepsułem Linuxa...
« Odpowiedź #5 dnia: 2011-01-11, 18:38:24 »
Sprawdź czy to zadziała:
sudo chown -R root:root /

butcheronline

  • Gość
Nie działa SU, czyli jak zepsułem Linuxa...
« Odpowiedź #6 dnia: 2011-01-11, 18:44:04 »
Cytat: Ksanderon
w takim razie nadaj uprawnienia wszystkim użytkownikom do /bin/su i przydziel uprawnienia użytkownikom do ich kont. będzie potrzebne zmienienie uprawnień dla etc/passwd, etc/groups oraz dla innych przechowujących globalne dane o użytkownikach.
hm, zawartość /etc jakoś się uchowała...

-rw-r--r--  1 root root    2212 gru 20 15:03 passwd
-rw-r--r--  1 root root     962 gru 20 14:49 group
-rw-r-----  1 root shadow  1781 gru 20 15:52 shadow

/bin/su już gorzej, bo user się zmienił, ale prawa są -rwxr-xr-x...

su się wykonuje, ale zawsze jest błąd uwierzytelniania... Wie ktoś jak działa su? Z czego korzysta, co sprawdza?


PS. Bardzo ciężko się szuka informacji nt su... trochę mało liter ma ta komenda... :/

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3068
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Nie działa SU, czyli jak zepsułem Linuxa...
« Odpowiedź #7 dnia: 2011-01-11, 18:51:57 »
Wywołanie chown zdejmuje atrybuty SUID i SGID. Do poprawnej pracy su wymagane jest ustwaienie u niego bitu SUID (u mnie flagi su to -rws--x--x, generalnie standardowe dla tego typu aplikacji). Napisz jakie to distro, może szczęśliwy posiadacz takowego podeśle listę poleceń z ustawionym SUID/SGID.
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

Ksanderon

  • Gość
Nie działa SU, czyli jak zepsułem Linuxa...
« Odpowiedź #8 dnia: 2011-01-11, 18:58:52 »
można by pobrać kod z GNU z pakietu shadow-password i poczytać sobie na dobranoc;P
jak mi się zechce i ruszę to napisze w tym poście co znalazłem.

/usr/adm/sudo.log, /var/adm/sudo.log, /etc/stmp, /etc/sudoers, /etc/shadow, /etc/login.defs,/etc/passwd.pag,/etc/group.pag,/etc/shadow.pag,/etc/gshadow,/etc/gshadow.pag,/var/run/utmp,/var/log/wtmp,/etc/shells,/etc/logoutd.mesg,/etc/issue,/var/spool/mail,/etc/skel,/etc/default/useradd,/etc/default/nuaddXXXXXX,/var/log/lastlog,

część może nie potrzebna ale to są wszystkie pliki(chyba?) o jakich wspominają nagłówki z pakietu shadow-password.

butcheronline

  • Gość
Nie działa SU, czyli jak zepsułem Linuxa...
« Odpowiedź #9 dnia: 2011-01-13, 12:13:24 »
@pkraszewski
rzeczywiście, jest s, a nie x...

@Ksanderon
dzięki :) ale u mnie połowy z tych plików nie ma. a druga połowa należy do roota, więc jakoś się nei zmieniły...


Nastąpiły pewne postępy... dostałem się do serwera :) teraz pojawia się problem... nie mogę przywrócić właściciela dla dowiązań:

root: ls -la /vmlinuz
rwxrwxrwx   1 wronguser wronguser    31 lut 22  2010 vmlinuz -> boot/vmlinuz-2.6.30-bpo.1-amd64
11:36:07

root: chown root:root vmlinuz
chown: zmiana właściciela `vmlinuz': System plików wyłącznie do odczytu

root: mount
/dev/sda2 on / type ext3 (rw,errors=remount-ro)


I moje pytanie... Czy to oznacza, że wystąpił błąd systemu plików i system się przemontował w tryb ro?


Zrobiłem też krok w stronę działania su:
Na innym debianie:
root: find -group shadow

I mam listę plików:
./etc/shadow
./etc/gshadow
./sbin/unix_chkpwd
./usr/bin/expiry
./usr/bin/chage

Przypisałem dobrą grupę...
dodałem bit s "chmod g+s ..." dla odpowiednich plików +dla /bin/su

NO I DZIAŁA!!!!!!! :D

chmooreck

  • Gość
Nie działa SU, czyli jak zepsułem Linuxa...
« Odpowiedź #10 dnia: 2011-01-13, 13:24:51 »
Przemountuj w rw...
mount -o remount,rw /

butcheronline

  • Gość
Nie działa SU, czyli jak zepsułem Linuxa...
« Odpowiedź #11 dnia: 2011-01-13, 14:35:21 »
mount -o remount,rw /  niestety nie zadziałało... ale za to zadziałało:

chown -R root:root vmlinuz :D



Uf... chyba wszystko jest już OK... mam nadzieję, że po restarcie odpali... ale nie bedę sprawdzał póki to możliwe :D

-------------------------------------------
Tutorial co należy zrobić, aby przywrócić właściwych użytkowników po wykonaniu komendy chown -R user /

1. Nie opuszczać konsoli root'a, jeśli logujemy się przez SSH, bo nie zadziała su.
2. Przywrócić uprawnienia dla roota
chown -R root:root /
3. Znaleźć podobną dystrybucję linuxa i wykonać polecenie
ls -laR / > ~/out.txt
4. Napisać skrypt, który zmieni użytkownika i chmod, dla plików na podstawie out.txt
Ja to zrobiłem w PHP

$dirs = array(
'bin',
'dev',
'sbin',
'usr'
);

function process($line) {
global $current;
$line = preg_replace('/\\s+/', ' ', $line);
list($mod, $id, $user, $group, $size, $date, $time, $name) = explode(' ', $line);
if($mod{0} == 'c' || $mod{0} == 'b')
list($mod, $id, $user, $group, $costam, $size, $date, $time, $name) = explode(' ', $line);
if ($group != 'root' || $user != 'root')
echo "chown $user:$group $current"."$name \\n";
if ($mod{6} == 's')
echo "chmod g+s $current"."$name \\n";
if ($mod{3} == 's')
echo "chmod u+s $current"."$name \\n";
}


$current = '';
$ignore = false;
$skip = 0;
$waitForDir = true;
$lines = file('out.txt');

echo '
';

foreach($lines as $line) {
$line = trim($line);
if ($waitForDir) {
$current = substr($line, 1, -1).'/';
$ignore = (!in_array(substr($current, 1, strpos($current, '/', 1) - 1), $dirs));
$waitForDir = false;
$skip = 3;
continue;
}

if (empty($line)) {
$waitForDir = true;
continue;
}

if ($skip > 0) {
$skip--;
continue;
}

if ($ignore)
continue;

process($line);
}

echo '
';
Efektem będzie lista poleceń dla basha, np.:
chmod u+s /bin/mount 
chmod u+s /bin/ping
chmod u+s /bin/ping6
chmod u+s /bin/su
chmod u+s /bin/umount
chown root:audio /dev/audio
chown root:audio /dev/dmmidi
chown root:audio /dev/dspW
chown root:floppy /dev/fd0
W tym momencie su powinno już działać.
Najlepiej /dev/ przywrócić ręcznie, ponieważ urządzenia bywają różne

5. Przywrócić chown dla /home
#!/bin/sh

for i in $(ls /home ); do
    chown -R $i:$i /home/$i
done