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?

artbristol
quelle

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
Gilles 'SO - hör auf böse zu sein'
quelle
31

Etwas wie das:

myuser    ALL=(ALL)    NOPASSWD:/usr/local/bin/mycmd
Defaults:myuser        !requiretty
JRFerguson
quelle
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
Quanah Gibson-Mount
quelle