2010-12-07 46 views
4

經過多年的使用chmod 777解決PHP寫權限的疾苦,我想知道解決問題的正確方法。Linux可以寫入文件夾的最佳用戶/權限設置是什麼?

我在user1user1的服務器上擁有我的服務器上的網站。本網站有一個名爲uploads的文件夾。

通常要用PHP寫作才能工作,我必須將chmod這個文件夾改爲777。但我明顯認識到這是危險和不正確的,我想正確設置權限以最大限度地降低風險。

從我有限的知識,我看到兩個選項,

  1. chownuploads文件夾,以便它是由apache擁有。這樣,我就可以使用默認權限並且apache可以愉快地寫入該文件夾。
  2. 我添加一個第二組的user1apache。後來我給寫權限的所有者和組上uploads,這應該允許apacheuploads

我的問題是,什麼是最好的方法?它是上述之一還是完全不同的東西?

如果最好的解決辦法是#1,怎麼能user1也寫入了上傳SFTP作爲解決方案不會讓他們?

回答

1

在我當前的公司,我們將apache組設置爲擁有該文件夾的組,因此您只需在該文件夾上執行chmod 770即可爲該特定組授予對該文件夾執行有趣操作的權限。

但是你還是要記住,保護您的應用程序免受惡意用戶,作爲PHP腳本正在運行,如果足夠安全感,還可以做的文件夾損壞。

+0

所以你說我的第二個選擇可能是最好的?將`apache`添加到第二組`user1`並更改文件夾的權限以便所有者和組可以寫入? – 2010-12-07 16:08:18

1

如果這是你自己的服務器,最好的辦法是到該文件夾​​設置爲組Apache使用,例如與debian上的chgrp www-data(在其他系統上可能不同)。您通常必須以root用戶身份執行此操作,或者至少需要以訪問自己的和www數據組的用戶身份執行此操作。如果你的用戶可以訪問www數據組,這對你來說可能是一個很酷的功能,因爲它很容易閱讀,也許寫/移動文件。 在這種情況下,使用770作爲文件權限,並確保php創建的文件獲得此權限(在創建之前使用chmod或umask創建後顯式創建,請參閱php手冊。)

如果您正在一個共享的主機環境,我知道的唯一干淨的解決方案是mod_suexec,但我不知道許多支持它的主機。如果這不可用,我只知道你使用777的方式。通常,共享環境中的主目錄在路徑名中有一個較長的隨機字符串,以便其他人不應該找到你的目錄,因此不能訪問你的文件。但是,這不是真正的安全.. ;-)

好運 米歇爾

相關問題