使用 NOPASSWD 时 sudo 仍要求输入密码

使用 NOPASSWD 时 sudo 仍要求输入密码

我读了 serverfault 上的所有 sudo 帖子,但我仍然不知道我做错了什么。通常我最终都会找到解决方案,但这次没有:

我希望 apache 用户能够以用户“hremotessh”的身份执行此命令:

sudo /home/hremotessh/scripts/redirect.sh 8892 8893

因此我在 visudo 中添加了以下内容:

apache ALL=(hremotessh) NOPASSWD: /home/hremotessh/scripts/redirect.sh

但是 sudo 仍然要求输入密码?

sudo /home/hremotessh/scripts/redirect.sh
[sudo] password for apache:

我尝试过这个,但没有更好:

sudo -u hremotessh /home/hremotessh/scripts/redirect.sh
hremotessh is not in the sudoers file.  This incident will be reported.

任何想法都会受到热烈欢迎:-)

丹尼斯

答案1

除非您想以 root 身份运行该命令,否则您需要指定用户名,因此

 su - apache -s /bin/bash 
 sudo -u hremotessh /home/hremotessh/scripts/redirect.sh 8892 8893

是测试 sudo 命令的正确语法。

由于您没有提示输入 apache 用户的密码,因此 sudo 似乎配置正确。

出现的警告:hremotessh is not in the sudoers file.表示sudo在 redirect.sh 脚本中使用了另一个命令。并且该用户没有 (有效的) sudo 策略。

答案2

当我尝试从脚本以 sudo 身份运行 python3 代码并且无法从脚本输入密码时,我遇到了类似的问题。解决方案是编辑 visudo,以便 python3 以 sudo 身份运行而不提示输入密码,而不是以 sudo 身份运行 python3 脚本。因此,我认为您需要以 sudo 身份运行 apache 而不提示输入密码,而不是以 sudo 身份运行 .sh 脚本而不输入密码。

相关内容