如何使用PHP执行需要root权限的系统命令

前面我们说了如何使用编写一段PHP程序代码去执行Linux服务器系统的相关命令还获得一些服务器状态信息的方法,但是由于Web Server以及PHP的实现方式所限,我们在现实环境中很难利用PHP去调用一些Linux中需要root权限才能执行的程序,对此,我从网上找到另外一种方式来绕开这个限制。首先先写个c程序中转调用系统命令,然后用PHP去执行此c程序。

首先写个c文件,比如/usr/local/boear/w.c,内容如下


#include
#include
#include
#include

int main()
{
uid_t uid ,euid;

//note 获得当前的uid
uid = getuid();
//note 获得当前euid
euid = geteuid();

//note 交换这两个id
if(setreuid(euid, uid))
perror("setreuid");

//note 执行将要执行linux系统命令
system("/usr/bin/w");
return 0;
}

编译该文件gcc -o w -Wall w.c,这时会在当前目录下生成程序w。
改变此程序的属主chmod u+s ./w。

然后再编写一个PHP页面,内容如下。放在web目录下,访问就会输出当前的服务器负载情况。



按照上面的实例,我们可以用PHP来做任何我们想执行的Linux系统命令,SVN更新,服务器监控,备份,恢复,日常维护等等。

发表评论?

0 条评论。

发表评论


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>