我正在使用Zend_Form_Element_File()寫一個文件上傳。我在public
目錄中創建了一個名爲users
的目錄。當我加載文件時,我收到一個錯誤,說沒有找到頁面。我檢查目錄,看到權限是drwxr-xr-x
。所以我將權限更改爲drwxrw-rw-
並再次加載頁面。頁面正確加載。但是當我上傳一個文件時,它會再次產生一個錯誤。所以我最終將權限更改爲drwxrwxrwx
,並且所有內容都正常運行。 我的問題是,我在做別人正在做的平常做法嗎?我發現讓一個目錄可執行是很奇怪的。 有人可以解釋我是否正確嗎?我只是學習Zend框架。我的目錄是否可執行?
回答
目錄必須如果一個程序應該能夠「輸入」它是可執行的。進入一個目錄基本上意味着訪問該目錄下的任何文件/目錄。
通過「讀取」訪問文件夾,您可以列出其內容 - 「寫入」訪問的功能非常明顯。
但是,出於安全原因,您應該檢查drwxrwx---
(770
)是否不夠;通常你的用戶和網絡服務器共享一個共同的組。如果是這樣的話,就沒有必要給予任何「世界」的訪問權限。
將您的腳本作爲您的同一用戶運行會更好 - 通過使用不會太難的fastcgi,但是如果您在共享主機上,則通常沒有必要的訪問權限來執行此操作。
通常,當您在目錄上設置權限時,它會在大多數情況下將其級聯到通過擴展ACLS內的文件。我立即看到的問題是,你已經授予世界訪問權,這是一個壞主意。唯一需要對目錄權限(最多700)的用戶將成爲您的Web服務器。所以我會把安全性恢復到700。
在大多數系統上,web服務器用戶不同於shell/ftp用戶。在這種情況下,該文件夾需要'770'甚至'777'才能通過php腳本進行寫入,除非它是由web服務器本身創建的(這會使其只讀到您的ftp/shell) – ThiefMaster 2012-02-27 15:49:13
僅在閱讀時才存在問題訪問ftp/shell? – Woot4Moo 2012-02-27 15:50:57
如果您想刪除某些內容:是的。除此之外,要在第一個位置創建文件夾,您需要授予父文件夾的組/世界寫入權限,然後在從您的PHP腳本創建文件夾後撤消它。不難,但仍然是一團糟。 – ThiefMaster 2012-02-27 15:54:32
- 1. 在整個目錄上執行操作時是否可以跳過子目錄?
- 2. C#可執行文件執行目錄
- 3. bash命令檢查目錄是否可執行
- 4. File.Exists()是否總是在與可執行文件相同的目錄中搜索?
- 5. 是否可以從Jenkins或TFS執行Maven項目?是否有可能無法訪問M2回購目錄?
- 6. 查找目錄是否是最新的執行
- 7. 檢測我的應用程序是否正在從用戶目錄執行
- 8. 幫助使我的根目錄不可執行CGI腳本
- 9. Android可繪製目錄是否可以包含子目錄?
- 10. Python:是否可以逐行執行
- 11. 是否可以搜索目錄內的特定目錄?
- 12. XNA Project內容目錄中的子目錄是否有可能?
- 13. 是否可以在TFS中執行「破壞歷史記錄」?
- 14. 執行時是否可以記錄單個mod-rewrite規則?
- 15. 我的項目總是執行關閉
- 16. 試圖運行可執行文件 - 文件或目錄不存在,但存在文件。我可以執行它,但只能從目錄內執行它,如
- 17. 確定目錄是否可寫
- 18. 檢查目錄是否可讀
- 19. Bash文件或目錄是否可讀?
- 20. 是否可以移動App_Data目錄?
- 21. 測試目錄是否可瀏覽
- 22. 是否有可能在用戶目錄下運行腳本到目錄
- 23. 是否可以通過cli執行ttcn?
- 24. 是否可以執行差異鏈接?
- 25. 是否可以同時執行sendto()recvfrom()?
- 26. 是否可以從UIView XIB執行Segue?
- 27. 是否可以從applet執行命令?
- 28. 是否可以使用SuiteTalk執行SuiteScript?
- 29. 是否可以遠程執行SSIS包?
- 30. 是否可以用cscript執行stdout?
實際上,不可執行目錄允許「瀏覽」目錄並列出其內容。一個目錄只需要可讀就可以遍歷它並訪問你知道完整路徑/文件名的子目錄/文件。 – 2012-02-27 15:48:28
我認爲webserver是一個無法登錄並將權限降低到700或更低的帳戶。如果你與網絡服務器:網絡服務器,它會沒事(根據我的經驗) – Woot4Moo 2012-02-27 15:49:29
@MarcB:這是錯誤的。這裏是證明:https://paste.aeum.net/show/47/ - 雖然這裏面沒有訪問文件,但訪問'.'和'..'與訪問文件沒有區別。 – ThiefMaster 2012-02-27 15:51:18