WordPressのファイルやフォルダの適切なパーミッション設定についてお困りなら、この記事がお役に立てるはずです。
WordPressのファイルパーミッションは、サイトのセキュリティと機能にとって必要不可欠ですが、まずはその概要を把握する必要があります。WordPressサーバーをご利用の場合は、すでにホスティング会社が設定してくれている場合がほとんどですが、何か問題が発生したときのことを想定して、パーミッション設定の概念を理解しておくと便利です。
「ファイルパーミッション」という言葉に馴染みがない方も、この記事に目を通してみてください。ファイルパーミッションについてすでにご存じの場合は、目次から「WordPressの適切なファイルパーミッション設定」に飛んで読み進めてください。
WordPressのファイルパーミッションについて動画での解説もご用意しています。
ファイルパーミッションとは
ファイルパーミッションは、一言で言えば、ユーザーがWordPressサイトのサーバー上のファイルを操作する方法を制御するものです。具体的には、ファイルの「読み取り」「書き込み」「実行」の権限を管理します。
- 読み込み:ファイルの内容を読む権限
- 書き込み:ファイルを変更する権限
- 実行:ファイルを使用する権限(スクリプトの実行など)
ユーザーとは
ユーザーには以下の3種類があります。
- 所有者:ファイルやディレクトリの所有者
- グループ:ファイルまたはディレクトリを直接所有するグループのメンバー
- 他のユーザ:ファイルの所有者またはグループのメンバー以外のすべてのユーザー
各ファイルまたはフォルダは、特定のユーザーまたは特定のグループによって所持されます。ユーザーは複数のグループのメンバーになることができますが、プライマリグループは1つだけです。
例えば、SFTP経由でサイトに接続する場合、サーバー上のユーザーアカウントを使用します。このユーザーアカウントは、サーバーの設定によって1つ以上のグループに属しています。
注)ほとんどの場合は、ホスティング会社が適切な設定を行ってくれているため、この「ユーザー」の概念については理解する必要はありませんが、ファイルパーミッションの機能は理解しておきましょう。
ファイルパーミッションでは、各タイプのユーザー(所有者、グループ、他のユーザ)がサーバー上のファイルやフォルダに対してできること(読み取り、書き込み、実行)を管理することができます。
一般に、ファイルの所有者が最も上位の権限を持ち、同じグループに属する他のユーザーは同等かそれ以下、他のユーザはグループと同等またはそれ以下の権限を持ちます。
所有者>グループ>他のユーザ
ファイルパーミッションの考え方は、WordPressのユーザーの種類と権限によく似ています。サイトの管理者は、編集者よりも多くの操作を行うことができます(例えば、管理者はプラグインをインストールできるが編集者はできない)。
管理者ほど上位の権限を持たない編集者は、サイトの匿名の訪問者よりも当然多くの権限を持ちます。例えば、編集者は他の人のブログ記事を編集したり、新たなブログ記事を公開したりすることができます。
ファイルパーミッションの数字
ファイルパーミッションは、「パーミッションモード」と呼ばれる3桁の数字で表現されます(例:777、440)。
数字の各桁は、特定のユーザーの権限に対応しています。
- 1桁目:所有者の権限
- 2桁目:グループの権限
- 3桁目:他のユーザの権限
各数字は、各操作に割り当てられた番号の合計になります。
- 読み込み:4
- 書き込み:2
- 実行:1
権限を与えない場合には、0を使用します。
パーミッションモードに表示される数字は、エンティティが持つすべてのパーミッションの合計になることに注意してください。例えば、所有者が読み取り(4)と書き取り(2)ができる場合、パーミッションモードは「6(4+2)」になります。
また、所有者が3つの操作の権限をすべて所持している場合は、「7( 4+2+1)」になります。
したがって、「777」は最も広く権限が付与されている状態になります。
- 1桁目:7(所有者:読み取り、書き込み、実行)
- 2桁目:7(グループ:読み取り、書き込み、実行)
- 3桁目:7(他のユーザ:読み取り、書き込み、実行)
なお、パーミッションボードが「777」になることはほぼありません。これについては後ほど詳しくご説明します。
chmod calculatorツールを使用すると、異なるユーザーに異なる権限を割り当てた際に数字がどのように変化するかを確認することができます。
ファイルパーミッションの文字
最も頻繁に目にするのが上で見た数字形式ですが、文字やダッシュ(-)で表されたファイルパーミッションもあります。
例:rwxr--r--
この形式は以下のようになっています。
- r:読み取りの権限
- w:書き込みの権限
- x:実行の権限
- -:権限なし
最初の3文字が所有者、次の3文字がグループ、最後の3文字が他のユーザの権限を示します。
つまり、rwxrwxrwx
が「777」に相当します。
WordPressのファイルパーミッションの重要性
ファイルパーミッションは、各ユーザーがサーバー上のファイルに対してできることを制御するため、WordPressサイトのセキュリティにおいて重要な役割を果たします。
例えば、サイトのすべてのファイルとフォルダを「777」に設定すると、誰でもファイルを作成したり、既存のファイルを変更または削除したり、スクリプトを実行したりできることになります。つまり、何者かが悪意のあるスクリプトをサイトに追加し、実行することも可能になってしまいます。
とはいえ、極端にファイルパーミッションを制限すると、サイトが機能しなくなるため、適切なバランスを取ることが重要です。
パーミッションを「000」に設定すると、WordPressサイトはサーバー上のファイルを読み取ることさえできなくなり、完全に機能しなくなります。
したがって、適切なファイルパーミッションは、「000」(誰も何の権限を持たない)と「777」(誰もがすべての権限を持つ)の間のどこかになります。
しかし、パーミッションを適切に設定しても状況によっては問題が発生することがあります。
例えば、「444」はサイトの.htaccessファイルでは非常に安全な設定ですが、.htaccessファイルに書き込む必要のあるプラグイン(WP RocketやW3 Total Cacheのようなキャッシュプラグインなど)で問題が発生するかもしれません。
そのため、書き込みの権限が必要なプラグインを使用している場合、ウェブサーバーの設定によっては、もう少し寛容な「644」あるいは「666」に変更する必要があるかもしれません。
WordPressのファイルパーミッションの変更は必要?
結論から言うと、ほとんどの場合、ファイルパーミッションを変更する必要はありません。
ホスティングサービスのインストーラーを使用してWordPressをインストールしている場合、Kinstaのような優れたサービスであれば、セットアッププロセスの一環として、自動的に適切なファイルパーミッションを設定してくれます。
この場合は、サイトのファイルパーミッションを自分で調整する必要はありません。
WordPressを自分でインストールした場合は、問題が発生する可能性があります。また、先ほど挙げたキャッシュプラグインのように、プラグインのインストールや使用中にファイルパーミッションに関する問題に遭遇することもあります。
WordPressの適切なファイルパーミッション設定
ここからは、WordPressの適切なファイルパーミッションと変更方法についてご説明します。
前提として、適切なファイルパーミッションはホスティング環境の設定に依存します。ある環境では適切で安全でも、他の環境でもそうなるとは限りません。これは、suEXECを使う共用サーバーでは特に当てはまります。
経験則としては、最も厳しい制限から始めて、必要に応じてパーミッションを追加していくことをおすすめします。例えば、 wp-config.php
ファイルについては、400〜644の値が適切でしょう。どこから始めれば良いかわからない場合は、400から始めてもOKです。ただし、この設定はサーバーの設定に問題を引き起こす可能性があり、問題が発生した場合はパーミッションを追加する必要があるかもしれません。
再三となりますが、777に設定することは避けてください(自分が開発者でそうする特別な理由がない限り)。
WordPressファイル/フォルダのデフォルトのファイルパーミッション
一般的に、WordPressの適切なファイルパーミッションは以下のとおりです。
- ファイル─644
- フォルダ─755
ただし以下は例外です。
- wp-config.phpファイル
- .htaccessファイル
- nginx.confファイル
wp-config.phpのパーミッション
サイトのwp-config.phpファイルは、サイトのデータベース認証情報のような重要な情報を含む、機密性の高いファイルです。
wp-config.phpファイルのパーミッションは、644から始めるのが良いですが、640や600、場合によっては444が適切なこともあります。
ただし、多くのWordPressプラグインがwp-config.phpファイルの書き込み権限に依存しているため、444に設定すると問題が生じる可能性があります。
.htaccessのパーミッション
.htaccessファイルもまた、注意が必要な重要な設定ファイルです。
.htaccessのパーミッションは、WordPress Codexが推奨する644から始めるのが無難でしょう。 444を推奨する開発者もいますが、先に触れたとおり、.htaccessに書き込みが必要なプラグイン(多くのキャッシュプラグインなど)が制限されます。
注)Kinstaでは、Nginxを使用しているため、Apacheウェブサーバーの.htaccessファイルは存在せず、パーミッションを設定する必要はありません。
nginx.confのパーミッション
.htaccessファイルのパーミッションは、 nginx.confにも適用されます。このファイルは、Nginxウェブサーバーの主要設定ファイルになります。
Kinstaでは、nginx.confファイルに644を使用しています。444を推奨している開発者も存在します。
WordPressのファイルパーミッションを簡単に確認する方法
サイトのファイルパーミッションをチェックし、問題があるかどうかをサクッと確認するには、WordPress.orgの無料プラグインSolid Securityがおすすめです。
FTPやcPanelのファイルマネージャーを使用する方法は次のセクションでご紹介します。
プラグインをインストールして有効化したら、「Security」>「Settings」に進み、「File Permissions」の下にある「Show Details」をクリックします。
このセクションに、現在のWordPressのファイルパーミッションと、Solid Seruticy推奨のパーミッションモードの比較が表示されます。以下を見ると、wp-config.phpファイルとnginx.confまたは.htaccessファイルには444を推奨していることがわかります(KinstaはNginxを使用しているため、以下にはnginx.confが表示されているが、Apacheを使用している場合は.htaccessが表示される)。
とはいえ、先に触れたとおり、444はいくつかのプラグインとの競合を引き起こすため、避けた方が良いかもしれません。
パーミッションの設定後、プラグインの使用を避けたい場合は、削除することをおすすめします。
WordPressのファイルパーミッションを変更する方法
ここからは、必要に応じてWordPressサイトのファイルパーミッションを変更する方法をご紹介します。今回は、以下3つを使用した方法を取り上げます。
- FTP/SFTP
- cPanelのファイルマネージャー
- SSH/ターミナル
FTP/SFTP
FTP/SFTPを使用してサーバーに接続する方法を知っていれば、どのFTPクライアントでもファイルパーミッションを簡単に変更できます。
今回は、無料で使える人気オープンソースクライアントであるFileZillaを使用して、その手順を見ていきます。
SFTPを使ってサーバーに接続したら、編集したいファイル/フォルダを右クリックし、「File permission」を選択します。
その後、チェックボックスを使用するか、数字を直接入力します。
cPanelのファイルマネージャー
cPanelを使用している場合は、ファイルマネージャーを使用して、ファイルパーミッションを編集することができます。
cPanelのファイルマネージャーを開いて、編集したいファイルまたはフォルダを右クリックし、「Change Permissions(パーミッションの変更)」を選択します。
次に、関連するボックスにチェックを入れてパーミッションを割り当てます。チェックを入れていくと、一番下の合計の数字が変動します。
適切なパーミッションを設定して完了です。
コマンドライン
コマンドラインでの作業に慣れている場合は、chmod
を使用してファイルパーミッションを変更することも可能です。chmod calculatorツールを使用すると、適切なパーミッションを素早く取得できます。
まとめ
WordPressの適切なファイルパーミッション設定は、安全でスムーズに機能するウェブサイトを開発するには欠かせません。Kinstaをはじめとするホスティング会社の自動インストーラーを使用している場合は、ファイルパーミッションについて心配する必要はほぼありません。
WordPressを自分でインストールしている場合、または何らかの理由でサイトの元のファイルパーミッションに不備が生じた場合は、ファイルパーミッションの変更が必要になる可能性があります。
一般的には、WordPressディレクトリのパーミッションは755、WordPressファイルのパーミッションは644が推奨されています。例外として、wp-config.phpファイルとサーバーの.htaccessまたはnginx.confファイルの設定には注意が必要です。
そして、何があっても本番サイトでファイルパーミッションを777に設定するのは避けてください。サイトとサーバーをセキュリティの脆弱性にさらすことになります。
コメントを残す