设置让php能够以root权限来执行exec() 或者 shell_exec()等调用命令
php有时候会需要用到在服务器端使用exec()等函数来执行一些命令,但是有些命令是需要root权限来执行,默认php是不具备root权限的。因此需要赋权操作。
首先:查看启动php的进程的用户名
进入SSH执行:
ps -ef | grep php
或者在php中执行
echo exec('whoami')centos下默认是nobody。 nobody默认没有任何权限。如果有安装了apache一类的程序,那权限会继承,这里可以看到如www这样的用户名,那你可以直接跳到第三步,将这里的用户名加入权限
此时先自己添加一个用户和组。
/usr/sbin/groupadd xxxx/usr/sbin/useradd -g xxxx -s /bin/bash xxxx
加完用户后
vi /etc/passwd
里面就可以看到你添加的用户了。
二、修改php启动用户为您刚添加的用户
找到你php安装位置的php-fpm.conf 。打开配置文件、编辑里面的 user = xxxx; group = xxxx; (xxxx为您刚才添加的用户)
重启php-fpm(service php-fpm restart)
重复上面查看php启动进程的用户、应该已经改变了。
三、添加刚才的用户xxxx到sudoers里面
vi sudo
//修改/etc/sudoers的内容
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
xxxx ALL=(ALL) ALL //新添加这一行%xxxx ALL=(ALL) NOPASSWD: ALL //设置xxxx组下面的用户使用sudo不需要输入密码
四、到这里已经可以正常在exec中使用高权限系统命令了
如sudo your command等
当然这样服务器就有很大风险,不建议直接在生产环境使用。
顶(0)
踩(0)
- 最新评论
