您的位置:首页 > 运维架构 > Linux

php调用Linux命令启动程序(root权限)

2010-01-21 23:57 603 查看
1.

<?php

echo "调用正在进行……<br>";

$result = system('/usr/local/apache2/htdocs/asterisk/ast_start');

?>

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

2.在/usr/local/apache2/htdocs/asterisk/目录下建立文件ast_start.c

#include <stdio.h>

#include <stdlib.h>

#include <sys/types.h>

#include <unistd.h>

int main()

{

uid_t uid ,euid;

int id;

uid = getuid() ;

euid = geteuid();

//printf("my uid :%u/n",getuid()); //这里显示的是当前的uid 可以注释掉.

//printf("my euid :%u/n",geteuid()); //这里显示的是当前的euid

if(setreuid(euid, uid)) //交换这两个id

{

perror("setreuid");

}

//printf("/n/nafter setreuid uid :%u/n",getuid());

//printf("afer sertreuid euid :%u/n",geteuid());

id = system( "asterisk" );

//printf( "/nid=%d/n",id );

//id=-1:出现错误

//id=0:调用成功但是没有出现子进程

//id>0:成功退出的子进程的id

return 0;

}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

3. 保存并编译ast_start.c

#gcc -o ast_start -Wall ast_start.c

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

4. 赋权限

#chmod u+s ./ast_start

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

5. 在浏览器中预览结果

附:关掉一个进程ast_stop.c

#include <stdio.h>

#include <stdlib.h>

#include <sys/types.h>

#include <unistd.h>

int main()

{

uid_t uid ,euid;

int id;

uid = getuid() ;

euid = geteuid();

if(setreuid(euid, uid)) //交换这两个id

{

perror("setreuid");

}

id = system( "kill -9 $(pidof asterisk)" );

//pidof获得进程asterisk的ID号

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: