2013-02-04 66 views
1

我知道一些程序,比如kloxo以root身份運行他們的php程序,並且使用與主Apache服務器分離的lighttpd。但是當我谷歌它有一個用於防火牆管理的PHP腳本,並以root身份運行它時,有人說你不應該使用root權限運行web服務器。以root身份運行php腳本

我想知道,kloxo如何使用,沒有任何問題? 什麼是用php腳本管理iptables的最佳解決方案(如何以root權限在php exec()中運行命令)? 還有一些php功能如fopen來編輯文件。

+0

理想情況下,沒有東西應該作爲'root'運行。如果它做了它不應該做的事情,它就可以訪問所有東西,並且可能造成比鎖定時更多的損害。 –

+2

Web服務器不以root身份運行。他們以root用戶身份啓動,因此他們可以綁定端口80,然後以儘可能快的速度刪除根權限,並像其他用戶一樣運行。 –

+0

http://stackoverflow.com/questions/1598231/how-to-run-php-exec-as-root –

回答

1

如果要允許非root用戶喜歡adduser的以root身份運行的東西,你必須訪問編輯sudoers文件(使用visudo命令,,例如),你可以給用戶訪問使用sudo查看特定命令。在您的sudoers文件,你有一個這樣的條目:

​​

這將允許/usr/sbin目錄/ adduser的用戶WWW用戶 root訪問權限,而無需輸入密碼。然後,您可以只調用腳本這裏面使用您的首選方法:

$output = `/usr/bin/sudo /usr/sbin/adduser <other_arguments>`; 

我真的不會推薦這,僅僅是因爲如果有人危及您的Web服務器的用戶帳戶,他們可以在系統上創建新用戶,但如果你絕對需要需要才能擁有它,這就是你將如何做到這一點。

+0

但是如何使用'fopen'函數編輯需要root權限的文件呢?我也運行seprate lighttpd管理軟件的服務器,這意味着其他用戶無法訪問該文檔根或web服務器用戶帳戶。 –

+0

如果沒有以root身份運行腳本/解釋器,您將無法提供任何PHP功能的根訪問權限。不要那樣做。 – Crontab

+0

那麼,您如何看待kloxo或plesk?他們是怎麼做到的? –

相關問題