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


Auf einer bestimmten Maschine muss ich oft laufen sudo Befehle hin und wieder. Mir geht es gut mit Passwort eingeben sudo in den meisten Fällen.

Wie auch immer, es gibt drei sudo Befehle Ich möchte rennen ohne Passwort einzugeben:

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

Wie kann ich diese Befehle vom Passwortschutz ausschließen? sudo?


187
2017-07-03 08:31


Ursprung


Ähnlich zu Wie kann man die Ausführung ohne Sudo erlauben? - fouric


Antworten:


Benutze die NOPASSWD Richtlinie

Du kannst den ... benutzen NOPASSWD Richtlinie in Ihrem /etc/sudoers Datei.

Wenn Ihr Benutzer angerufen wird user und dein Gastgeber wird angerufen host Sie könnten diese Zeilen hinzufügen /etc/sudoers:

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

Dies ermöglicht dem Benutzer user um die gewünschten Befehle auszuführen host ohne ein Passwort einzugeben. Alle Anderen sudoEd-Befehle benötigen immer noch ein Passwort.

Die in der sudoers Datei Muss vollqualifiziert sein (d. h. den absoluten Pfad zum auszuführenden Befehl verwenden), wie in sudoers Man Seite. Das Bereitstellen eines relativen Pfads wird als Syntaxfehler betrachtet.

Wenn der Befehl mit einem Trailing endet / Zeichen und zeigt auf ein Verzeichnis, der Benutzer kann jeden Befehl in diesem Verzeichnis (aber nicht in irgendwelchen Unterverzeichnissen darin) ausführen. Im folgenden Beispiel der Benutzer user kann einen beliebigen Befehl im Verzeichnis ausführen /home/someuser/bin/:

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

Hinweis: Verwenden Sie immer den Befehl visudo um das zu bearbeiten sudoers Datei, um sicherzustellen, dass Sie sich nicht aus dem System aussperren - nur für den Fall, dass Sie versehentlich etwas falsch in die sudoers Datei. visudo speichert Ihre geänderte Datei an einem temporären Speicherort und wird nur Überschreibe das Reale sudoers Datei, wenn die geänderte Datei ohne Fehler analysiert werden kann.

Verwenden /etc/sudoers.d anstatt zu modifizieren /etc/sudoers

Als Alternative zum Bearbeiten der /etc/sudoers Datei, könnten Sie die zwei Zeilen zu einer neuen Datei in hinzufügen /etc/sudoers.d z.B. /etc/sudoers.d/shutdown. Dies ist eine elegante Möglichkeit, verschiedene Änderungen zu trennen sudo Rechte und hinterlässt auch das Original sudoers Datei unberührt für leichtere Upgrades.

Hinweis: Auch hier sollten Sie den Befehl verwenden visudo um die Datei zu bearbeiten, um sicherzustellen, dass Sie sich nicht aus dem System aussperren:

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

Dies stellt auch automatisch sicher, dass der Besitzer und die Berechtigungen der neuen Datei korrekt eingestellt sind.

Ob sudoers ist durcheinander

Wenn du es nicht benutzt hast visudo um Ihre Dateien zu bearbeiten und dann versehentlich durcheinander zu kommen /etc/sudoers oder eine Datei in /etc/sudoers.d dann wirst du ausgesperrt sein sudo.

Die Lösung könnte sein, die Dateien mit zu reparieren pkexec Das ist eine Alternative zu sudo.

Reparieren /etc/sudoers:

pkexec visudo

Reparieren /etc/sudoers.d/shutdown:

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

Wenn das Eigentum und / oder die Berechtigungen für eines nicht stimmen sudoers Datei wird die Datei von ignoriert sudo Sie könnten sich in dieser Situation auch ausgesperrt fühlen. Auch hier können Sie verwenden pkexec um das zu beheben.

Die richtigen 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

Benutzen pkexec wie das zu beheben Besitz und Berechtigungen:

pkexec chown root:root /etc/sudoers.d/shutdown
pkexec chmod 0440 /etc/sudoers.d/shutdown

253
2017-07-03 08:43



Ich hoffe, dass dies nur für diese 2 Befehle gilt, und ich werde nicht mit dem Rest des Systems oder einem anderen Befehl verpfuschen? - Z9iT
Die beiden Zeilen beziehen sich speziell auf diese beiden Befehle. Ob user ist nicht anders angegeben sudo Rechte, andere Befehle können von diesem Benutzer nicht ausgeführt werden. Schau es dir an man sudo und man sudoers. - mgd
Am Anfang stand ich einem chmod Problem gegenüber .. fügte ein Workout dazu in der Antwort hinzu. Thanx @mgd - Z9iT
@StanKurdziel Ich habe versucht mit dieser Zeile auf Mac OS X Yosemite und es hat gut funktioniert: mgd ALL=(root) NOPASSWD: /var/root/test. Ich bin Benutzer mgd und ALL meint "von allen Gastgebern". /var/root/test ist ein einfaches Shell-Skript "Hello World" mit Berechtigungen: -rwx------ 1 root wheel 27 12 Jun 09:54 /var/root/test. ich machte Nein andere Änderungen am System. - mgd
@Michael bitte lesen Sie die Manpage. Es ist alles dort geschrieben. Um es zu zitieren: Sie können jedoch auch Befehlszeilenargumente (einschließlich Platzhalter) angeben. Alternativ können Sie "" angeben, um anzugeben, dass der Befehl nur ohne Befehlszeilenargumente ausgeführt werden darf. - mgd