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
Copyright announcement:
the featured image: Photo by Shahadat Shemul on Unsplash