PHP使用root权限调用shell

PHP调用shell时,有些时候会遇到权限问题,通过查看Apache日志可以发现如下的内容

rm: instrumentscli0.trace/form.template: Permission denied

原因是shell在执行这些语句时可能需要root权限,可以在脚本中的具体语句加上sudo ,比如 sudo rm xxx;当然最好是不要修改shell脚本,而是在php调用shell时,加上sudo ./xxx.sh


加上sudo后再次执行,发现第二个问题

sudo: no tty present and no askpass program specified

原因是执行sudo时需要一个终端来输入密码,解决方法是赋予Apache的执行用户root权限。

方法:修改visudo文件

命令如下

sudo visudo

在visudo文件中为Apache的执行用户分配权限,新增下面这一行

_www   ALL=(ALL) NOPASSWD: ALL

赋予_www用户所有权限,并且不需要输入密码,这其中,第一项是Apache执行用户的名称,不同的版本可能不一样,有的是nobody,有的是daemon, 有的是_www

可以通过查看Apache目录下的httpd.conf获悉具体用户,该文件有如下一段配置项

# If you wish httpd to run as a different user or group, you must run

# httpd as root initially and it will switch.  

#

# User/Group: The name (or #number) of the user/group to run httpd as.

# It is usually good practice to create a dedicated user and group for

# running httpd, as with most system services.

#

User _www

Group _www

这里就是执行用户,出于安全考虑,最好把默认的用户名修改为自定义的用户,当然也可以不修改。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值