Wie führe ich bestimmte Sudo-Befehle ohne Kennwort aus?

192

Auf einem bestimmten Computer muss ich häufig ab und zu die Befehle sudo ausführen. In den meisten Fällen kann ich das Passwort für sudo eingeben.

Es gibt jedoch drei sudo -Befehle Ich möchte ohne Eingabe eines Passworts ausführen: :

  • sudo reboot
  • sudo shutdown -r now
  • sudo shutdown -P now

Wie kann ich diese Befehle vom Kennwortschutz für sudo ausschließen?

    
Z9iT 03.07.2012, 10:31
quelle

1 Antwort

257

Verwenden Sie die Direktive NOPASSWD

Sie können die Direktive NOPASSWD in Ihrer /etc/sudoers -Datei .

Wenn Ihr Benutzer user und Ihr Host host heißt, können Sie diese Zeilen zu /etc/sudoers hinzufügen:

user host = (root) NOPASSWD: /sbin/shutdown
user host = (root) NOPASSWD: /sbin/reboot

Dadurch kann der Benutzer user die gewünschten Befehle für host ausführen, ohne ein Kennwort einzugeben. Alle anderen sudo ed-Befehle erfordern weiterhin ein Kennwort.

Die in der sudoers -Datei angegebenen Befehle müssen vollständig qualifiziert sein (dh den absoluten Pfad des auszuführenden Befehls verwenden), wie in den sudoers man-page . Die Angabe eines relativen Pfads wird als Syntaxfehler betrachtet.

Wenn der Befehl mit einem abschließenden / -Zeichen endet und auf ein Verzeichnis zeigt, kann der Benutzer jeden Befehl in diesem Verzeichnis ausführen (jedoch nicht in einem der darin enthaltenen Unterverzeichnisse). Im folgenden Beispiel kann der Benutzer user einen beliebigen Befehl im Verzeichnis /home/someuser/bin/ :

ausführen
user host = (root) NOPASSWD: /home/someuser/bin/

Hinweis: Verwenden Sie immer den Befehl visudo um die sudoers -Datei zu bearbeiten, um sicherzustellen, dass Sie sich nicht aus dem System sperren - nur für den Fall, dass Sie aus Versehen etwas Falsches in die sudoers -Datei schreiben. visudo speichert die geänderte Datei an einem temporären Speicherort und nur überschreibt die echte sudoers -Datei, wenn die geänderte Datei fehlerfrei analysiert werden kann.

Verwenden von /etc/sudoers.d anstelle von /etc/sudoers zu ändern

Alternativ zur Bearbeitung der Datei /etc/sudoers können Sie die beiden Zeilen zu einer neuen Datei in /etc/sudoers.d hinzufügen, z. /etc/sudoers.d/shutdown . Dies ist eine elegante Möglichkeit, verschiedene Änderungen an den sudo - Rechten zu trennen, und lässt die ursprüngliche sudoers - Datei für einfachere Upgrades unangetastet.

Hinweis: Wieder sollten Sie den Befehl % verwenden. visudo zum Bearbeiten der Datei, um sicherzustellen, dass Sie sich nicht aus dem System sperren:

sudo visudo -f /etc/sudoers.d/shutdown 

Dies stellt auch automatisch sicher, dass der Eigentümer und die Berechtigungen der neuen Datei korrekt festgelegt sind.

Wenn sudoers fehlerhaft ist

Wenn Sie visudo nicht zum Bearbeiten Ihrer Dateien verwendet haben und dann versehentlich /etc/sudoers oder eine Datei in /etc/sudoers.d durcheinander gebracht haben, werden Sie von sudo gesperrt.

Die Lösung könnte darin bestehen, die Dateien mithilfe von pkexec zu korrigieren ist eine Alternative zu sudo .

Um /etc/sudoers zu korrigieren:

pkexec visudo

Um /etc/sudoers.d/shutdown zu korrigieren:

pkexec visudo -f /etc/sudoers.d/shutdown

Wenn der Besitz und / oder die Berechtigungen für eine sudoers -Datei nicht korrekt sind, wird die Datei von sudo ignoriert. In dieser Situation werden Sie möglicherweise ebenfalls gesperrt. Wiederum können Sie pkexec verwenden, um das Problem zu beheben.

Die korrekten Berechtigungen sollten wie folgt lauten:

$ ls -l /etc/sudoers.d/shutdown 
-r--r----- 1 root root 86 Jul 16 15:37 /etc/sudoers.d/shutdown

Verwenden Sie pkexec wie folgt, um Besitz und Berechtigungen zu korrigieren:

pkexec chown root:root /etc/sudoers.d/shutdown
pkexec chmod 0440 /etc/sudoers.d/shutdown
    
mgd 03.07.2012, 10:43
quelle

Tags und Links