2026年11月12日
2026年11月12日
WordPress 檔案權限建議值|目錄 755、檔案 644、wp-config.php 設定與擁有者確認
本文是日文原文的在地化版本。 閱讀日文原文
WordPress 的檔案權限,基本上是目錄設為 755、檔案設為 644。包含資料庫連線資訊的 wp-config.php,則要進一步縮小可讀取的對象。不要只看數字,一併確認檔案的擁有者是誰、PHP 以哪個使用者執行,就能同時避免資訊外洩與「無法更新」這兩種問題。本文的建議值,是 2026 年 11 月時對照 WordPress 官方「加強 WordPress 的安全性(Hardening WordPress)」所確認的內容。
權限數字的讀法
權限分為「擁有者・群組・其他人」3 組,以讀取(4)・寫入(2)・執行(1)的總和表示。
| 值 | 表示法 | 意義 |
|---|---|---|
| 755 | rwxr-xr-x | 擁有者可以讀寫並進入目錄,其他人只能讀取與進入目錄(適用於目錄) |
| 644 | rw-r--r-- | 擁有者可以讀寫,其他人只能讀取(適用於檔案) |
| 640 | rw-r----- | 擁有者可以讀寫,群組可以讀取,其他人什麼都不能做 |
| 600 | rw------- | 只有擁有者可以讀寫 |
| 440 / 400 | r--r----- / r-------- | 任何人都不能寫入,只有擁有者(與群組)可以讀取 |
目錄的「執行(x)」是進入該目錄的權限。如果拿掉目錄的 x,裡面的檔案就讀不到了。
WordPress 的建議值
| 對象 | 建議值 | 補充 |
|---|---|---|
| 目錄 | 755(共用環境中不想讓他人看到時為 750) | 官方的自動更新也會把目錄統一成 755 |
| 檔案 | 644(同上的情況為 640) | 官方的自動更新也會把檔案統一成 644 |
| wp-config.php | 縮小到只有自己與網頁伺服器可以讀取 | 官方的說明是「一般為 400 或 440」。如果環境中 PHP 是以與檔案擁有者相同的使用者執行,用 600 或 400 也能運作 |
| .htaccess | 644 | 如果要讓 WordPress 在儲存永久連結設定時改寫它,PHP 的執行使用者必須能夠寫入 |
| wp-content/uploads | 目錄 755・檔案 644 | 擁有者請設為 PHP 執行使用者可以寫入的對象 |
不需要設成 777(任何人都能寫入)。在共用伺服器上,有可能被同一台伺服器上的其他使用者改寫。
日本的部分租用伺服器業者會自行訂定建議值(因為各家伺服器執行 PHP 的方式不同)。如果你所租用的伺服器手冊中有寫明數值,請以手冊為優先。
擁有者的觀念
官方的說明是,檔案由自己的使用者帳號擁有,並讓自己可以寫入。只有 WordPress 需要寫入的檔案(uploads,以及使用佈景主題編輯器時的佈景主題等),才需要調整擁有者或群組,讓網頁伺服器(PHP)的執行使用者可以寫入。
如果像 chown -R www-data:www-data 這樣把整體都變成網頁伺服器使用者的所有物,PHP 就能改寫所有檔案。一旦外掛的漏洞被利用,災情很容易擴大,所以請先確認現況再決定。
更新外掛或核心時被要求輸入「連線資訊(FTP 的主機名稱、使用者名稱、密碼)」,多半就是這個擁有者不一致所造成。WordPress 只有在 PHP 建立的檔案擁有者與 WordPress 檔案的擁有者相同時,才會選擇直接改寫檔案的方式。不同的話,就會要求透過 FTP 更新。這時不要把權限放寬到 777,而是要把擁有者調整一致。
確認目前的設定
以 SSH 進入 WordPress 的目錄,用下列指令確認數值與擁有者。路徑請依自己的環境調整。
cd /var/www/html
# wp-config.php 的值・擁有者・群組
stat -c '%a %U:%G %n' wp-config.php
# 找出其他使用者可以寫入的檔案與目錄
find . -perm -o=w ! -type l
# 找出 uploads 之中的 PHP 檔案(通常不存在)
find wp-content/uploads -type f -name '*.php'
從網頁存取時 PHP 的執行使用者,請從伺服器設定(PHP-FPM 集區的 user 等)或虛擬主機的手冊確認。不一定與透過 SSH 登入的使用者相同。
如果 uploads 之中有不認得的 PHP 檔案,請懷疑被竄改,並在刪除之前先記錄檔案的日期時間與內容。
批次修正權限
在 WordPress 的目錄中執行。執行之前請先備份。
cd /var/www/html
# 將目錄統一為 755、檔案統一為 644
find . -type d -exec chmod 755 {} +
find . -type f -exec chmod 644 {} +
# 縮小 wp-config.php 的權限(PHP 以檔案擁有者身分執行的環境範例)
chmod 600 wp-config.php
wp-config.php 的值,請依環境如下選擇。
- PHP 以與檔案擁有者相同的使用者執行(多數共用虛擬主機、每個使用者各自的 PHP-FPM):600 或 400
- 擁有者是自己的帳號,網頁伺服器以群組身分讀取:設為 640 或 440,並把群組設為網頁伺服器的群組
# 範例: 擁有者是自己,群組設為網頁伺服器(www-data),權限為 640
sudo chgrp www-data wp-config.php
chmod 640 wp-config.php
設定之後,請開啟網站與後台,確認可以正常顯示與登入。如果出現空白畫面或錯誤,代表 PHP 讀不到 wp-config.php。請先把值改回 644,再重新檢視擁有者與群組。
設為 400 或 440 之後,會寫入 wp-config.php 的外掛(例如寫入快取設定的外掛)會失敗。只有在設定這類外掛時,才暫時允許寫入。
避免 wp-config.php 被從網頁讀取
只要 PHP 正常運作,即使用瀏覽器存取 wp-config.php,也不會顯示內容。為了避免 PHP 停止運作等情況下原始碼被顯示出來,也要在網頁伺服器端拒絕存取。在 Apache 2.4 中,請在放置 WordPress 的目錄的 .htaccess 中寫入下列內容(舊的 Order Deny,Allow / Deny from all 是 Apache 2.2 的寫法)。
<Files "wp-config.php">
Require all denied
</Files>
詳細步驟請見「拒絕存取 wp-config.php 的設定」。
.htaccess 本身,在 Apache 的標準設定(httpd.conf 的 <Files ".ht*">)中就已經被拒絕存取。
官方的說明中,也可以把 wp-config.php 移到放置 WordPress 的目錄的上一層。WordPress 如果在同一個目錄中找不到 wp-config.php,就會去找上一層目錄。不過官方也提到,有人認為效果不大,以及做法錯誤反而會有危險。要移動時,請確認上一層目錄不是公開目錄。
不讓 uploads 執行 PHP
uploads 是 WordPress 會寫入的目錄,也是攻擊時容易被放進檔案的地方。如果在這裡讓 PHP 無法執行,即使被放進檔案也無法運作。
在 Apache 2.4 中,請建立 wp-content/uploads/.htaccess 並寫入下列內容。
<FilesMatch "\.(php|phtml|phar)$">
Require all denied
</FilesMatch>
要在 .htaccess 中使用 Require,伺服器端的 AllowOverride 必須允許。如果沒有允許,會出現 500 錯誤,或設定被忽略。寫好之後,請開啟像 https://example.com/wp-content/uploads/test.php 這樣不存在的 PHP URL,確認會得到 403(如果仍是 404,代表設定沒有生效)。
在 Nginx 中,請在 server 區塊內,放在處理 PHP 的 location ~ \.php$ 之前。這是因為正規表示式的 location 會由上往下依序比對,並使用第一個符合的。
location ~* ^/wp-content/uploads/.*\.(php|phtml|phar)$ {
deny all;
}
變更設定後,請先用 nginx -t 確認語法,再重新載入。
另外,WordPress 的媒體上傳,預設不會接受允許類型(圖片、PDF 等)以外的檔案。一般情況下,無法從後台把 PHP 檔案當作媒體上傳。
注意事項
- 變更權限之前,請先備份檔案與資料庫。
- 用 FTP 軟體變更權限時,視伺服器而定,有時不支援批次變更。數量很多時,用 SSH 的
find比較快,也能避免遺漏。 - 更新時被要求輸入 FTP 連線資訊的話,不要放寬權限,而是確認擁有者。也請參考「WordPress 權限錯誤的修正方式」。
- 定期執行上面的確認指令(其他使用者可寫入的檔案、uploads 之中的 PHP),就能及早發現設定跑掉或遭竄改。
對 WordPress 有疑問嗎?本站營運方位於日本,僅以日文回覆。 聯絡我們(日文)