Wie deaktiviere ich requiretty für einen einzelnen Befehl in sudoers?


44

Ich möchte requiretty deaktivieren, damit ich in Skripten sudo kann, aber ich möchte es lieber nur für einen einzelnen Befehl anstatt für alles deaktivieren. Ist das in der sudoers-Konfiguration möglich?

Antworten:


55

Sie können die Standardeinstellung für Optionen außer Kraft setzen, z. B. requirettyfür einen bestimmten Benutzer oder einen bestimmten Befehl (oder für einen bestimmten Benutzer oder Host), jedoch nicht für einen bestimmten Befehl, wenn Sie als bestimmter Benutzer ausgeführt werden.

Zum Beispiel, dass unter der Annahme , requirettySatz in den Kompilierung-Standardoptionen ist, wird die folgende sudoersermöglicht Datei sowohl artbristolund bobauszuführen /path/to/programals root aus einem Skript. artbristolbenötigt kein Passwort, bobmuss aber ein Passwort eingeben (ist vermutlich tty_ticketsdeaktiviert und hat bobsein Passwort kürzlich auf einem Terminal eingegeben).

artbristol ALL = (root) NOPASSWD: /path/to/program
bob ALL = (root) /path/to/program
Defaults!/path/to/program !requiretty

Wenn Sie die Einstellung für einen Befehl mit bestimmten Argumenten ändern möchten, müssen Sie einen Befehlsalias verwenden (dies ist eine Syntaxbeschränkung). Das folgende Fragment ermöglicht beispielsweise artbristoldie Ausführung /path/to/program --optionin einem Skript, jedoch nicht /path/to/programmit anderen Argumenten.

Cmnd_Alias MYPROGRAM = /path/to/program --option  
artbristol ALL = (root) /path/to/program
artbristol ALL = (root) NOPASSWD: MYPROGRAM
Defaults!MYPROGRAM !requiretty

31

Etwas wie das:

myuser    ALL=(ALL)    NOPASSWD:/usr/local/bin/mycmd
Defaults:myuser        !requiretty

Dies könnte funktionieren /etc/sudoers, scheint aber in einer /etc/sudoers.d/Datei nicht zu funktionieren
8bitjunkie

Für mich hat diese Bearbeitung funktioniert, wenn sie zu einer /etc/sudoers.d/Datei hinzugefügt wurde . CentOS 7.1
John Erck

Bei mir funktioniert das nicht /etc/sudoers.d/. CentOS 7.5 :(
Stefan Lasiewski

4

Ich fand es funktioniert gut für mich mit einer Datei in /etc/sudoers.d. Es ist ganz einfach zu überprüfen.

Zuerst habe ich /etc/sudoers.d/01buildmit den Inhalten erstellt:

build    ALL=(ALL)    NOPASSWD:/bin/date
Defaults:build !requiretty

Dann getestet, dass es funktioniert:

ssh host sudo -n /bin/date
Mon Nov 16 16:04:27 CST 2015

Dann habe ich /etc/sudoers.d/01builddie Defaults:Zeile geändert und gelöscht und danach bekomme ich:

ssh host sudo -n /bin/date
sudo: sorry, you must have a tty to run sudo
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.