我在尝试通过网络服务器执行命令时遇到问题。
我所拥有的以及我想要实现的目标:我使用组www-data
(不是 sudoer)运行 Apache2 Web 服务器。在网络服务器上运行的脚本应以特定用户身份执行命令(使用“passthru”的 PHP 脚本)。
我发现一种可能的方法是允许该组www-data
以 sudo 的方式执行特定命令(也不需要密码)。但我需要 root 权限才能以其他用户身份运行该命令。是否可以添加为命令别名?
最重要的是,我还需要能够将命令行参数/参数传递给命令。附带说明:其中一个参数也是一种-u
选择。
有没有(更好的)方法来实现这一目标?也就是说,因为它只有一个命令:
sudo -u myuser -c "MY_COMMAND WITH CHANGING ARGUMENTS"
我知道的另一种选择是使用su
命令。但在这种情况下,我需要“黑客”来输入密码,因为脚本应该由服务器执行,而无需用户的帮助。
答案1
我一定是忽略了这个显而易见的答案。
添加到 sudoers“源”和目标用户(应代表其执行命令的用户)并指定程序的路径。就我而言,使用组而不是用户。
www-data ALL = (mytargetuser) NOPASSWD: /path/to/my/program
这个答案中描述的解决方案:https://unix.stackexchange.com/a/13058