sudo: /usr/lib/sudo/sudoers.so musi być własnością użytkownika Uid 0

10

Ilekroć próbuję zrobić coś, co wymaga mojego hasła, zwraca to:

u7ur7l3@ubuntu:~$ sudo
sudo: /usr/lib/sudo/sudoers.so must be owned by uid 0
sudo: fatal error, unable to load plugins
u7ur7l3@ubuntu:~$

Dlatego nie mogę zainstalować niczego z Centrum oprogramowania / menedżera pakietów ani uruchamiać w terminalu żadnych poleceń wymagających mojego hasła. Mogę się zalogować, ale to wszystko.

Przypadkowo zmieniłem uprawnienia do niektórych plików, a następnie zmieniłem kilka innych, próbując to naprawić: /. Teraz jestem całkowicie zagubiony, co robić.

Tak się stało, gdy próbowałem ponownie uruchomić sudo za pomocą pkexec:

u7ur7l3@ubuntu:~$ pkexec chown root /usr/lib/sudo/sudoers.so
Error getting authority: Error initializing authority: Error calling StartServiceByName for org.freedesktop.PolicyKit1: GDBus.Error:org.freedesktop.DBus.Error.Spawn.ExecFailed: Failed to execute program /usr/lib/dbus-1.0/dbus-daemon-launch-helper: Success 

u7ur7l3@ubuntu:~$ sudo ls
sudo: /usr/lib/sudo/sudoers.so must be owned by uid 0 sudo: fatal error, unable to load plugins

Aby zmienić uprawnienia, użyłem Root Actions jako usługi delfinów / wtyczki, więc historia nie pokazuje mi zmian uprawnień.

Właśnie zdałem sobie sprawę, że dźwięki już nie działają. Kiedy wchodzę do Phonon, nie ma tam nawet moich domyślnych ustawień i urządzeń odtwarzających. Poza tym nie mam opcji zamknięcia, mogę się tylko wylogować lub wyjść.

7UR7L3
źródło
Czy problem z dźwiękiem i zamykaniem jest nowy, odkąd uruchomiłeś pkexecpolecenie?
Eliah Kagan
@Eliah Kagan, nie, zdałem sobie sprawę z problemu z dźwiękiem, gdy zalogowałem się do mojego komputera, i zdałem sobie sprawę z problemu z zamknięciem, kiedy wyłączałem komputer ostatniej nocy. Skończyło się na przytrzymaniu przycisku zasilania.
7UR7L3,
Rozszerzyłem swoją odpowiedź, aby zapewnić instrukcje, które powinny działać, mimo że żadne z nich sudoi PolicyKit (via pkexec) nie działają.
Eliah Kagan
2
su root chown -R root: root / usr / lib /

Odpowiedzi:

20

Własność co najmniej jednego z ważnych plików systemowych jest nieprawidłowa. To zła rzecz; jeśli tak się stało z wieloma plikami systemowymi (być może w pewnym momencie uruchomiłeś duże sudo chownpolecenie z -Rflagą?), może to spowodować szereg innych błędów systemowych i niestabilności. Więc jeśli niedawno zainstalowałeś Ubuntu , możesz chcieć zainstalować ponownie, jak sugeruje Adam Heathcote .

Ale nie trzeba ponownie instalować, aby rozwiązać ten problem . Zamiast tego po prostu napraw własność tego pliku. Jeśli później pojawią się błędy dotyczące innych plików, możesz je również naprawić (chociaż być może będziesz musiał powiedzieć nam, jakie są komunikaty o błędach, abyśmy mogli również powiedzieć ci, jak je naprawić).

sudonie działa, ale przy użyciusudo jest jeden z dwóch sposobów dla administratorów do wykonywania czynności, jak korzeń na Ubuntu. Drugi to Polkit (który nazywał się PolicyKit).

Uruchom to polecenie, które używa Polkit (via pkexec), aby zmienić własność /usr/lib/sudo/sudoers.soback to root(tj. Uid 0):

pkexec chown root /usr/lib/sudo/sudoers.so

Następnie spróbuj użyć sudoponownie. Możesz uruchomić coś tak trywialnego jak i sprawdzić, czy pojawi się komunikat o błędzie.sudo ls

Na koniec polecam uruchomić, historyaby odsłonić wszystkie uruchomione polecenia. Mam nadzieję, że wyświetli się lista wszystkich uruchomionych poleceń, które zmieniły uprawnienia. Zakładając, że sudoteraz działa, zalecam opublikowanie nowego pytania, w tym danych wyjściowych history, aby uzyskać pomoc w cofnięciu wszystkich dokonanych zmian własności i uprawnień do plików.

Jeśli pkexecnie działa albo ...

Próbowałeś pkexeci to nie działało. Ponieważ sudoani Polkit nie działa, aby umożliwić wykonywanie działań jako root, będziesz musiał uruchomić system w trybie odzyskiwania i uzyskać powłokę root. Aby to zrobić, przytrzymaj Shiftpodczas uruchamiania komputera, aby mieć widoczne menu rozruchowe GRUB. Wybierz pozycję, która zawiera tryb odzyskiwania słów (ogólnie, powinieneś wybrać ten najbliższy górze, która ma te słowa). Następnie pojawi się menu, w którym masz wiele opcji - wybierz opcję upuszczenia do powłoki root.

Szczegółowe instrukcje dotyczące uzyskiwania dostępu do powłoki roota w trybie odzyskiwania znajdują się tutaj:

Po utworzeniu powłoki roota uruchom:

chown root /usr/lib/sudo/sudoers.so

Jeśli pojawi się błąd związany z niemożnością modyfikacji pliku lub systemu plików, ponownie podłącz go do odczytu:

mount -rw -o remount /

(Źródło pomysłu ponownego zamontowania i jak to zrobić: ta w większości niezwiązana odpowiedź .)

Następnie po uruchomieniu tego mountpolecenia chownponownie uruchom powyższe polecenie i sprawdź, czy działa.

Po zakończeniu trybu odzyskiwania możesz ponownie uruchomić komputer, uruchamiając:

reboot

sudopowinien wtedy działać, a przynajmniej dać inny błąd.

Na koniec należy pamiętać, że biorąc pod uwagę pokazane błędy, prawdopodobnie wiele plików ma niewłaściwe prawa własności lub uprawnienia. Byłoby idealnie, gdybyś mógł dowiedzieć się, które pliki zmodyfikowałeś w ten sposób. Na przykład, jeśli zorientujesz się, że wszystkie pliki znajdują się w kilku określonych folderach, może być możliwe poprawienie pełnego zakresu ostatnio występujących problemów.

Ponowna instalacja jest zdecydowanie opcją, ale zwłaszcza jeśli wszystko, co zmieniłeś, to własność (a nie uprawnienia, które są nieco trudniejsze do zrekonstruowania, ponieważ różnią się bardziej), powinno być możliwe po prostu przywrócenie uprawnień rekurencyjnie ich pierwotnym właścicielom (prawdopodobnie zwykle root) ) i całkowicie odwrócić szkody.

Pierwsze sudodziała ponownie jest pierwszym krokiem. Mam nadzieję, że powyższa technika pozwoli ci to zrobić.

Eliah Kagan
źródło
Postępowałem zgodnie z tymi instrukcjami, ale kiedy wróciłem do Kubuntu, problem nadal istniał. Ten sam błąd. W tym momencie prawdopodobnie łatwiej jest po prostu ponownie zainstalować. : /
7UR7L3
Ponadto, czy jest jakiś sposób, aby zrobić coś takiego: askubuntu.com/questions/9135/…, aby zapisać wszystko? Wszystko razem jako skrypt pseudo-bash nie zadziała, ponieważ sudo jest zaangażowane, więc ....
7UR7L3
@ 7UR7L3 Spowoduje to utworzenie kopii zapasowej informacji o zainstalowanych pakietach i większości informacji o ustawieniach systemowych programów. W połączeniu z pełną kopią zapasową katalogu domowego, co powinno umożliwić przywrócenie rzeczy w pierwotnym stanie, po usunięciu istniejącego systemu i zainstalowaniu nowego, tak. Pamiętaj, aby zawsze mieć kopię zapasową wszystkich naprawdę ważnych plików (takich jak dokumenty). Jeśli uznasz, że potrzebujesz więcej informacji na temat tej techniki stosowanej w Twojej sytuacji, sugeruję opublikowanie nowego pytania (ale nie mam nic przeciwko, jeśli zadasz tutaj komentarze).
Eliah Kagan
Czy jest na to dobry sposób? Mam dysk zewnętrzny 1 TB, na którym mogę wykonać kopię zapasową, ale nie pojawi się nigdzie po podłączeniu. Świeci się, żeby pokazać, że działa, ale nic na ekranie się nie zmienia i nigdzie nie ma delfina . Potem, kiedy już zacznę działać, jak powinienem zacząć zapisywać wszystko. W menedżerze pakietów mogłem zapisać zainstalowane pakiety w dokumencie tekstowym, ale to naprawdę wszystko, co wymyśliłem, aby zapisać informacje. Prawie wszystkie inne rozwiązania dotyczą sudo, które wciąż nie działa.
7UR7L3,
@ 7UR7L3 Do tworzenia kopii zapasowych plików? Uruchom komputer z Live CD / DVD lub Live USB. Możesz uzyskać dostęp do swoich plików stamtąd i wykonać ich kopię zapasową na dysku zewnętrznym. Jeśli twój dysk zewnętrzny również nie pojawia się w systemie na żywo, to jest to zupełnie osobny problem, w którym mogę nie być w stanie ci pomóc i prawie na pewno nie w ramach komentarzy. Jeśli tak się stanie, polecam opublikować nowe pytanie. Jeśli skomentujesz tutaj z linkiem do nowego pytania, postaram się na niego spojrzeć i w razie potrzeby przyczynić się.
Eliah Kagan