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

php 执行 shell 命令,权限不足,怎么办。

  •  
  •   just1 · 2015-08-05 18:31:58 +08:00 via Android · 7029 次点击
    这是一个创建于 3188 天前的主题,其中的信息可能已经有所发展或是发生改变。
    命令行内可以执行,因此判断为权限问题。新手,勿喷。感谢。
    19 条回复    2015-08-09 11:49:41 +08:00
    imlewc
        1
    imlewc  
       2015-08-05 18:40:53 +08:00
    sudo 啊
    learnshare
        2
    learnshare  
       2015-08-05 18:42:56 +08:00
    给 PHP 文件足够的权限
    582033
        3
    582033  
       2015-08-05 18:43:16 +08:00 via Android
    fastcgi权限
    x86
        4
    x86  
       2015-08-05 18:43:42 +08:00
    没权限给呀
    582033
        5
    582033  
       2015-08-05 18:44:21 +08:00 via Android
    楼主说的是php中执行shell,不是shell里执行php脚本
    ss098
        6
    ss098  
       2015-08-05 18:49:42 +08:00 via iPad
    你需要给 Web 服务器的用户执行系统命令的权限,如果是 nginx 的话用户通常是 nginx。
    realpg
        7
    realpg  
       2015-08-05 19:29:20 +08:00
    你确认你们PM和leader都允许你这么搞么……给webserver用户系统的其他权限?
    just1
        8
    just1  
    OP
       2015-08-05 19:44:53 +08:00 via Android
    @realpg 那么该怎么操作呢。。如果不赋予权限。似乎没办法。
    caola
        9
    caola  
       2015-08-05 19:45:10 +08:00
    如果对安全要求不高,可以用 root 来运行 web 服务器和php
    oott123
        10
    oott123  
       2015-08-05 19:46:35 +08:00 via iPhone   ❤️ 1
    Apache & mod-php 检查 user / group 这两个配置
    nginx & php-fpm 检查 fpm 的 user 配置
    不管什么环境检查 php.ini 的 disable-functions
    还有提问请至少贴出环境和日志,谢谢
    just1
        11
    just1  
    OP
       2015-08-05 19:49:10 +08:00 via Android
    算了,我直接用root来运行服务器吧T_T懒得弄了
    codercai
        12
    codercai  
       2015-08-05 19:54:27 +08:00
    @just1 好粗暴啊
    DennyDai
        13
    DennyDai  
       2015-08-06 07:52:26 +08:00 via Android
    关安全模式,php.ini解禁函数
    just1
        14
    just1  
    OP
       2015-08-06 12:27:22 +08:00 via Android
    @DennyDai 我的是php5.6,已废除安全模式。函数已解禁,在命令行下可以执行,因此判断是权限不足。但是新的问题来了,,为什么把www用户改成root权限后,访问我的这个页面,502错误。
    <?php
    passthru('service tor restart');
    passthru('python ./1.py');
    ?>
    nginx
    DennyDai
        15
    DennyDai  
       2015-08-06 16:00:53 +08:00
    @just1 777?
    just1
        16
    just1  
    OP
       2015-08-06 18:30:42 +08:00 via Android
    最新状态:
    <?php
    echo shell_exec('sudo service tor restart');
    echo shell_exec('python ./1.py');
    ?>
    py脚本正常执行,上面的一句服务重启怎么都执行不了。已经将www的sudo设置为无密码。该怎么办?
    just1
        17
    just1  
    OP
       2015-08-06 18:42:44 +08:00 via Android
    我还丧心病狂地把www改成了可登录,亲自到命令行下测试命令可用性。sudo service tor restart 的确可以直接执行,不需要输入密码。
    just1
        18
    just1  
    OP
       2015-08-08 23:18:56 +08:00 via Android
    发现了问题所在,linux默认需要一个终端(tty)才能执行sudo。
    解决办法:visudo
    找到Defaults requiretty,注释掉即可
    huigeer
        19
    huigeer  
       2015-08-09 11:49:41 +08:00
    @jsut1, 最好是单独配一个可以执行shell的php环境, 隔离和web交互的php
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2723 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 11:27 · PVG 19:27 · LAX 04:27 · JFK 07:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.