我读了 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 脚本而不输入密码。