Php

上傳圖像的適當 linux 權限以允許刪除和重新上傳

  • August 8, 2012

我應該設置什麼權限,以及如何允許 apache 覆蓋上傳的圖像、刪除它們並重新上傳它們,以及允許將底層文件夾的權限傳遞給新上傳的文件(如果這是正確的方法)?

我的圖片直接是,例如:/images/subset1/ /images/subset2/ /images/subset3/

非常標準,圖像上傳到每個子文件夾。

要使 Apache 能夠讀取和寫入目錄,該目錄必須是:

  • 由使用者 apache 擁有,模式為 7xy(文件為 6xy);x 和 y 可能都為零;

或者

  • 由另一個使用者擁有,但組所有權與 Apache 相同,模式 x7y 或 x6y(x 通常是 2 = 文件寫入和 4 = 文件讀取的總和,因此為 6,而 1 = 目錄掃描,因此目錄為 7)

或者

  • 由不同於 Apache 的使用者、不同於 Apache 的組以及模式 xy6 或 xy7 擁有。這意味著該文件絕對可由任何人寫入,因此是個壞主意。嘗試將文件所有權更改為上述更合理的情況之一。

要更改權限,您需要擁有文件/目錄的所有權。然後您可以通過 shell(chmod 命令)或通過 FTP 更改權限。要更改所有權,您必須是超級使用者、root,並且不能通過 FTP 執行此操作,需要某種 shell 訪問權限才能執行 chown 實用程序或其某些 GUI 變體。

我認為,您最好的選擇是保留非 Apache 使用者擁有的文件和目錄,並且除了目錄的 4(讀取)+ 1(=5)之外沒有訪問權限。然後在一組有限的特殊目錄中,擁有 Apache 所有權和權限 600(文件)和 700(子目錄)。如果可能,然後將 Web 伺服器(PHP、python 等)配置為不解釋可寫區域中的文件。在那裡,Apache 將能夠編寫所有內容,但不能執行它。

這是因為讓 Apache 可寫入所有文件可能會允許某人上傳可執行程式碼,從而“命令”伺服器執行您不喜歡的事情(發送垃圾郵件、提升權限、執行埠掃描和殭屍網路……)。如果需要寫入文件的可能性,則應阻止執行這些文件。

引用自:https://serverfault.com/questions/415399