如何在sudoers中禁用单个命令的requiretty?

art*_*tol 47 sudo

我想禁用 requiretty 以便我可以在脚本中使用 sudo,但我宁愿只对单个命令禁用它,而不是对所有命令禁用它。这可能在 sudoers 配置中吗?

Gil*_*il' 58

您可以覆盖选项的默认设置,例如requiretty特定用户或特定命令(或特定用户或主机运行),但不能覆盖作为特定用户执行的特定命令。

例如,假设requiretty在 compile-default 选项中设置,以下sudoers文件允许artbristolbob/path/to/programroot 身份从脚本中执行。artbristol不需要密码而bob必须输入密码(大概tty_tickets是关闭并bob最近在某个终端上输入了他的密码)。

artbristol ALL = (root) NOPASSWD: /path/to/program
bob ALL = (root) /path/to/program
Defaults!/path/to/program !requiretty
Run Code Online (Sandbox Code Playgroud)

如果要更改具有特定参数的命令的设置,则需要使用命令别名(这是语法限制)。例如,以下片段允许在脚本中artbristol运行/path/to/program --option,但不能/path/to/program使用其他参数。

Cmnd_Alias MYPROGRAM = /path/to/program --option  
artbristol ALL = (root) /path/to/program
artbristol ALL = (root) NOPASSWD: MYPROGRAM
Defaults!MYPROGRAM !requiretty
Run Code Online (Sandbox Code Playgroud)


JRF*_*son 33

像这样的东西:

myuser    ALL=(ALL)    NOPASSWD:/usr/local/bin/mycmd
Defaults:myuser        !requiretty
Run Code Online (Sandbox Code Playgroud)