Jak odzyskać sudo na Ubuntu?

12

Ja to zrobiłem:

sudo chown -R myname /usr/

a teraz nie mogę użyć sudopolecenia z powodu tego błędu:

sudo: musi być rootem setuid

A gdy czytam, oznacza to, że właścicielem tego pliku /usr/bin/sudonie jest root. To mój użytkownik teraz z powodu chown w /usrfolderze.

Na wielu forach i blogach ludzie sugerują, aby zrobić to jako root:

# chown root:root /usr/bin/sudo
# chmod 4111 /usr/bin/sudo

... ale problem polega na tym, że muszę się zalogować jako root, ale nie mogę, ponieważ jeśli napiszę suw terminalu, hasło jest nieprawidłowe (właściwie używam hasła, które dodałem do mojego użytkownika):

$ su
Password:
su: Authentication failure

Czy mogę odzyskać sudopolecenie?

Edycja: Moje Ubuntu jest pod Paralells na moim Mac OS X.

Adam
źródło
Co rozumiesz przez „Używam hasła, które dodałem do mojego użytkownika”? Podczas używania supojawi się monit o podanie hasła użytkownika root , a nie hasła użytkownika, jak w przypadku sudo. Czy znasz hasło roota dla tego komputera?
Caleb
Nie, nigdy nie musiałem go dodawać ani modyfikować, czy jest to ustawienie domyślne?
Adam
Musisz zrestartować komputer w trybie pojedynczego użytkownika. Jaką dystrybucję prowadzisz?
Gilles „SO- przestań być zły”
1
Ciekawe, ale co sprawiło, że zdecydowałeś się uruchomić sudo chmod -R cirk:cirk /usrCo próbujesz osiągnąć?
loosecannon
1
Program, który został zainstalowany gdzieś w / usr /, ponieważ nie znałem dokładnej lokalizacji programu, zdecydowałem się użyć chown na całym folderze usr, a ponieważ jestem noob, wszystko spieprzyłem: P
Adam

Odpowiedzi:

5

Jeśli masz podobny system, którego możesz użyć jako przewodnika, aby sprawdzić, jakie jest poprawne prawo własności do wszystkich plików, możesz uruchomić system w trybie ratunkowym, upuścić w skorupie głównej i ręcznie przywrócić poprawne prawo własności do wszystkich pliki w /usr.

Najszybszym sposobem może być ponowna instalacja systemu operacyjnego lub przywrócenie z kopii zapasowej.

W Ubuntu lub podobnym domyślnie nie ma hasła roota (konto jest wyłączone), dlatego nie możesz su.

psusi
źródło
8
Nie ma sprawy, ponowna instalacja systemu Windows nie zawsze jest najłatwiejszym i najszybszym sposobem na zrobienie czegokolwiek i na pewno nie uczy ludzi, jak naprawiać problemy. W tym przypadku wszystko, co musi zrobić, to cofnąć działanie, które podjął, co można łatwo zrobić, instalując system plików w innym środowisku, takim jak LiveCD lub tryb ratowania, który zasugerowałeś (zależnie od dystrybucji).
Caleb
@Caleb, gdy całkowicie niszczysz uprawnienia do znacznej części systemu plików. Nie spieprzył tylko sudo, prawdopodobnie zapomniał wspomnieć w swoim poście, że użył opcji -R (inaczej zmieniłoby to tylko właściciela samego katalogu / usr, a nie sudo). Opisałem również, jak odwrócić ten proces, ale jest to bardzo czasochłonne i żmudne zadanie.
psusi
1
Jest to przypadek chownnie chmod. Ponieważ wszystko w /usrfolderze powinno być root:root, powinna to być łatwa poprawka, a nie żmudna poprawka, którą chmodoznaczałby clobber.
Caleb
2
@Caleb nie wszystko w / usr powinno być rootem: rootem.
psusi
6
@Caleb chownresetuje bity setxid. Jest kilka plików /usr, które nie są własnością root; więcej, które są w innej grupie (szczególnie w programach setgid /usr/bin).
Gilles „SO- przestań być zły”,
11

Ponieważ posiadasz uprawnienia do jedynej rzeczy, która daje ci dostęp do poziomu root, będziesz potrzebować pomocy POZA obecnym środowiskiem oprogramowania, aby to naprawić.

Sugeruję, że najłatwiejszym sposobem jest uruchomienie LiveCD dla twojej dystrybucji, zamontowanie napędu i zmiana uprawnień do plików przy użyciu chmodwymienionych tam list.

Możesz także spróbować uruchomić komputer w trybie pojedynczego użytkownika, aby uzyskać powłokę root.

Pamiętaj, że zwykle wszystkie rzeczy w /usr/katalogu powinny być własnością, rootwięc powinieneś być w stanie zrobić rekurencję, chownaby naprawić wszystko, co zepsułeś. ( Edycja: Per @Gilles komentuje najwyraźniej działa chownprzerwy setuid i sgid bity, więc będzie trzeba ręcznie porównać do istniejącego systemu w celu przywrócenia wszystkich tych, kiedy ponownie ustalić prawo własności).

Jednak bardzo niewielu powinno być 4111. Ten dodatkowy ma specjalne uprawnienia, ale sprawia, że ​​działa jako root, nawet gdy jest uruchamiany jako użytkownik! Tylko sudoi kilka wybranych poleceń powinno mieć ustawiony ten bit uprawnień. Jeśli nie uruchomiłeś a chmod, prawdopodobnie nie musisz wcale tego naprawiać , wszystkie uprawnienia powinny już być poprawne. Nie uruchamiaj dużej chmodoperacji, nie wiedząc, jakie powinny być wszystkie uprawnienia.

Caleb
źródło
Czy to możliwe, jeśli system operacyjny jest na maszynie wirtualnej?
Adam
Tak, to nie ma znaczenia. Możesz użyć poziomu 1 (coś, co możesz zrobić na samym początku procesu rozruchu z grub / lilo lub wahdever twojego bootloadera) lub możesz skonfigurować maszynę wirtualną, aby używała obrazu ISO LiveCD jako urządzenia rozruchowego.
Caleb
aham, na długo przed ponowną instalacją spróbuję twojej porady :)
Adam
ok myślę, że jestem na LiveCD, teraz muszę to napisać w terminalu? sudo chown -R root /usr/?
Adam
Zaczynasz od tego, ale nie na /usrLivdCD, musisz gdzieś go zamontować i uruchomić wbrew tej ścieżce, powiedzmy /mnt/mydrive/usr. Następnie musisz naprawić bit setuid /mnt/mydrive/usr/bin/sudo. Następnie przejrzyj / usr na żywo i sprawdź, czy istnieją inne własności inne niż root. find /usr -not -uid 0i zmień te, aby pasowały. Następnie poszukaj rzeczy, które mają różne ustawione bity setuid lub setgid i upewnij się, że one również pasują. Jeśli masz prawdziwy system Ubunutu do porównania, byłoby to najlepsze.
Caleb
4

W trybie odzyskiwania Ubuntu wprowadź następujące polecenia .. To naprawiło problem dla mnie ..

mount -o remount,rw /
mount --all
chown root:root /usr/bin/sudo
chmod 4755 /usr/bin/sudo
restart

Mam nadzieję, że to rozwiąże problem. (Lub kogoś innego)

Znalazłem to tutaj w tym poście na blogu .

Użytkownik Ubuntu
źródło
2

Jest to o wiele łatwiejsze niż sugerują inne odpowiedzi. Nie ma potrzeby formatowania, ponownego uruchamiania ani używania Live CD.

su root # then enter your password to switch to root user
chown root:root /usr/bin/sudo && chmod 4755 /usr/bin/sudo
exit # to get back to the original user

To najprostszy sposób na rozwiązanie tego problemu. Wyjaśnienie, sudo jest uszkodzone (wiem, że uszkodzony jest zły termin, ale nie działa, więc musimy unikać używania sudo)

  • Za pomocą polecenia 1 (su root) zmieniamy użytkownika na root bez używania sudo.
  • Za pomocą polecenia 2 (chown root: root / usr / bin / sudo && chmod 4755 / usr / bin / sudo) naprawiamy uprawnienia / własność sudo.
  • Za pomocą polecenia 3 (wyjście) wracamy do pierwotnego użytkownika.

Przetestowałem tę metodę w systemie Linux. Który jest systemem podobnym do Ubuntu. Daj mi znać, że ta metoda nie działa na żadnym innym systemie operacyjnym. Odpowiednio zaktualizuje odpowiedź.

Dzięki

divyenduz
źródło
jak rozumiem, domyślnie konto root nie ma hasła, więc nie można podać hasła na pierwszym etapie su root, a ponieważ sudonie działa, nie można ustawić hasła roota
TitanFighter
1
Dzięki, pomogło mi to.
Arun
1

To jest prostsze niż ludzie to robią. Spróbuj wykonać następujące czynności:

  1. Zamiast próbować zalogować się jako root przy użyciu złamanego supolecenia, wyloguj się jako bieżący użytkownik i zaloguj się ponownie jako root za pomocą zwykłego Menedżera wyświetlania (tj. Ekranu logowania).
  2. Wykonaj następujące czynności na terminalu: chown root:root /usr/bin/sudo && chmod 4755 /usr/bin/sudo

To powinno naprawić sudopolecenie i sprawić, byś znów był gotowy do działania.

użytkownik7089
źródło
0

Aby zalogować się jako root, bez su lub sudo, możesz użyć pkexec:

pkexec su

Teraz zmień uprawnienia do plików:

chmod 440 /etc/sudoers
chmod 775 /etc/sudoers.d
chmod 440 /etc/sudoers.d/README
Jagmeet Singh Bains
źródło