V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
demos
V2EX  ›  PHP

PHP shell_exec 调用不了 iptables

  •  
  •   demos · 2019-04-20 16:57:37 +08:00 · 4045 次点击
    这是一个创建于 1804 天前的主题,其中的信息可能已经有所发展或是发生改变。
    <?php
    echo shell_exec("iptables -nvL");
    echo 1234;
    ?>

    RT 这个简单的代码,但是没有输出,把 iptables -nvL 换成 ls 等其它命令就可以。
    其大佬指教一下,谢谢
    11 条回复    2019-04-20 20:24:43 +08:00
    gam2046
        1
    gam2046  
       2019-04-20 17:02:54 +08:00
    开局一把唆,问题全靠猜。

    我猜是权限问题。
    zhs227
        2
    zhs227  
       2019-04-20 17:21:44 +08:00
    估计是权限问题。一般如果是网页方式运行,如 fastcgi 或 fpm 或 apache mod,都是 www 用户,这一用户是没有权限执行 iptables 的。用 shell 方式执行可破。比如 sudo /usr/local/php/bin/php test.php
    demos
        3
    demos  
    OP
       2019-04-20 17:23:41 +08:00
    @gam2046 谢谢,搜索了下很有可能是权限问题
    demos
        4
    demos  
    OP
       2019-04-20 17:24:45 +08:00
    @zhs227 感谢,环境是 centos、nginx、php-fpm,正在搜索解决方案
    moult
        5
    moult  
       2019-04-20 17:27:20 +08:00 via iPhone
    这个函数没有返回退出马的,你需要换一个函数获取退出马就知道原因了。
    defunct9
        6
    defunct9  
       2019-04-20 17:29:47 +08:00 via iPhone   ❤️ 1
    开 ssh,让我上去看看
    jamblues
        7
    jamblues  
       2019-04-20 17:41:00 +08:00 via iPhone
    /sbin/iptables
    demos
        8
    demos  
    OP
       2019-04-20 17:51:33 +08:00
    确实是权限问题,已解决,感谢楼上各位大佬
    chotow
        9
    chotow  
       2019-04-20 19:17:24 +08:00   ❤️ 5
    @demos #8 每次看到这种楼主最后说已解决的帖子,我都很想知道楼主到底怎么解决的,为什么不能顺手贴一下方案 🌚 ……
    yikuo
        10
    yikuo  
       2019-04-20 20:22:52 +08:00 via Android
    @chotow 确实,特别是自己碰到了,但找不到解决方法的时候
    wd
        11
    wd  
       2019-04-20 20:24:43 +08:00 via iPhone
    @chotow #9 解决方法无非是把 web 用 root 跑 或者想办法让 命令可以用 www 用户跑,都有安全隐患
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5132 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 47ms · UTC 05:41 · PVG 13:41 · LAX 22:41 · JFK 01:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.