我想構建一個簡單的Web應用程序,它管理服務器上的某個目錄。我想給人們使用chown和chmod的選項。允許PHP更改文件和目錄的所有權和權限
給PHP這個權限最安全的方法是什麼?最快的事情就是以root身份運行Apache和PHP,但這似乎並不是一個聰明的主意。
我想,是創造具有setuid root的一個單獨的腳本的另一件事..
謝謝!
我想構建一個簡單的Web應用程序,它管理服務器上的某個目錄。我想給人們使用chown和chmod的選項。允許PHP更改文件和目錄的所有權和權限
給PHP這個權限最安全的方法是什麼?最快的事情就是以root身份運行Apache和PHP,但這似乎並不是一個聰明的主意。
我想,是創造具有setuid root的一個單獨的腳本的另一件事..
謝謝!
那麼,這聽起來像是一個危險的想法開始,我寧願坐下來思考什麼是試圖實現的整個策略。
當然,危險是遠程用戶可修改或上載的可執行腳本的權限升級。 Web應用中的完整chown/chmod相當於在頁面上粘貼root密碼。
什麼是需要發生的事情?
如果chown需要出於某種原因而不是根(我們希望),那麼應該封裝這個功能。我會接受用戶的請求並將它們排隊,然後有一個單獨的進程(可以是shell,php,perl,任何東西)以cron的身份運行檢查此隊列,檢查請求是否符合允許的參數並進行更改。
一種方法是在你的機器上設置sudo(假設它是一個Linux機器)。 Sudo允許您運行提升的命令,並受sudoers.conf文件中規定的限制所控制。使用嚴格的規則將其用途限制在您的Web服務正在運行的用戶的特定目錄中(如www-data),然後從您的PHP腳本調用類似tis的命令shell:
shell_exec("sudo chmod 777 dirname");
請確保您的sudo配置非常緊密,以確保突破幾乎不可能。
CHOWN需要根。 chmod需要root權限,或者作爲文件的所有者(或者可以在組中更改組權限/其他權限,但不能確定這個權限)。 – 2009-07-06 03:47:26
是的..因此,我想使用一個單獨的setuid根腳本.. – Evert 2009-07-06 20:56:30