2012-09-19 54 views
1

問題是我說其中說apache是​​沒有人運行的。 但後來我用exec("whoami"),它給出了一個不同的結果:root或gt。這取決於腳本的所有者。如果劇本由root擁有,whoami是root;如果擁有gt,那麼whoami是gt。 我也檢查了httpd.conf,apache用戶是沒有人,組是沒人。Apache作爲nobody運行,但whoami顯示「root」或我的用戶名

所以有人可以解釋這件事嗎?

謝謝!

+0

這可能是由於「真實」和「有效」用戶ID之間的差異。比較['posix_geteuid()'](http://php.net/manual/en/function.posix-geteuid.php)和['posix_getuid()']的返回值的差異(http:// php達網絡/手動/ EN/function.posix-getuid.php)。 有關「真實」和「有效」用戶ID的解釋可以在以下網址找到:http://www.lst.de/~okir/blackhats/node23.html –

+0

謝謝,這很有趣 – Vincent

回答

1

您使用的是CGI或快速CGI,

是 「沒有人」,你需要使用mod_php的(PHP作爲Apache模塊)

​​

當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

+0

是的,我使用的是cgi 。感謝您的鏈接! – Vincent

相關問題