zoukankan      html  css  js  c++  java
  • ubuntu

    最近写防火墙的WEB版,需要在PHP中调用linux系统命令,但是防火墙有关的执行都需要管理员权限才能执行。

    在ubuntu下,Apache2的运行账户默认是www-data,默认是不能通过sudo来获得管理员权限的。查了一下,试了几种做法,搞定了。

    #1 为了以防万一,要查一下apache的运行账户

    <?php
    
    exec("whoami",$output,$result);
    
    print_r($output);
    
    ?>

    运行一下,得到当前账户www-data

    #2 给与www-data sudo权限,并且免密码

    命令行输入: nano /etc/sudoers  或者 visudo

    插入一行  www-data ALL=(ALL:ALL) NOPASSWD:ALL

    如下图所示

    #3 应用

    <?php
    exec("sudo iptables-save",$output,$result);
    print_r($result);
    ?>

    如上所示,即可在管理员权限下执行shell

    需要注意的是,如上的操作会给服务器带来很大的安全隐患,因为www-data用户不需密码就可以提升到管理员权限。如果Apache被坏人拿下,那么服务器也就被人轻易的拿下了~~需慎重~~

  • 相关阅读:
    人物-商界-张近东:张近东
    人物-商界-许家印:许家印
    iptables-save
    iptables-restore
    iptables
    ipcs
    ipcclean
    ipc
    ip
    install-info
  • 原文地址:https://www.cnblogs.com/kuoaidebb/p/4286730.html
Copyright © 2011-2022 走看看