sudoers NOPASSWD:sudo:没有tty礼物,也没有askpass计划

我已经添加了这样的用户

$ adduser --system --home /no/home --no-create-home --group --disabled-password --disabled-login testuser 

将用户添加到组中:

 $ adduser testuser testgroup 

添加到sudoers(visudo)的行数:

 testuser ALL=(ALL) NOPASSWD: ALL %testgroup ALL=(ALL:ALL) NOPASSWD: ALL 

当我尝试运行带有以下内容的bash脚本时:

 #!/bin/sh sudo -u testuser /usr/bin/php /usr/local/bin/script.php 

但是当我运行这个脚本时,我得到了日志中的错误:

 sudo: no tty present and no askpass program specified 

编辑: requiretty不在sudoers文件中。

sudo权限是关于您正在更改的用户/组而不是您要更改的用户。

那么这些权限行是否允许testuser用户和测试组组运行没有密码的任何命令(任何人)。

您需要授权运行脚本的用户以testuser用户身份运行命令获取所需内容。

假设这就是你的意思是允许的。

当你的sudoers文件指定requiretty时,会发生这个错误。 从sudoers manpage:

  requiretty If set, sudo will only run when the user is logged in to a real tty. When this flag is set, sudo can only be run from a login session and not via other means such as cron(8) or cgi-bin scripts. This flag is off by default. 

要解决您的错误, requiretty从sudoers文件中删除requiretty