Mit visudo Sudoer auf dem Mac bearbeiten

1

Ich habe es geschafft, die sudoers-Datei auf meinem Mac fehlerhaft zu machen. z.B.

$ sudo visudo
>>> /etc/sudoers: syntax error near line 45 <<<
sudo: parse error in /etc/sudoers near line 45
sudo: no valid sudoers sources found, quitting

Also holte ich mir die Standard-Sudoers-Datei von hier , loggte mich als root ein und kopierte sie von Documents nach /etc.

Wenn ich versuche, 'visudo' mit root auszuführen, wird Sublime Text gestartet und ich sehe eine leere sudoers.tmp, die meines Wissens die Sperrdatei ist.

Wenn ich versuche, den Inhalt der heruntergeladenen sudoers-Datei mit Sublime in die Datei sudoers.tmp zu kopieren, wird der obige Fehler angezeigt.

Hat jemand eine Lösung dafür? Was soll ich sehen, wenn ich den Befehl 'visudo', Sublime Text und sudoers.tmp ausführe?

Vielen Dank, George

daktau
quelle
Ich gehe davon aus, dass Sie bashals Shell verwenden. Versuchen Sie es EDITOR=nano visudoals root.
Max Ried
Das hat funktioniert!!! Vielen Dank. Ich musste sicherstellen, dass ich es als sudoers und nicht als sudoers.tmp
daktau
Ich werde es beantworten, damit Sie die Frage als beantwortet markieren können.
Max Ried
1
EDITOR=viwenn du masochistisch bist.
Max Ried

Antworten:

4

Wenn Ihr visudonicht wie erwartet funktioniert, möglicherweise weil Ihr Editor nicht richtig funktioniert, versuchen Sie, die EDITORUmgebungsvariable auf einen vernünftigen Wert zu setzen, und starten Sie dann visudo:

EDITOR=nano visudo

für sh, bash, dash, und kompatibel.

Max Ried
quelle
0

Ich bin heute auf dieses Problem gestoßen, und die obigen Informationen haben mir geholfen, aber ich wollte, dass mein Editor für andere Zwecke auf Erhabenheit eingestellt ist. Ich habe das Folgende zu meinem ~ / .bash_profile hinzugefügt, was das Visudo-Problem behebt, aber meinen Standard-Editor für Git usw. nicht ändert.

alias visudo='EDITOR=vi sudo visudo'

Bei der Ausführung wird der Editor für den folgenden Befehl in vi geändert, und Sie können die sudoers-Datei erfolgreich bearbeiten.

Dan McCarthy
quelle
Sie können festlegen, SUDO_EDITORanstatt dies EDITORzu vermeiden. Auch EDITOR=vi sudo visudo(ohne ein ;vor dem sudo) ändert den Wert der env-Variablen nur für diesen Befehl, nicht für die gesamte Shell.
Nohillside
Danke @Patrix, guter Tipp bezüglich: Ich habe meinen Alias ​​vereinfacht und meine Antwort oben bearbeitet, um dies widerzuspiegeln. Was Ihren anderen Tipp betrifft, habe ich versucht, ihn export SUDO_EDITOR='/usr/bin/vi'zu meinem hinzuzufügen ~/.bash_profile, aber er schien den sudo visudoBefehl überhaupt nicht zu beeinflussen. Meine Umgebungsvariable EDITOR schien immer noch wirksam zu sein, zumindest auf meinem Computer, auf dem OSX 10.9.5 ausgeführt wird.
Dan McCarthy
Du hast recht. SUDO_EDITOR funktioniert nur für sudo -e /path/to/file, nicht für visudo. Und sudo -e darf nicht zum Bearbeiten der sudoers-Datei verwendet werden, da in diesem Fall keine Syntaxprüfung durchgeführt wird.
Nohillside
Weder EDITOR noch SUDO_EDITOR funktionieren ordnungsgemäß für mich. Ich benutze alias visudo='VISUAL=vim sudo visudo'stattdessen.
Midwire