找出屬於個別帳號檔案並 chown

今天將一台 CentOS 6 伺服器內所有網站,輚移到另一台 CentOS 7,轉移過程連同檔案權限, owner 及 group 都一同複製,測試後發現多數網站都運作正常,唯獨有用 PHP 建立的檔案及目錄便有寫入失則的問題。

查看了檔案的權限是正確的,但用 “ls -l” 查看那些出問題的檔案及目錄,看到 owner 不是顯示 “apache”, 而是顯示 “80”, 原來 CentOS 6 時 Apache 帳號的 uid 是 80, 在 CentOS 7 用 YUM 安裝的 Apache 所使用的 “apache” 帳號,uid 是 48, 所以便會有寫入失敗的情況,解法方法是將所有原本 owner 是 uid 80 的檔案改為 owner 是 apahce, 指令是:

# find /var/www/ -uid 80 -exec chown apache.apache {} \;

以上指令會在 /var/www/ 目錄下,找出所有檔案/目錄的 uid 是的 80, 並改變 owner 及 group 為 apache。執行以上指令後原來有問題的地方便可以運作正常了。

而另一個情況是想屬於指定帳號的檔案及目錄,改變 owner 為另一個帳號,只要將上面的 -uid 改為 -user, 便可以直接用帳號名稱搜索,可以將指令改成這樣:

# find /var/www/ -user old-user -exec chown new-user:new-group {} \;



Leave a Reply