问题是我used ps aux | grep apache
说apache是无人运行的。
但后来我使用exec("whoami")
,它给出了不同的结果:root或gt。这取决于脚本的所有者。如果脚本归root
所有,则whoami为root
;如果归gt
所有,则whoami为gt
。
我还检查了httpd.conf,apache用户是nobody,group is nobody。
那么有人可以解释一下吗?
谢谢!
答案 0 :(得分:1)
您使用的是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作为CGI二进制文件是出于某种原因的设置选项 不希望将PHP作为模块集成到服务器软件中(如 Apache),或将使用PHP与不同种类的CGI包装器 为脚本创建安全的chroot和setuid环境。
还有SuPHP https://serverfault.com/questions/7589/how-do-you-run-a-php-script-as-the-owner