Dlaczego muszę edytować / etc / sudoers za pomocą visudo?

51

Zauważyłem, że plik sudoers i pliki konfiguracyjne cron działają w specjalny sposób w porównaniu do innych plików konfiguracyjnych w systemie Linux. Muszą być edytowane za pomocą specjalnego opakowania, a nie dowolnego edytora tekstu. Dlaczego to?

Brian Lyttle
źródło

Odpowiedzi:

71

Visudo używa się głównie w celu uniknięcia uszkodzenia systemu. Visudo sprawdza twoje zmiany, aby upewnić się, że niczego nie zepsułeś. Jeśli coś popsułeś, możesz całkowicie zniszczyć swoją zdolność do naprawy lub zrobienia czegokolwiek wymagającego uprawnień bez ponownego uruchamiania w trybie ratunkowym.

Strona podręcznika opisuje to .

visudo edytuje plik sudoers w bezpieczny sposób, analogicznie do vipw (8). visudo blokuje plik sudoers przed wieloma jednoczesnymi edycjami, zapewnia podstawowe testy poprawności i sprawdza błędy analizy. Jeśli plik sudoers jest obecnie edytowany, otrzymasz wiadomość, aby spróbować ponownie później.

Zoredache
źródło
3
Ciekawy! +1, za zilustrowanie prostego wyjaśnienia czegoś, co powinienem był wiedzieć dawno temu :)
Greg Meehan
7
Zachowanie visudo jest ogólnie dostępne jako polecenie o nazwie sudoedit. Robi to ten sam cykl blokowania / kopiowania / edycji / kopiowania / odblokowywania (choć oczywiście nie w kroku analizy). Zaletą tego rozwiązania jest to, że umożliwia on sudo dostęp do edycji plików należących do roota bez uruchamiania edytora jako root, co może pozwolić im uruchomić powłokę z poziomu edytora. Jeśli wyrzucę edytor z edytora podczas uruchamiania sudoedit, mój euid nadal będzie mój.
James F,
18

Odpowiedź Zoredache jest idealna.

Jeszcze jedna rzecz, o której warto wspomnieć. Możesz użyć ulubionego edytora, ustawiając EDITORlub VISUAL:

export EDITOR=whatevertexteditoryouwant
export VISUAL=whatevertexteditoryouwant

Lub:

EDITOR=whatevertexteditoryouwant visudo
cstamas
źródło
Jeśli to zrobisz, nadal wykona krok sprawdzania składni lub będzie to równoznaczne z wywołaniem sudoedit, jak sugerował @James F.?
o0 ”.
Tak, jest odpowiedzią na twoje pytanie. Możesz użyć prawie dowolnego edytora, który możesz wywołać z cli.
cstamas
3
To nie było pytanie tak lub nie: V
o0 '.
5
Będzie to zrobić sprawdzanie składni.
cstamas