Dlaczego musimy używać visudo zamiast bezpośrednio modyfikować plik sudoers?

83

Rozumiem, że jeśli chcesz zmienić, kto może korzystać sudoi co może z tym zrobić, powinieneś użyć visudo. Wiem, że nie powinienem bezpośrednio modyfikować pliku / etc / sudoers.

Co takiego visudopowoduje bezpośrednia modyfikacja pliku? Co może pójść źle?

Dason
źródło

Odpowiedzi:

104

visudosprawdza składnię pliku przed nadpisaniem sudoerspliku.

Jeśli używasz prostego edytora, zepsuj składnię i zapisz ... sudo(prawdopodobnie) przestanie działać, a ponieważ /etc/sudoersjest to modyfikowalne tylko root, utkniesz (chyba że masz inny sposób na uzyskanie roota).

Dodatkowo zapewnia, że ​​zmiany będą jedną operacją atomową. To blokowanie jest ważne, jeśli musisz upewnić się, że nikt inny nie zepsuje twoich starannie przemyślanych zmian w konfiguracji. Do edycji innych plików jako root oprócz tego /etc/sudoersistnieje sudoeditpolecenie, które chroni również przed takimi konfliktami edycji.

Mata
źródło
3
Wow, nigdy nie wiedziałem o sudoedit. Nie działa w systemie OS X, więc zakładam, że jest to narzędzie GNU? W każdym razie fajne informacje tutaj. Zawsze edytowałem ręcznie i nigdy nie miałem problemu - rozumiem teraz, że to był tylko szczęście, a narzędzie może pomóc zapobiec katastrofie. Dzięki!
Harv,
2
@Harv. Nie ma GNU, sudoa OS X ma narzędzia GNU. Ponieważ sudo zostało po raz pierwszy stworzone jako aplikacja typu open source, prawdopodobnie nie ma powodu, by było ich wiele. sudoi sudoeditto samo polecenie, sudozachowuje się tak, sudo -egdy nazywa się sudoedit. Sądzę, że OS X zapomniał dodać sudoedit -> sudolink, ale nadal powinieneś być w stanie używać sudo -elub dzwonić sudoz ustawionym argumentem argv [0], sudoeditaby uzyskać takie samo zachowanie.
Stéphane Chazelas
Co ciekawe, visudodomyślnie używa nano.
Tim
3
@Tim: „Prawdziwa” wartość domyślna to vi, ale można ją skonfigurować tak, aby używała czegoś innego. Tak więc nano może rzeczywiście być domyślnym ustawieniem dla twojej dystrybucji / konfiguracji. Zobacz stronę manuala .
Mat.
2
@ AngularInDepth.com, konsekwencje są dość oczywiste. Jeśli zapiszesz niepoprawny plik sudoers, system nie będzie mógł go przeanalizować. Więc jeśli zrobię sudo vim /etc/sudoersi spartaczę składnię, to nie będę mógł sudo vim /etc/sudoersponownie tego naprawić. W efekcie wszystkie możliwości podniesienia uprawnień za pośrednictwem sudo zostaną utracone, ponieważ system nie będzie mógł przeanalizować pliku.
Spencer D
23

Ze strony podręcznika visudo:

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.

Sprawdź również tę odpowiedź z błędu serwera .

amyassin
źródło