linux – 允许Apache以不同的用户身份运行命令
发布时间:2020-12-13 17:18:37 所属栏目:Linux 来源:网络整理
导读:我有一个脚本在用户的主目录中执行几个命令.这些文件归用户所有,而Apache(www-data组)只对它们具有读权限.脚本需要由 PHP通过exec()按需执行,并执行一些文件的删除/解除,因为Apache没有对目录的写权限而失败. 我试过像这样编辑sudoers文件: www-data ALL=(u
我有一个脚本在用户的主目录中执行几个命令.这些文件归用户所有,而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手册中复制粘贴的.任何知道如何应用于此类问题的人,请留下您的意见! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |