是的,它可以通過php來做到這一點。通常的Linux權限規則適用,但是,如果你正在尋找不屬於apache用戶的chmod腳本(nobody),並且apache用戶沒有寫權限,那麼一種方法是授予apache許可使用sudo
被警告 - 這可能是一個巨大的安全漏洞!
您可以通過編輯sudoers文件給apache許可使用sudo。建議您不要直接編輯這個文件作爲錯誤可以讓你我(的Ubuntu)系統上完全擰所以我鍵入
sudo visudo
然後你需要添加一行爲貴「無人」的用戶。您可以將sudo權限限制爲特定的腳本或文件夾,因此我建議您編寫一個shell腳本來更改權限,然後將其放置在遠離任何其他腳本的文件夾中。這樣apache在你的系統上沒有完全的root權限(這是一個非常可怕的想法)。您還可以在shell腳本中放置一些代碼來限制哪些文件可以更改。
您還需要允許apache在沒有密碼的情況下sudo,因爲您無法通過php輸入密碼。所以,你想補充的線是一樣的東西
nobody ALL=(ALL)NOPASSWD:/path/to/my/script
然後在PHP你只是使用sudo前綴命令
passthru ("sudo /path/to/my/script ...");
(還有你可以用它代替中繼()一些其他的功能,是隻是浮現在腦海)
正如我之前所說的第一,這是潛在的非常危險的,雖然上面會的工作,我只用我自己的私有系統之前,從來沒有一個公共產品服務器上。我相信很多人會對這個方法的安全性發表評論,所以我很想知道這種方法可能存在哪些潛在的缺陷和安全漏洞。我知道使用SuExec也可以做類似的事情,但我不太瞭解它,所以如果有人對SuExec有任何優點或缺點,我會很樂意聽到他們的意見。
最後說明一點:我的apache用戶從任何人更改爲類似「阿帕奇」或「WWW」 - 可能只是不懂事,但我不喜歡給root權限的用戶稱爲人的想法!
希望這有助於!
有解決方案,但這不好讓php管理系統權限。你需要做什麼這樣的事情? – Benoit 2010-03-10 13:55:30
我需要動態地使用PHP創建一個目錄。 – 2010-03-10 17:48:15