我已经添加了这样的用户:
$ 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
。