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?
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:
Sie können die Standardeinstellung für Optionen außer Kraft setzen, z. B. requiretty
fü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 , requiretty
Satz in den Kompilierung-Standardoptionen ist, wird die folgende sudoers
ermöglicht Datei sowohl artbristol
und bob
auszuführen /path/to/program
als root aus einem Skript. artbristol
benötigt kein Passwort, bob
muss aber ein Passwort eingeben (ist vermutlich tty_tickets
deaktiviert und hat bob
sein 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 artbristol
die Ausführung /path/to/program --option
in einem Skript, jedoch nicht /path/to/program
mit anderen Argumenten.
Cmnd_Alias MYPROGRAM = /path/to/program --option
artbristol ALL = (root) /path/to/program
artbristol ALL = (root) NOPASSWD: MYPROGRAM
Defaults!MYPROGRAM !requiretty
Etwas wie das:
myuser ALL=(ALL) NOPASSWD:/usr/local/bin/mycmd
Defaults:myuser !requiretty
/etc/sudoers.d/
Datei hinzugefügt wurde . CentOS 7.1
/etc/sudoers.d/
. CentOS 7.5 :(
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/01build
mit 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/01build
die 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
/etc/sudoers
, scheint aber in einer/etc/sudoers.d/
Datei nicht zu funktionieren