概述:
- 主要是借助于C语言程序作为中间层,进行调用root命令。
1. 在PHP代码的任意一个地方调用exec函数
public function handle()
{
// c语言编译后的目录地址
exec('/opt/bin/php-root');
}
2. C语言代码
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
setuid(0);
system("/bin/bash /opt/bin/restart-service");
return 0;
}
3. restart-service脚本文件
# restart-service脚本的名称
# 在这个脚本文件中可以放入PHP需要执行的任意root命令
# 增加这个脚本文件的意义在于,不用每次新增一个root命令就需要重新编译c语言,方便修改
4. 编译C语言代码
gcc -o php-root php-root.c
5. 给编译后的php-root程序授权
sudo chmod u=rwx,go=xr,+s php-root
6. 编写需要执行的root命令在restart-service中
#!/bin/bash
# 需要重启或需要执行root的命令
systemctl restart php7.0-fpm.service