WordPress / WordPress Bitnami 正確的檔案權限設定

WordPress / WordPress Bitnami 正確的檔案權限設定

WordPress的檔案權限設定包含兩個部分:一是網站的根目錄 htdocs、二是 htdocs 以外的其他 WordPress 檔案。

檔案權限是伺服器當中非常重要的設定,它會牽涉到哪個使用者可以存取哪個檔案。沒設定好輕則網站無法瀏覽,重則資料被竊取、網站毀損無法恢復。當我們在架設網站的過程當中,有時可能會出現存取錯誤或權限錯誤,經常都是因為檔案權限的設定錯誤造成的。

網站根目錄 htdocs 的權限設定

htdocs 這個資料夾底下的權限設定比較單純,根據 Bitnami 的文件表示,所有 Bitnami 的應用程式 (包含 WordPress) 的預設權限設定如下:

  • 所有的檔案及資料夾都被 bitnami 這個使用者所擁有,且都隸屬於 daemon 這個群組。
  • 所有資料夾存取權限都是 775
  • 所有檔案的存取權限都是 664
  • wp-config.php 這個檔案的存取權限是 640

▍ 權限設定指令

要將所有檔案都改成這確的權限設定,只需要下列幾個步驟:

1. 首先先移到 htdocs 的目錄當中

cd /opt/bitnami/apps/wordpress/htdocs

2. 更改所有檔案的擁有者及存取權限

sudo chown bitnami:daemon -R * 
sudo find . -type d -exec chmod 775 {} \; 
sudo find . -type f -exec chmod 664 {} \;

3. 更改 wp-config.php 的存取權限

sudo chmod 640 htdocs/wp-config.php

其他的 WordPress 檔案權限設定

在 htdocs 以外的檔案權限設定比較複雜,其中牽涉到有些程式必須 root user 才能存取等,在此就不多做解說,直接附上所有檔案的預設權限:

/wordpress
755 drwxr-xr-x 2 bitnami root      4096 Aug  4 15:21 bin
544 -r-xr--r-- 1 root    root   8505548 Jul 25 15:00 bnconfig
755 drwxr-xr-x 4 bitnami root      4096 Aug  4 15:32 conf
775 drwxrwxr-x 5 bitnami daemon    4096 Aug  4 15:31 htdocs
755 drwxr-xr-x 2 root    root      4096 Aug  4 15:21 licenses
775 drwxrwxr-x 2 bitnami daemon    4096 Aug  4 15:40 tmp
700 -rwx------ 1 root    root   8764279 Aug  4 15:22 uninstall
600 -rw------- 1 root    root    167635 Aug  4 15:23 uninstall.dat
777 lrwxrwxrwx 1 root    root        34 Aug  4 15:22 updateip -> /opt/bitnami/apps/gallery/bnconfig

/wordpress/bin
755 -rwxr-xr-x 1 bitnami root     250 Aug  4 15:21 wp
644 -rw-r--r-- 1 bitnami root 5506663 Apr 25 18:58 wp-cli.phar
644 -rw-r--r-- 1 bitnami root      71 Aug  4 15:21 wp-cli.yml

/wordpress/conf
644 -rw-r--r-- 1 bitnami root  256 Aug  4 15:21 banner.conf
755 drwxr-xr-x 2 bitnami root 4096 Aug  4 15:21 certs
644 -rw-r--r-- 1 bitnami root  717 Aug  4 15:21 htaccess.conf
644 -rw-r--r-- 1 bitnami root  948 Aug  4 15:34 httpd-app.conf
644 -rw-r--r-- 1 bitnami root  237 Aug  4 15:34 httpd-prefix.conf
644 -rw-r--r-- 1 bitnami root  590 Aug  4 15:34 httpd-vhosts.conf
755 drwxr-xr-x 2 bitnami root 4096 Aug  4 15:21 php-fpm

/wordpress/conf/certs
/--- empty ---/

/wordpress/conf/php-fpm
644 -rw-r--r-- 1 bitnami root   0 Aug  4 15:21 php-settings.conf
644 -rw-r--r-- 1 bitnami root 226 Aug  4 15:21 pool.conf

/wordpress/htdocs
/* 
all files and directories owned by: bitnami:daemon
all files: 664
all directories: 775
wp-config.php 640
*/

/wordpress/licenses
644 -rw-r--r-- 1 root root 19935 Jan  1  2019 license.txt

/wordpress/tmp
/--- empty ---/

▍ 權限設定指令

1. 首先先移到 WordPress 的目錄當中

cd /opt/bitnami/apps/wordpress

2. 更改所有檔案的擁有者及存取權限,直接執行下列指令:

chmod 755 bin; chmod 544 bnconfig; chmod 755 conf; chmod 775 htdocs; chmod 755 licenses; chmod 775 tmp; chmod 700 uninstall; chmod 600 uninstall.dat; chmod 777 updateip; chmod 755 ./bin/wp; chmod 644 ./bin/wp-cli.phar; chmod 644 ./bin/wp-cli.yml; chmod 644 ./conf/banner.conf; chmod 755 ./conf/certs; chmod 644 ./conf/htaccess.conf; chmod 644 ./conf/httpd-app.conf; chmod 644 ./conf/httpd-prefix.conf; chmod 644 ./conf/httpd-vhosts.conf; chmod 755 ./conf/php-fpm; chmod 644 ./conf/php-fpm/php-settings.conf; chmod 644 ./conf/php-fpm/pool.conf; chmod 644 ./licenses/license.txt; chown bitnami:root bin; chown root:root bnconfig; chown bitnami:root conf; chown bitnami:daemon htdocs; chown root:root licenses; chown bitnami:daemon tmp; chown root:root uninstall; chown root:root uninstall.dat; chown root:root updateip; chown bitnami:root ./bin/wp; chown bitnami:root ./bin/wp-cli.phar; chown bitnami:root ./bin/wp-cli.yml; chown bitnami:root ./conf/banner.conf; chown bitnami:root ./conf/certs; chown bitnami:root ./conf/htaccess.conf; chown bitnami:root ./conf/httpd-app.conf; chown bitnami:root ./conf/httpd-prefix.conf; chown bitnami:root ./conf/httpd-vhosts.conf; chown bitnami:root ./conf/php-fpm; chown bitnami:root ./conf/php-fpm/php-settings.conf; chown bitnami:root ./conf/php-fpm/pool.conf; chown root:root ./licenses/license.txt; 

到這裡就大功告成啦!

權限設定指令解說

▍ 稍微解釋一下上面三個指令:

chown 指令將檔案及資料夾變更擁有者為 bitnami、群組為 daemon,且 -R 參數表示應用到所有子目錄當中, * 表示應用到所有檔案及目錄。

find 則是搜尋指令, . 表示搜尋當下的目錄位置,且指定 -type d 參數為目錄。並且 -exec 表示對符合條件的目錄執行後面的指令。 -type f 則是指檔案。

chmod 是更改檔案或目錄的存取權限。

▍也可以把上面兩個部分 (htdocs/ 和 wordpress/) 合起來一起使用,直接重設所有檔案權限

cd /opt/bitnami/apps/wordpress; chmod 755 bin; chmod 544 bnconfig; chmod 755 conf; chmod 775 htdocs; chmod 755 licenses; chmod 775 tmp; chmod 700 uninstall; chmod 600 uninstall.dat; chmod 777 updateip; chmod 755 ./bin/wp; chmod 644 ./bin/wp-cli.phar; chmod 644 ./bin/wp-cli.yml; chmod 644 ./conf/banner.conf; chmod 755 ./conf/certs; chmod 644 ./conf/htaccess.conf; chmod 644 ./conf/httpd-app.conf; chmod 644 ./conf/httpd-prefix.conf; chmod 644 ./conf/httpd-vhosts.conf; chmod 755 ./conf/php-fpm; chmod 644 ./conf/php-fpm/php-settings.conf; chmod 644 ./conf/php-fpm/pool.conf; chmod 644 ./licenses/license.txt; chown bitnami:root bin; chown root:root bnconfig; chown bitnami:root conf; chown bitnami:daemon htdocs; chown root:root licenses; chown bitnami:daemon tmp; chown root:root uninstall; chown root:root uninstall.dat; chown root:root updateip; chown bitnami:root ./bin/wp; chown bitnami:root ./bin/wp-cli.phar; chown bitnami:root ./bin/wp-cli.yml; chown bitnami:root ./conf/banner.conf; chown bitnami:root ./conf/certs; chown bitnami:root ./conf/htaccess.conf; chown bitnami:root ./conf/httpd-app.conf; chown bitnami:root ./conf/httpd-prefix.conf; chown bitnami:root ./conf/httpd-vhosts.conf; chown bitnami:root ./conf/php-fpm; chown bitnami:root ./conf/php-fpm/php-settings.conf; chown bitnami:root ./conf/php-fpm/pool.conf; chown root:root ./licenses/license.txt; chown bitnami:daemon -R ./htdocs/*; find ./htdocs/ -type d -exec chmod 775 {} \;; find ./htdocs/ -type f -exec chmod 664 {} \;; chmod 640 ./htdocs/wp-config.php;

紅字的部分是你的 wordpress 資料夾,上面這是預設的位址。

▍ 可以參考 bitnami 的文件:
Understand WordPress Filesystem Permissions
Changing File Permissions