我阅读了有关 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.
任何想法都会受到热烈欢迎:-)
丹尼斯
除非您想以 root 身份运行命令,否则您需要指定用户名,所以
是测试 sudo 命令的正确语法。
由于没有提示您输入 apache 用户的密码 sudo 似乎配置正确。
产生的警告:
hremotessh is not in the sudoers file.
表示sudo
在 redirect.sh 脚本中使用了另一个命令。并且该用户没有(有效的)sudo 策略。尝试从脚本运行 python3 代码作为 sudo 并且无法从脚本输入密码时,我遇到了类似的问题。解决方案是编辑 visudo 以便 python3 将作为 sudo 运行而不提示密码,而不是将 python3 脚本作为 sudo 运行。因此,我相信您需要在不提示输入密码的情况下将 apache 作为 sudo 运行,而不是在没有密码的情况下将 .sh 脚本作为 sudo 运行。