加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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手册中复制粘贴的.任何知道如何应用于此类问题的人,请留下您的意见!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读