WordPressサイトのセキュリティ対策において、ユーザーIDやパスワードの強化、ログインページの保護と並んで重要となるのが「ファイルパーミッション(アクセス権限)の最適化」です。パーミッション設定が不適切な状態のままWebサイトを運用していると、第三者によるファイルの書き換えやマルウェアの設置、最悪の場合はデータベース接続情報の漏洩といった深刻なセキュリティリスクに晒されます。
結論として、WordPressを安全に運用するための基本パーミッションは、ディレクトリ(フォルダ)を「755(または705)」、通常のファイルを「644(または604)」、最も重要な「wp-config.php」を「400(または440/600)」に設定するのが原則です。不要な書き込み権限を排除することで、万が一攻撃者にアクセスされた場合でも不正改ざん被害を最小限に食い止めることが可能になります。
本記事では、WordPressにおけるファイルパーミッションの基礎知識から、主要ファイルごとの推奨値、FTPソフトやSSHを使った具体的な変更手順、設定変更時のトラブルシューティングまで、企業のWebサイト保守担当者や経営者に向けて分かりやすく解説します。
WordPressにおけるファイルパーミッション(アクセス権限)とは?基礎知識とセキュリティ上の役割
ファイルパーミッションとは、Webサーバー上に存在するファイルやディレクトリに対して、「誰が・どのような操作を行えるか」を制御するための権限設定のことです。Webサーバーは複数のユーザーやプログラムによって運用されるため、ファイルごとに適切なアクセス権限を与えることがセキュリティの基本となります。
パーミッションを表す数字(3桁の数値)の仕組み
パーミッションは一般的に「755」や「644」といった3桁(環境によっては4桁)の数字で表記されます。この3桁の数字は、左から順番に「所有者(Owner)」「グループ(Group)」「その他(Public/Other)」の3つの対象に対する権限を表しています。
- 所有者(Owner):ファイルを所有しているユーザー(通常はFTPアカウントやWebサーバーの実行ユーザー)
- グループ(Group):所有者が所属するユーザーグループ
- その他(Public/Other):上記以外の第三者(Webサイトを閲覧する一般ユーザーや第三者プログラム)
また、それぞれの数字は「読み取り(Read=4)」「書き込み(Write=2)」「実行(Execute=1)」という3つの権限の合計値で構成されています。
- 4(Read):ファイルの内容を読み込む権限
- 2(Write):ファイルの内容を書き換える・削除・新規作成する権限
- 1(Execute):プログラムやスクリプトを実行する権限(ディレクトリの場合は中身を表示・移動する権限)
- 0(No Access):一切の権限を与えない
たとえば「7」は「4 + 2 + 1」となるため「読み取り・書き込み・実行」のすべての権限を意味し、「5」は「4 + 0 + 1」で「読み取りと実行」の権限を意味します。
不適切なパーミッション設定が引き起こすセキュリティリスク
もしパーミッション設定が緩く、第三者(その他)に「書き込み権限(2)」が与えられている場合、Webサイトは非常に危険な状態に晒されます。攻撃者は脆弱性をついて不正なPHPスクリプトをアップロードしたり、既存のテーマファイルやプラグインファイルを改ざんしてバックドア(裏口)を仕掛けたりすることが可能になります。
特に、外部からのアクセスに対して全権限を許可する「777」という設定は、いかなるファイル・ディレクトリにおいても絶対に使用してはいけません。万が一マルウェア感染や改ざんが発生した場合の復旧作業や被害特定については、当社の実務ガイド「WordPressサイトのマルウェア感染・改ざんの原因と復旧手順」もあわせて参考にしてください。
| 数値 | 所有者(Owner) | グループ(Group) | その他(Public) | 主な用途と安全性 |
|---|---|---|---|---|
| 777 | 読み・書き・実行 | 読み・書き・実行 | 読み・書き・実行 | 【絶対厳禁】セキュリティリスクが極めて高く危険 |
| 755 | 読み・書き・実行 | 読み・実行 | 読み・実行 | 一般的なディレクトリの標準設定 |
| 705 | 読み・書き・実行 | なし | 読み・実行 | 一部のレンタルサーバー環境(CGIモード等)における推奨ディレクトリ設定 |
| 644 | 読み・書き | 読み取りのみ | 読み取りのみ | 一般的なPHP・HTML・画像ファイルの標準設定 |
| 604 / 600 | 読み・書き | なし / なし | 読み取りのみ / なし | より強固な保護が必要なファイル設定 |
| 400 / 440 | 読み取りのみ | なし / 読み取りのみ | なし | wp-config.phpなどの超重要ファイルの最高強度設定 |
WordPressの推奨ファイルパーミッション一覧とファイル別設定基準
WordPressを構築・運用する際、ファイルやディレクトリの種類に応じて最適なパーミッションを割り当てる必要があります。ここでは、主要な構成要素ごとの推奨値と設定基準を解説します。
1. 最重要ファイル「wp-config.php」のパーミッション
「wp-config.php」は、WordPressのデータベース接続情報(データベース名・ユーザー名・パスワード・ホスト名)や、認証用ユニークキーなどの最重要データが記録されているファイルです。このファイルが外部から読み取られたり書き換えられたりすると、データベース全体が乗っ取られるリスクが生じます。
推奨パーミッション数値:400、440、または 600(サーバー環境依存)
所有者以外のアクセスを一切遮断する「400」または「440」に設定することで、Webブラウザ経由の不正読み取りや、同一サーバー内の他アカウントからの閲覧を防ぎます。レンタルサーバーの仕様によっては「400」にするとWordPressがデータベースに接続できずエラーになる場合があるため、その場合は「600」や「644」へ調整します。
2. サーバー制御ファイル「.htaccess」のパーミッション
「.htaccess」は、Apacheサーバーにおける転送ルール(リダイレクト)やアクセス制限、パーマリンク構造を制御する重要ファイルです。攻撃者に書き換えられると、悪質なフィッシングサイトへユーザーを勝手に転送される(不正リダイレクト)被害が発生します。
推奨パーミッション数値:604 または 644
Webサーバー(Apache)が読み込める権限を維持しつつ、第三者からの書き込みを禁止する設定にします。パーマリンクの設定変更時やプラグイン設定の更新時にWordPress側から書き込みが必要な場合のみ一時的に「644」にし、運用時は厳格に管理することが望ましいです。
3. ディレクトリ(フォルダ)全般のパーミッション
WordPressのルートディレクトリをはじめ、「wp-admin」「wp-includes」「wp-content」などのすべてのフォルダに対する設定です。
推奨パーミッション数値:755 または 705
ディレクトリには「実行権限(1)」が含まれていないと、中身のファイルにアクセスしたりフォルダ内を移動したりすることができません。所有者には全権限(7)を与え、グループやその他には読み取りと実行(5)のみを許可します。
4. 通常のPHPファイルおよび静的ファイル
「index.php」「functions.php」などのテーマ構成ファイル、各種プラグインファイル、CSS、JavaScript、画像ファイルなどの権限設定です。
推奨パーミッション数値:644 または 604
ファイルに対して実行権限(1)を与える必要はありません。所有者に書き込み権限(6)を残し、その他には読み取り権限(4)のみを許可する「644」が最も標準的で安全な設定です。
5. アップロード用フォルダ「wp-content/uploads」の扱い
画像やPDFなどのメディアファイルを保存する「uploads」ディレクトリは、Web管理画面から日常的にファイルの新規作成・保存が行われる場所です。
推奨パーミッション数値:755 または 705
「管理画面から画像をアップロードできない」というトラブルが発生した際、安易に「777」へ変更してしまうケースが散見されますが、これは非常に危険です。Webサーバーの実行ユーザーとディレクトリの所有者権限が一致していれば、「755」のまま正常にアップロードが可能です。
ファイルパーミッションの変更・最適化手順(実務ガイド)
ファイルパーミッションを適切な値に変更・最適化するための具体的手順を解説します。運用環境に合わせて、FTPソフト、サーバー管理画面、またはSSHコマンドを利用して設定を行います。
手順1:FTPクライアント(FileZilla)を使用した変更手順
最も一般的で安全に実行できるのが、FTPクライアントソフト(FileZillaやWinSCPなど)を使用する方法です。ここではFileZillaを使った手順を説明します。
- FTPソフトでサーバーに接続:対象のWordPressサイトが設置されているサーバーへ接続します。
- 対象ファイル・フォルダを右クリック:ルートディレクトリにある「wp-config.php」を選択し、右クリックから「ファイルのパーミッション」または「属性変更」をクリックします。
- 数値の入力:「数値」の入力欄に「400」または「644」と入力し、「OK」をクリックします。
- ディレクトリの一括変更:「wp-content」などのフォルダ配下を一括変更する場合は、フォルダを右クリックして「ファイルのパーミッション」を選択し、「サブディレクトリへの再帰」にチェックを入れ、「ディレクトリのみに適用」を選択して数値「755」を設定します。
- ファイルの一括変更:同様の手順で「サブディレクトリへの再帰」を選択し、「ファイルのみに適用」を選択して数値「644」を一括適用します。
手順2:レンタルサーバーのコントロールパネルでの変更手順
主要なレンタルサーバー(エックスサーバー、ConoHa WING、さくらのレンタルサーバなど)には、ブラウザ上で操作できる「ファイルマネージャー」機能が備わっています。
- サーバー管理画面にログインし、「ファイルマネージャー」を開きます。
- WordPressの設置ディレクトリに移動し、変更したいファイル(例:.htaccess)のチェックボックスをオンにします。
- メニューから「パーミッション変更」または「属性変更」を選択します。
- 画面の指示に従ってパーミッション値を指定し、保存します。
手順3:SSHコマンドを使った効率的な一括権限変更手順
SSH接続が可能なサーバー環境や、大規模なサイト構成の場合は、Linuxコマンドを使って一括でパーミッションを最適化するのが最も確実で効率的です。
WordPressのインストールディレクトリ(例:/var/www/html)へ移動した上で、以下のコマンドを実行します。
# すべてのディレクトリを 755 に一括設定
find . -type d -exec chmod 755 {} ;
# すべてのファイルを 644 に一括設定
find . -type f -exec chmod 644 {} ;
# wp-config.php をより強固な 400(または 440)に個別設定
chmod 400 wp-config.php
# .htaccess を 604 に個別設定
chmod 604 .htaccess
このコマンドを実行することで、膨大なファイルが存在する場合でも一元的に適切なパーミッションへ統一することが可能です。
パーミッション設定時の注意点とトラブルシューティング
パーミッションを厳しく制限しすぎると、WordPressの正常な動作や更新作業に支障をきたす場合があります。ここでは実務でよく発生するトラブルとその解決法について説明します。
1. 「画像をアップロードできない」「プラグインが更新できない」エラー
パーミッションを調整した直後に「記述不可」「親ディレクトリはサーバーによって書き込み可能ですか?」といったエラーが表示された場合、以下の原因が考えられます。
- 所有者(Owner)とWebサーバー実行ユーザーの不一致:FTPでアップロードしたファイルの所有者ユーザーと、PHPを動かしているWebサーバー側のユーザー(apacheやnginx、www-dataなど)が異なる場合、所有者権限(755や644)があっても書き込みが拒否されます。
- 対処法:パーミッションの数字を「777」に上げるのではなく、SSH等で `chown` コマンドを用いてファイルの所有権(所有ユーザー・所有グループ)をWebサーバーの実行ユーザーへ変更してください。
2. 「データベース接続確立エラー」や「500 Internal Server Error」の発生
「wp-config.php」のパーミッションを「400」や「440」へ変更した際、Webサーバーがファイルを読み込めなくなり、サイト全体に接続エラーが発生することがあります。
- 原因:レンタルサーバーの実行モード(CGIモードやモジュールモード)や、PHPの動作権限の制約により、他のグループ・ユーザーからの読み取り権限が必要になるためです。
- 対処法:エラーが発生した場合は即座にパーミッションを「600」に変更し、それでも改善しない場合は「644」へ戻して接続状況を確認します。
3. セキュリティプラグインによる自動変更の注意点
セキュリティ強化プラグインの中には、ボタン一つでファイルパーミッションを一括変更してくれる機能を持つものがあります。大変便利ですが、サーバー環境によっては必要なファイルまでアクセス不可となり、管理画面に入れなくなるリスクがあります。プラグインによる変更を行う前には、必ずファイルとデータベースのバックアップを取得しておくことが鉄則です。
また、パーミッションの最適化だけでなく、ログインページの保護やIP制限などの総合的なセキュリティ施策を並行して行うことが重要です。詳細は当社の「WordPress管理画面のセキュリティ対策完全ガイド」や「WordPressのXML-RPC(xmlrpc.php)機能のリスクと無効化手順」をあわせて参照してください。
よくある質問(FAQ)
Q1. プラグインの自動更新が失敗する場合、どのファイルのパーミッションを見直すべきですか?
プラグインの更新失敗は、「wp-content/plugins」ディレクトリまたは「wp-content」ディレクトリ自体のパーミッションおよび所有者権限に原因があることが大半です。これらのディレクトリが「755」または「705」に設定されているか確認してください。数値に問題がない場合は、ファイルの所有権(chown)がWebサーバーの実行ユーザーと一致しているか確認が必要です。WordPress環境全体の保守性やPHPの互換性対策については「WordPressのPHPバージョンアップ手順と互換性エラー対策」も確認しておくことを推奨します。
Q2. レンタルサーバーの仕様によって推奨パーミッション数値が異なるのはなぜですか?
サーバー上でPHPを動作させる仕組み(モジュールモード、CGIモード、FastCGIモードなど)や、サーバー全体のユーザー管理体系が異なるためです。モジュールモードではWebサーバーの権限で実行されるため「755 / 644」が一般的ですが、CGIモードやSuPHP環境ではユーザー自身の権限で動作するため「705 / 604」といったより厳しい権限値が推奨される場合があります。ご契約中のレンタルサーバー公式マニュアルの推奨値も合わせて確認してください。
Q3. wp-config.phpを400に設定したら管理画面でエラーが出ました。どうすればよいですか?
FTPソフトやサーバーのファイルマネージャーを開き、「wp-config.php」のパーミッションを「400」から「600」に変更してください。それでもエラーが解消されない場合は、一時的に標準設定である「644」に戻し、管理画面およびサイトが正常に表示されるか検証を行ってください。
Q4. セキュリティプラグインでパーミッション変更を行うのは安全ですか?
信頼性の高いメジャーなプラグインを使用する場合は概ね安全ですが、サーバー固有の権限仕様に対応しきれず、サイト表示崩れやエラーを引き起こすケースがあります。可能な限り、FTPソフトやSSHを用いた手動での確認・設定、あるいはサーバー管理画面のファイルマネージャー機能から直接変更する手順を推奨します。
まとめ
WordPressのファイルパーミッション最適化は、不正アクセスやサイトの改ざん、情報漏洩被害を防ぐために欠かせない基本中の基本となるセキュリティ施策です。
改めて、WordPressを安全に運用するための基本原則をまとめます。
- ディレクトリ全般:「755」または「705」
- ファイル全般:「644」または「604」
- wp-config.php:「400」「440」または「600」
- .htaccess:「604」または「644」
- 「777」設定はどのような理由があっても絶対に使用しない
自社で保守・管理を行っているWeb担当者の方は、定期的に主要ファイルのパーミッション状態を確認し、不要な書き込み権限が残っていないか点検する体制を整えましょう。自社でのセキュリティ設定や保守運用に不安がある場合や、既にトラブルが発生している場合は、専門のWeb制作・保守会社へご相談されることを強くおすすめします。
CONTACT
Web制作・SEO・AIOについてお気軽にご相談ください
ホームページ制作・リニューアル、WordPress、SEO・AIO対策、 ECサイト、Web集客、保守・セキュリティなど、 Webに関するご相談を承っています。 「何から相談すればよいかわからない」という段階でもお気軽にお問い合わせください。
