php 获取root 权限运用shell 关闭nginx

12 篇文章 0 订阅
2 篇文章 0 订阅

用户提出需要手动关闭网站  想了下通过php执行脚本关闭nginx完成

<?php
   $shell = "ls -l";
    echo "<pre>";
    system($shell, $status);
    echo "</pre>";
    //注意shell命令的执行结果和执行返回的状态值的对应关系
    $shell = "<font color='red'>$shell</font>";
    if( $status ){
        echo "shell命令{$shell}执行失败";
    } else {
        echo "shell命令{$shell}成功执行";
    }
?>

在网上在到改方法和脚本

#!/bin/sh
#根据进程名杀死进程

pgrep nginx

killall nginx


if [ $# -lt 1 ]
then
echo "缺少参数:procedure_name"
exit 1
fi

PROCESS=`ps -ef|grep $1|grep -v grep|grep -v PPID|awk '{ print $2}'`
for i in $PROCESS
do
echo "Kill the $1 process [ $i ]"
kill -9 $i
done

运行执行过程中,php无法执行kill。找了半天发现是没有权限。

网上用编写C程序的方法来解决此问题,创建一个c的文件 ,然后编译

cat > wrapper.c <<CONTENT  int
  main (int argc, char *argv[])
  {
      setuid (0);
      /* WARNING: Only use an absolute path to the script to execute,
       *          a malicious user might fool the binary and execute
       *          arbitary commands if not.
       * */
      system ("/bin/sh /usr/local/nginx/html/nginx.sh");
      return 0;
  }
CONTENT

赋权编译

chmod -R 777 wrapper.c 
gcc wrapper.c -o php_root
chmod -R 777 php_root 
chmod u=rwx,go=xr,+s php_root

修改执行PHP,完成关闭

<?php
    $shell = "/usr/local/nginx/html/php_root";
    system($shell, $status);
?>

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值