最近部落格的WordPress更新頻頻提示出現錯誤,log就簡單地說一句inconsistent permission error,就這樣在網路上搜尋了一會兒才發現,同樣的錯誤提示很可能是有不同的underlying issue,比如可能文件與目錄的權限有被人為修改過(文件必須是644,而目錄必須是755,可以用find指令批量更改),又或者可能是owner和group不一致(chown -R
批量更改)。而發生在我的VPS的卻是第三種情況,SELinux導致某些文件無法寫入……
甄別此情況很簡單,在WordPress目錄下執行ls -Z
(注意是大寫Z)查看一下WordPress目錄和其內文件,比如被我強制用unzip解壓最新的WordPress替換過的目錄就顯示:
drwxr-xr-x. nginx nginx unconfined_u:object_r:user_home_t:s0 wordpress
我們關心的是第四列SELinux的標籤設定,這樣的權限是不夠的,在終端執行下面這條語句把WordPress目錄和其內容遞歸性地更新好便解決了問題!
chcon -R -t httpd_sys_rw_content_t wordpress
知其然還需知其所以然,繼續Google了一下,在Red Hat的文檔庫找到配置Apache HTTP Server的權限管理文章,裡面有提到httpd_sys_rw_content_t
標籤(以及其他標籤),任何有此標籤的文件都可以被有httpd_sys_script_exec_t
標籤的腳本修改,但不能被其他腳本修改。
Comments
2 responses to “修復WordPress更新出現的Inconsistent Permission錯誤”
我一直就不开 SELinux ,也一直不明白这玩意到底该怎么用。
SELinux提升安全性,主要用来防范未知风险的。