快捷搜索:   服务器  PHP  安全  IIS  linux 安全

设置让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)

您可能还会对下面的文章感兴趣:

最新评论