linux – 允许Apache以不同的用户身份运行命令

前端之家收集整理的这篇文章主要介绍了linux – 允许Apache以不同的用户身份运行命令前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个脚本在用户的主目录中执行几个命令.这些文件用户所有,而Apache(www-data组)只对它们具有读权限.脚本需要由 PHP通过exec()按需执行,并执行一些文件删除/解除,因为Apache没有对目录的写权限而失败.

我试过像这样编辑sudoers文件

www-data ALL=(user) NOPASSWD: /bin/su user -c /home/user/bin/script.sh

但它会提示我输入用户的密码

我也试过了

www-data ALL=(root) NOPASSWD: /usr/bin/sudo su user -c /home/user/bin/script.sh

但是这会提示输入www-data的sudo密码

如何在没有密码的情况下使用它?

解决方法

最后让它使用这一行:
www-data ALL=(ALL) NOPASSWD: /usr/bin/sudo -u user /home/user/bin/script.sh

由于我需要对脚本进行参数,因此我必须在行尾添加“shell样式通配符”:

www-data ALL=(ALL) NOPASSWD: /usr/bin/sudo -u user /home/user/bin/script.sh [[\:alpha\:]]*

这不是我想要的,但它确实有效(即,我的参数以字母字符开头,但实际上我希望表达式只匹配字母数字字符,破折号和句点).

我对shell通配符和POSIX字符类并不熟悉,我使用的基本上是从sudoers手册中复制粘贴的.任何知道如何应用于此类问题的人,请留下您的意见!

猜你在找的Linux相关文章