Warum müssen wir visudo verwenden, anstatt die sudoers-Datei direkt zu ändern?

83

Ich verstehe, sudodass Sie verwenden sollten , wenn Sie ändern möchten, wer und was sie damit tun können visudo. Ich weiß, dass ich die Datei / etc / sudoers nicht direkt selbst ändern soll.

Was visudobewirkt das direkte Ändern der Datei nicht? Was kann schon schief gehen?

Dason
quelle

Antworten:

104

visudoüberprüft die Dateisyntax, bevor die sudoersDatei tatsächlich überschrieben wird.

Wenn Sie einen einfachen Editor verwenden, können Sie die Syntax durcheinander bringen und speichern ... sudofunktioniert (wahrscheinlich) nicht mehr, und da dies /etc/sudoersnur durch änderbar ist root, stecken Sie fest (es sei denn, Sie haben eine andere Möglichkeit, Root zu werden).

Außerdem wird sichergestellt, dass die Bearbeitungen eine atomare Operation sind. Diese Sperre ist wichtig, wenn Sie sicherstellen möchten, dass niemand Ihre sorgfältig durchdachten Konfigurationsänderungen verfälschen kann. Für die Bearbeitung anderer Dateien als root /etc/sudoersgibt es außerdem den sudoeditBefehl, der auch vor solchen Bearbeitungskonflikten schützt.

Matte
quelle
3
Wow, wusste nie über Sudoedit. Es funktioniert nicht unter OS X, also nehme ich an, es ist ein GNU-Tool? Wie auch immer, coole Infos hier. Ich hatte immer manuell editiert und hatte nie ein Problem - ich verstehe jetzt, dass es nur Glück war und das Tool helfen kann, Katastrophen vorzubeugen. Vielen Dank!
Harv
2
@ Harv. Es gibt kein GNU sudound OS X verfügt über GNU-Tools. Da sudo zum ersten Mal als Open-Source-Anwendung erstellt wurde, gibt es wahrscheinlich keinen Grund dafür, dass es viele Implementierungen gibt. sudound sudoeditsind der gleiche Befehl, sudoverhält sich wie sudo -ebeim Aufruf als sudoedit. Ich glaube, es ist nur so, dass OS X vergessen hat, den sudoedit -> sudoLink hinzuzufügen , aber Sie sollten weiterhin argv [0] verwenden sudo -eoder aufrufen können , um dasselbe Verhalten zu erzielen. sudosudoedit
Stéphane Chazelas
Interessanterweise wird visudostandardmäßig Nano verwendet.
Tim
3
@Tim: Der "echte" Standardwert ist vi, er kann jedoch so konfiguriert werden, dass er etwas anderes verwendet. Nano könnte also in der Tat die Standardeinstellung für Ihre Distribution / Ihr Setup sein. Siehe die Manpage .
Mat
2
@ AngularInDepth.com, die Folgen liegen auf der Hand. Wenn Sie eine ungültige sudoers-Datei speichern, kann das System sie nicht analysieren. Also, wenn ich a mache sudo vim /etc/sudoersund die Syntax verpasse, dann werde ich nicht in der Lage sein, sie sudo vim /etc/sudoerswieder zu reparieren. Tatsächlich geht jede Möglichkeit zur Erhöhung von Berechtigungen über sudo verloren, da das System die Datei nicht analysieren kann.
Spencer D
23

Aus der visudo-Manpage:

visudo sperrt die sudoers-Datei gegen mehrere gleichzeitige Bearbeitungen, bietet grundlegende Sicherheitsüberprüfungen und prüft auf Analysefehler. Wenn die sudoers-Datei gerade bearbeitet wird, erhalten Sie eine Nachricht, um es später erneut zu versuchen.

Überprüfen Sie auch diese Antwort von Serverfehler .

Amyassin
quelle