问题是我used ps aux | grep apache
说apache没有人运行。但后来我使用exec("whoami")
了,它给出了不同的结果:root 或 gt。这取决于脚本的所有者。如果脚本由 拥有root
,whoami 是root
; 如果由 拥有gt
,那么 whoami 是gt
。我还检查了httpd.conf,apache用户是nobody,组是nobody。
那么有人能解释一下这件事吗?
谢谢!
您正在使用 cgi 或 fast-cgi ,
要成为“nobody”,您需要使用 mod_php(php 作为 apache 模块)
http://php.net/manual/en/security.apache.php
当 PHP 用作 Apache 模块时,它会继承 Apache 的用户权限(通常是“nobody”用户的权限)。
http://www.php.net/manual/en/security.cgi-bin.attacks.php
对于出于某种原因不希望将 PHP 作为模块集成到服务器软件(如 Apache)或将使用 PHP 与不同类型的 CGI 包装器来创建安全的 chroot 和 setuid 环境的设置,使用 PHP 作为 CGI 二进制文件是一个选项脚本。
还有 SuPHP https://serverfault.com/questions/7589/how-do-you-run-a-php-script-as-the-owner