2010-06-10 48 views
3

我開發了一個小型的網絡應用程序。移到生產環境時,Web應用程序失敗。我需要哪些服務器權限?

這個程序允許用戶上傳圖片。 它還生成這些圖像的名稱的文本文件(名稱存儲和檢索到/從MySQL數據庫。)

我已經開發這個應用程序使用MAMP。要創建我使用PHP函數

imagejpeg('my/path/name.jpg') 

,並刪除我使用PHP函數

unlink('folder1/folder2/name.jpg') 

寫入文本文件我使用的功能

fopen('folder1/folder2/name.txt', 'w') 
文件上傳的圖片文件

所有這三個函數都會產生與權限相關的錯誤 - 現在該站點已移至實時宿主環境。

這是爲什麼?以及我需要什麼權限才能將文件夾的folder1folder2設置爲?

我知道權限777通常是不好的,因爲它打開了你的服務器給公衆。然而我發現的是,功能無法工作除非我在文件夾上使用777。任何人都可以闡明我的困境嗎?

回答

1

不要盲目設置文件夾的權限爲777,使讀,寫,執行位系統上的所有用戶。

您應始終授予您的應用程序所需的least amount of privileges作爲一般安全防範措施運行。

我不知道很多關於從上面你的問題你的應用程序的需求,但似乎罪魁禍首目錄只需要讀/寫/爲您和Web服務器運行的用戶執行權限。您可以簡單地將它們授予Web用戶,然後使用sudo自行訪問它們。

閱讀 - 所以你可以得到一個目錄列表。
寫 - 創建新的或刪除目錄中的現有文件或重命名文件。 (如:取消鏈接()函數的用法)
執行 - 這樣你就可以變成和訪問該目錄。

在你的情況,下面應該很好地工作:

chown -R www-data: folder1/
chmod 700 folder1/ folder1/folder2/

這是假設你的Web服務器運行作爲用戶WWW的數據。如果您想要通過FTP或bash shell訪問目錄及其各自的文件而不使用sudo,則需要創建一個諸如wwwusers的組,並添加需要訪問該組中的那些目錄的所有人。然後這樣做:

chown -R www-data:wwwusers folder1/
chmod 770 folder1/ folder1/folder2/

順便說一句,我的反應是天真的在我假設你在服務器上有根,並且沒有像POSIX的ACL啓用東西或某事如grsecurity。使用ACL時,您需要執行諸如setfacl -mu:www-data:rwx /path/to/dir之類的操作。在這種情況下,您很可能需要向您的託管服務提供商尋求幫助。

你真的應該理解權限是如何工作在Unix或類Unix文件系統上的目錄和文件的基本原理。確保你運行man chmodman chown。您還可以在這裏瞭解更多UNIX permissionshere

+0

謝謝史蒂夫。我會用你給我的東西做一些研究。 – Ash 2010-06-10 15:08:25

+0

你如何找出你的網絡服務器運行的用戶名? – Ash 2010-06-10 15:10:49

+0

您將需要使用ps命令獲取有關進程的信息。試試ps aux | grep -i apache | awk'{print $ 1}'。輸入'man ps'以瞭解有關ps命令的更多信息,以及如何獲取有關係統上正在運行的進程的所有類型的不同信息。 – randombits 2010-06-10 15:19:20

0

而不僅僅是更改權限,你看看文件夾的所有權? Web服務器爲不同的用戶的用戶開發和部署腳本和文件夾運行。一個簡單的修復可能會將文件夾所有者更改爲Web服務器用戶。

+0

你能擴展你的答案嗎? – Ash 2010-06-10 14:49:04

+0

如何更改文件夾所有者?我會改變它到什麼? – Ash 2010-06-10 14:57:53

+0

假設你在Linux/Unix操作系統上,看看chown。 http://www.computerhope.com/unix/uchown.htm – gurun8 2010-06-10 15:57:01

1

還有就是我覺得優雅的解決方案,但也許只有我一個:) 更改目錄到www數據的羣主,並設置權限,775

chown -R :www-data folder1 
chmod -R 775 folder1 
+0

您可以更真實地限制這些權限。除了網絡用戶以外,沒有任何其他人有理由爲不是文件所有者或文件組的一部分的用戶啓用讀取和執行位。 – randombits 2010-06-10 14:58:48

+0

這位主人是誰?我如何訪問此信息?我的問題是,我對終端相當陌生,寧願通過GUI來完成。 – Ash 2010-06-10 15:00:12

相關問題