はじめに
この記事は、WordPressをVPSにインストールした方が対象です。レンタルサーバーの簡単インストールなどからWordPressをご利用の方は特に気にする必要はない(初めから適切に設定されている為)かと思います。
自信でWordPressをインストールした方、Wordpressの管理画面からなにかしらの操作が効かない状態になってしまった方(プラグインの更新ができない等)は一度以下で解説する権限の確認をしてみてください。
上記に当てはまらなくても、セキュリティ的に大丈夫か?と心配になった方もぜひ見てみてください。
前知識と環境
環境
ConohaのVPSサーバー。OSはUbuntu18.04です。
動作環境はApache + PHP + MySQLです。
ファイル所有者について
まず、WordPressをインストールした際、それぞれのファイルの所有者はユーザー名となっているかと思いますが、Ubuntuの場合Apacheは「www-data」グループが動かすため、インストールしたファイル群の所有者を変更します。
sudo chown -R www-data wordpress
「ls -la」でファイルの一覧を表示すると、所有者がwww-dataに変更されているのが確認できます。
権限の確認
先ほどのコマンドを打った際に、以下のように記号が並んでいるのが確認できたかと思います。
-rw-r--r-- 1 www-data www-data 420 Dec 1 2017 index.php
-rw-r--r-- 1 www-data www-data 19935 May 2 04:51 license.txt
-rw-r--r-- 1 www-data www-data 7368 Jun 11 08:10 readme.html
-rw-r--r-- 1 www-data www-data 6939 Dec 29 13:06 wp-activate.php
drwxr-xr-x 9 www-data www-data 4096 Dec 29 13:06 wp-admin
-rw-r--r-- 1 www-data www-data 369 Dec 1 2017 wp-blog-header.php
-rw-r--r-- 1 www-data www-data 2340 Jun 11 08:10 wp-comments-post.php
-rw------- 1 www-data www-data 4040 Sep 8 2019 wp-config.php
・・・
この「-rw-r–r–」や「drwxr-xr-x」などとなっている部分が権限の設定です。
たとえば「drxxr-xr–」の場合、以下のように分けて読みます。
最初の一文字目がファイルの種別です。
ファイルの場合は「-」
ディレクトリの場合は「d」
シンボリックリンクの場合は「l」と表記されます。
2文字目以降は3文字区切りで、それぞれ「所有者」「所有グループ」「その他」の権限を表しています。
そのため、以下のように読みます。
所有者には「r」読み込み、「w」書き込み、「x」実行の権限。
グループには「r」読み込み、「x」実行の権限。
その他は「r」読み込みの権限。
このようにファイルごとに適切な権限を設定しておくことで、外部から書き換えられたりといったことを防ぐことができます。
権限の変更方法
アルファベットで指定する方法と、数値で指定する方法があるのですが、個人的には数値での指定のほうが覚えると忘れにくいかなと思うので、数値での変更方法を記載します。
chmod 764 example.txt
chmod 771 -R dir
3桁の数字の先頭1番目が「所有者」。
2番目が「グループ」。
3番目が「その他」に与える権限となっていて、数値は
「4」が読み取り
「2」が書き込み
「1」が実行となります。
つまり例の一行目は
「所有者=全部(7=4+2+1)」
「グループ=読み取りと書き込み(6=4+2)」
「その他=実行のみ」
二行目ではディレクトリに対して再帰的に権限を変更しています。
WordPressの適切な権限設定
ここからようやく本題ですが、ではWordpressの権限の設定はどのようにしたらいいのか、一般的には以下のようにします。
.htaccess
「606」、もしくは「604」
wp-config.php
「400」
その他のディレクトリ
「705」
その他のファイル
「604」
最後に
特定のテーマのみ更新できない、特定のプラグインのみ更新できないといった場合も、まずは権限の設定を疑ってみましょう。