要展開我以前的評論:您的服務器正在運行用戶www-data
和組www-data
。我們知道這一點,因爲當文件被創建時,它屬於該用戶和組。
按理說,在Unix的,這意味着,如果該目錄是由含有www-data
一組擁有,並且該目錄是組可寫的,則該目錄可以由組www-data
的任何用戶寫入。
現在,我們更改權限從
775 www-data foogroup
到
775 www-data www-data
我們可能有兩種情況:它工作,或者沒有。
如果它不起作用,那麼我們清楚地證明它不是重要的組 - 它必須是用戶。因此,對於我們的意圖和目的,因此必須是不同的,其來自www-data
和foogroup
。
如果成功,它可能意味着,只要屬於該組是不夠的 - 這似乎是實際執行的檢查組更多的精確匹配。
我懷疑的是,你的設置與我的不同(我相信,在Apache下有mod_php5
),你的設置與我的不同(你的Ubuntu 14.04-LTS版本),並且你有一些「安全功能」個案從本質上取代了Unix文件系統權限檢查,並對其自身進行了更嚴格的檢查。 Then如果測試通過,則像往常一樣執行操作,如用戶www-data
。
所以,你可以運行其他測試,都與當前的非工作許可和工作777級權限,執行
shell_exec("touch images/test.jpg 2>&1");
輸出威力產量一些有用的信息。例如,我們可能會發現shell實際上是由另一個用戶運行的(775不工作,777不工作,但現在該文件由其他用戶擁有),或者PHP無法創建的文件是從調用的shell創建的通過相同的PHP(這將最終證明在PHP中有效的剋制)。
其他有用的信息:您正在運行FastCGI,CGI,Apache模塊,nginx,其他...?
暫時將權限保持爲777,並創建一個文件。它創建了什麼所有者和組?嘗試使用www-data而不是foogroup和775的權限。這是否會改變任何內容? – LSerni
如果我將該組更改爲「www-data」,這意味着所有其他具有與「foogroup」相似的組的用戶都可以訪問這些文件。圖像權限'-rw-r - r-- 1 www-data www-data 130818 5月19日19:43 573e095cf2741.jpg' – maxisme
我正在嘗試14.04LTS,無法重現此操作。你使用的是什麼平臺和版本? – LSerni