Jak edytować nieprawidłowy plik sudoers? Zgłasza poniższy błąd i nie pozwala mi ponownie edytować, aby go naprawić.
Oto co się dzieje:
$ sudo visudo
>>> /etc/sudoers: syntax error near line 28 <<<
sudo: parse error in /etc/sudoers near line 28
sudo: no valid sudoers sources found, quitting
Odpowiedzi:
W nowoczesnym systemie Ubuntu (i wielu innych dystrybucjach GNU / Linux) naprawienie uszkodzonego
sudoers
pliku jest w rzeczywistości dość łatwe i nie wymaga ponownego uruchamiania, korzystania z płyty CD na żywo ani fizycznego dostępu do komputera.Aby to zrobić przez SSH, zaloguj się do komputera i uruchom polecenie
pkexec visudo
. Jeśli masz fizyczny dostęp do maszyny, SSH nie jest konieczne; wystarczy otworzyć okno terminala i uruchomić topkexec
polecenie.Zakładając, że ty (lub inny użytkownik) jesteś upoważniony do uruchamiania programów tak jak
root
w PolicyKit, możesz wprowadzić hasło, a następnie uruchomi się onovisudo
jakoroot
i możesz je naprawić/etc/sudoers
.Jeśli chcesz edytować jeden z plików konfiguracyjnych w
/etc/sudoers.d
(który w tej sytuacji jest rzadki, ale możliwy), użyj .pkexec visudo -f /etc/sudoers.d/filename
Jeśli masz pokrewną sytuację, w której musisz wykonać dodatkowe polecenia administracyjne systemu jako root, aby rozwiązać problem (również rzadkie w tej sytuacji, ale powszechne w innych), możesz uruchomić interaktywną powłokę root
pkexec bash
. Mówiąc ogólnie, dowolne nie graficzne polecenie, które można uruchomić,sudo
możnapkexec
zamiast tego uruchomić .(Jeśli w systemie jest więcej niż jedno konto użytkownika autoryzowane do uruchamiania programów, jak w
root
przypadku PolicyKit, wówczas w przypadku każdej z tych czynności zostaniesz poproszony o wybranie konta, którego chcesz użyć, zanim zostaniesz poproszony o podanie hasła.)Jeśli to nie zadziała - na przykład, jeśli nie ma użytkowników uprawnionych do uruchamiania programów jako root za pośrednictwem PolicyKit - uruchom komputer z Live CD Ubuntu (takiego jak CD, którego prawdopodobnie użyłeś do instalacji Ubuntu) i podłącz system plików dla zainstalowany system. Możesz to zrobić, uruchamiając się,
sudo parted -l
aby wyświetlić swoje partycje - prawdopodobnie jest tylko jedna partycja ext4, a to jest główny system plików.Załóżmy, że główny system plików zainstalowanego systemu Ubuntu to / dev / sda1. Następnie możesz go zamontować
sudo mount /dev/sda1 /mnt
. Następnie możesz edytować plik sudoers zainstalowanego systemu za pomocąsudo nano -w /mnt/etc/sudoers
. Lub, jeszcze lepiej, możesz go edytować za pomocą(co uniemożliwi zapisanie pliku sudoers z niepoprawną składnią).
źródło
#include
dyrektywy wsudoers
plikach są traktowane specjalnie; wiodące#
nie powoduje interpretacji reszty linii jako komentarza. Jakman sudoers
mówi: „Znak funta ('#') służy do wskazania komentarza (chyba że jest częścią dyrektywy #include lub chyba, że ...) Zobacz także visudo: #includedir sudoers.d (zarchiwizowane z lzone.de/ blog )pkexec visudo
prosi o hasło, które nie akceptuje poprawnego hasła. Zgłasza błąd „AWARIA AUTORYZACJI”.Zawsze używaj
visudo
do edycji pliku sudoers, nigdy nie edytuj go bezpośrednio. Zapobiegnie to zapisaniu go na dysku, chyba że zostanie zatwierdzone.źródło
Wpisz:
Następnie zmień ostatnią linię
Do:
To powinno rozwiązać twój problem.
źródło
#
z#includedir
powoduje błędy składniowe,#
jest to część dyrektywy, przynajmniej w Ubuntu 12.10.jeśli ktokolwiek taki jak ja nie miał zainstalowanego pkexec lub nie był w stanie uruchomić vi, visudo, nano lub innego edytora w celu zmiany pliku sudoers, możesz być pewien tego procesu .. Zostałem zapisany:
zamontuj ponownie urządzenie rozruchowe dla rw i zastosuj exec bezpośrednio dla użytkownika i edytuj plik
napraw ten błąd i bądź szczęśliwy :)
źródło
visudo
zamiast tegonano /etc/sudoers
.Jeśli pomieszałeś swój
sudoers
plik, musisz:visudo
, napraw swój plikźródło: - http://mario.net.au/content/recover-etcsudoers-ubuntu-1204
źródło
Nie ma nic złego #include sudoer.d usunięcie #include sudoer.d nie zrobi żadnej różnicy.
Ale upewnij się, że nie masz żadnych błędów składniowych. Miałem ten sam problem, ale spędziłem godziny na naprawie i właśnie zorientowałem się, że to błędy składniowe. Zapoznaj się z instrukcją i popraw je.
Załóżmy na przykład, że Twoja nazwa użytkownika to: dolly Użyłem następujących, co jest nieprawidłowe
poprawna składnia to
lub
mam nadzieję że to pomoże
źródło
visudo
podczas edycji tych plików, co zapewnia, że nie będziesz mieć błędów składniowych, zanim zmodyfikuje plik.visudo
służy nie tylko do edycji -/etc/sudoers
będzie także tworzyć i edytować pliki/etc/sudoers.d
. Będzie także działał z dowolnym edytorem tekstu. Szczegółowe informacje można znaleźć na stronie podręcznika .thunderbird
, która i tak nigdy nie powinna być uruchamiana jako root) skutecznie zapewni użytkownikowi pełny dostęp do systemu, gdy zostanie uruchomiona jako root. Nawet pozornie prosta funkcjonalność otwiera drzwi do pełnego dostępu do katalogu głównego. Na przykład użytkownik, który może uruchomić program, który może zapisać plik w dowolnej lokalizacji, ponieważ root może uzyskać pełny dostęp do roota (może zainstalować własny/etc/sudoers
lub jeśli ograniczenia składni temu uniemożliwiają, może zainstalować własny/etc/crontab
).uruchom tryb odzyskiwania, a następnie wpisz ten
tylko grupa główna i użytkownik root powinni mieć uprawnienia do odczytu
źródło
Możesz także zalogować się jako root na
tty
konsoli za pomocą Ctrl+ Fn( Fnod 1 do 6) i uruchomićvisudo
.źródło
Możesz edytować swój wpis rozruchowy również w Grub.
Po prostu uruchom ponownie komputer i poczekaj, aż grub się wyświetli. Następnie naciśnij „e” we wpisie „Ubuntu”, aby go edytować.
Poszukaj linii z „linux =” lub „kernel =” i po prostu dodaj „single” na końcu tej linii.
Następnie naciśnij klawisz F10, aby uruchomić ten tymczasowo zmodyfikowany wpis rozruchu. To da ci powłokę (bez GUI) z prawami roota i możesz edytować plik sudoers za pomocą s.th. jak nano / etc / sudoers z powrotem do poprzedniego stanu.
Następnie uruchom ponownie komputer i gotowe.
źródło
następnie cofnij swoje błędy
źródło
visudo
musi być uruchomiony jako root. Jeślisudo
nie działa,pkexec
czasami działa. Jest to objęte moją wcześniejszą odpowiedzią ... ale jest to poprawna odpowiedźvisudo
sama w sobie (gdy nie jest uruchamiana jako root) nie będzie działać, i mogą mieć wartość w poprawnych, krótkich odpowiedziach, nawet jeśli ich rekomendacje znacznie pokrywają się z innymi odpowiedziami. Oczywiście, jeśli przejdzie się w tryb odzyskiwania, jest to powłoka root, a następnie anisudo
nievisudo
jest to konieczne dla poleceń takich jakpkexec
. Może to masz na myśli ...W Ubuntu 16.04 działającym na VirtualBox (nie powinno to robić różnicy) powyższe metody nie działały dla mnie (nieprawidłowy wiersz na końcu pliku). Co zadziałało to:
su -
a następnie podaj hasło do własnej nazwy użytkownika.root@ubuntu-xenial:~#
natychmiast, jeśli/etc/sudoers
nie jest zbyt uszkodzony lub pusty. Nie jestem pewien, co by się stało w takim przypadku.visudo
i naprawić plik.Ctrl + X
pojawi się monit o zapisanie zmodyfikowanego bufora. NaciśnijY
iEnter
Jeśli
/etc/sudoers
coś jest puste lub brakuje czegoś i możesz to edytować, oto moja zawartość:źródło
Dobra praktyka: zapasowe okno terminala i uruchom je
sudo su
. Na innym termianlu uruchom visudo lub sudo vim / etc / sudoers. Jeśli coś pójdzie nie tak, wróć do terminalu pierwszego i napraw plik. Możesz zapytać, dlaczego nie uruchomićsudo su
wcześniejvisudo
w jednym terminalu? To również działa, ale wiąże się z większym ryzykiem zamknięcia terminalu, zanim się zorientujesz.źródło
Istnieje prostsze rozwiązanie. Bez ponownego uruchamiania, trybu odzyskiwania lub
pkgexec
(pkgexec
nie działał i nie mam pojęcia, dlaczego lub jak powinienem go używać), po prostu wykonaj:A potem po prostu napraw błąd składniowy!
źródło