ここを見てきましたが、最適なファイル許可に関する詳細は見つかりませんでした。また、WordPress のフォームの質問もここでいくつか見ましたが、777 を提案する人は明らかにセキュリティについて少し学ぶ必要があります。
要するに、私の質問はこれです。次の場合に必要なアクセス許可は次のとおりです。
- すべての WordPress コンテンツを格納するルート フォルダー
- wp-admin
- wp-コンテンツ
- wp-includes
そして、それらの各フォルダー内のすべてのファイル?
WP をセットアップするとき、あなた (Web サーバー) はファイルへの書き込みアクセスが必要になる場合があります。そのため、アクセス権を緩める必要がある場合があります。
chown www-data:www-data -R * # Let Apache be owner
find . -type d -exec chmod 755 {} \; # Change directory permissions rwxr-xr-x
find . -type f -exec chmod 644 {} \; # Change file permissions rw-r--r--
設定後、アクセス権を強化する必要があります。WordPressの強化に従って、wp-content を除くすべてのファイルは、ユーザー アカウントのみが書き込み可能にする必要があります。wp-content はwww-dataからも書き込み可能でなければなりません。
chown <username>:<username> -R * # Let your useraccount be owner
chown www-data:www-data wp-content # Let apache be owner of wp-content
後で wp-content の内容を変更したくなるかもしれません。この場合、次のことができます
su
、何をするにしても、ファイルにwww-data のrw パーミッションがあることを確認してください。
すべての wp ファイルへのフル アクセスをwww-data
ユーザー (この場合は Web サーバー ユーザー) に与えることは危険です。むしろこれをしないでください:
chown www-data:www-data -R *
ただし、WordPress とそのプラグインをインストールまたはアップグレードする際には便利です。しかし、作業が終わったら、wp ファイルを Web サーバーに所有させておくのはもはや得策ではありません。
基本的に、Web サーバーが Web サイト内の任意のファイルを配置または上書きできるようにします。これは、誰かが Web サーバー (または一部の .php スクリプトのセキュリティ ホール) を使用して Web サイトにファイルを配置した場合、サイトを乗っ取る可能性があることを意味します。
このような攻撃からサイトを保護するには、次のことを行う必要があります。
すべてのファイルは、ユーザー アカウントが所有し、書き込み可能である必要があります。WordPress からの書き込みアクセスが必要なファイルは、Web サーバーによって書き込み可能である必要があります。ホスティングの設定で必要な場合は、それらのファイルが Web サーバー プロセスで使用されるユーザー アカウントによってグループ所有される必要があることを意味します。
/
WordPress のルート ディレクトリ: すべてのファイルは、WordPress に書き換えルールを自動的に生成させたい場合は、.htaccess を除いて、ユーザー アカウントだけが書き込み可能にする必要があります。
/wp-admin/
WordPress 管理エリア: すべてのファイルは、ユーザー アカウントだけが書き込み可能にする必要があります。
/wp-includes/
WordPress アプリケーション ロジックの大部分: すべてのファイルは、ユーザー アカウントによってのみ書き込み可能にする必要があります。
/wp-content/
ユーザー提供のコンテンツ: ユーザー アカウントと Web サーバー プロセスによって書き込み可能であることを意図しています。
中
/wp-content/
には次のものがあります。
/wp-content/themes/
テーマ ファイル。組み込みのテーマ エディターを使用する場合は、すべてのファイルが Web サーバー プロセスによって書き込み可能である必要があります。組み込みのテーマ エディターを使用したくない場合は、ユーザー アカウントだけがすべてのファイルを書き込み可能にできます。
/wp-content/plugins/
プラグイン ファイル: すべてのファイルは、ユーザー アカウントによってのみ書き込み可能にする必要があります。
存在する可能性のある他のディレクトリ
/wp-content/
は、それらを必要とするプラグインまたはテーマで文書化する必要があります。権限は異なる場合があります。
アクセス許可を次のように設定しました。
# Set all files and directories user and group to wp-user
chown wp-user:wp-user -R *
# Set uploads folder user and group to www-data
chown www-data:www-data -R wp-content/uploads/
# Set all directories permissions to 755
find . -type d -exec chmod 755 {} \;
# Set all files permissions to 644
find . -type f -exec chmod 644 {} \;
私の場合、WordPress 用に特定のユーザーを作成しました。これは、そのユーザーが所有するファイルへの Web からのアクセスを防止する apache のデフォルト ユーザーとは異なります。
次に、apache ユーザーにアップロード フォルダーを処理する許可を与え、最後に十分に安全なファイルとフォルダーの許可を設定します。
編集済み
W3C Total Cache を使用している場合は、次のことも行う必要があります。
rm -rf wp-content/cache/config
rm -rf wp-content/cache/object
rm -rf wp-content/cache/db
rm -rf wp-content/cache/minify
rm -rf wp-content/cache/page_enhanced
それならうまくいく!
編集済み
しばらく WordPress サイトを開発した後、環境ごとに異なるファイル許可をお勧めします。
本番環境では、ファイルシステムを変更するためのアクセス権をユーザーに付与しません。リソースのアップロードと、バックアップなどを行うためのいくつかのプラグイン固有のフォルダーへのアクセス権のみを許可します。しかし、Git でプロジェクトを管理し、ステージングでもプロダクションでも、プラグインを更新するのは適切ではありません。本番ファイルのセットアップはここに残します。
# Set uploads folder user and group to www-data
chown www-data:www-data -R wp-content/uploads/
www-data:www-data = apache または nginx のユーザーとグループ
ステージングは、そのクローンである必要があるため、同じ運用権限を共有します。
最後に、開発環境は、プラグイン、翻訳、すべてを更新するためのアクセス権を持ちます...
# Set uploads folder user and group to www-data
chown www-data:www-data -R wp-content/
# Set uploads folder user and group to www-data
chown your-user:root-group -R wp-content/themes
# Set uploads folder user and group to www-data
chown your-user:root-group -R wp-content/plugins/your-plugin
www-data:www-data = apache または nginx ユーザーとグループ your-user:root-group = 現在のユーザーとルート グループ
これらのアクセス許可により、許可を求めることなく、フォルダーthemes
の下で開発するためのアクセスが許可されます。your-plugin
残りのコンテンツは Apache または Nginx ユーザーが所有し、WP がファイルシステムを管理できるようにします。
git リポジトリを作成する前に、まず次のコマンドを実行します。
# Set all directories permissions to 755
find . -type d -exec chmod 755 {} \;
# Set all files permissions to 644
find . -type f -exec chmod 644 {} \;
ファイルの正しいアクセス許可は 644 です フォルダの正しいアクセス許可は 755 です
権限を変更するには、ターミナルと次のコマンドを使用します。
find foldername -type d -exec chmod 755 {} \;
find foldername -type f -exec chmod 644 {} \;
フォルダーの場合は 755、ファイルの場合は 644 です。
デフォルトのワードプレス サイトには、以下のルールが推奨されると思います。
wp-content 内のフォルダーには、0755 パーミッションを設定します。
chmod -R 0755 プラグイン
chmod -R 0755 アップロード
chmod -R 0755 アップグレード
上記の wp-content ディレクトリの所有者を apache ユーザーにします。
chown Apache アップロード
chown Apache アップグレード
chown Apache プラグイン
Web サイトが安全で、フォルダーに適切なアクセス許可を使用していることを確実にするには、次のようなセキュリティ プラグインを使用します。
https://en-ca.wordpress.org/plugins/all-in-one-wp-security-and-firewall/
https://en-ca.wordpress.org/plugins/wordfence/
これらのプラグインは、Wordpress のインストールをスキャンし、潜在的な問題について通知します。これらは、安全でないフォルダーのアクセス許可についても警告します。それに加えて、これらのプラグインは、フォルダーに割り当てる必要がある権限を推奨します。
コマンド:
chown www-data:www-data -R *
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
ftp-user は、ファイルのアップロードに使用しているユーザーです
chown -R ftp-user:www-data wp-content
chmod -R 775 wp-content
OS X の場合、次のコマンドを使用します。
sudo chown -R www:www /www/folder_name
これが正しいかどうかはわかりませんが、Google Compute App Engine で Bitnami イメージを使用しています。プラグインと移行に問題があり、権限をchmodしてさらに混乱させた後、これらの3行を見つけてすべての問題を解決しました。それが適切な方法かどうかはわかりませんが、私にとってはうまくいきました。
sudo chown -R bitnami:daemon /opt/bitnami/apps/wordpress/htdocs/
sudo find /opt/bitnami/apps/wordpress/htdocs/ -type f -exec chmod 664 {} \;
sudo find /opt/bitnami/apps/wordpress/htdocs/ -type d -exec chmod 775 {} \;
私自身のサイトでのすべての読書と苦悩に基づいて、ハッキングされた後、Wordfence と呼ばれる Wordpress 用のセキュリティ プラグインのアクセス許可を含む上記のリストを思いつきました。(それとは関係ありません)
この例では、wordpress ドキュメントのルートは /var/www/html/example.com/public_html です。
次のように、www-data がドキュメント ルートに書き込めるようにアクセス許可を開きます。
cd /var/www/html/example.com
sudo chown -R www-data:www-data public_html/
サイトのダッシュボードから、管理者として更新を実行できるようになりました。
次の手順に従って、更新が完了した後にサイトを保護します。
sudo chown -R wp-user:wp-user public_html/
上記のコマンドは、wordpress インストール内のすべての権限を wordpress FTP ユーザーに変更します。
cd public_html/wp-content
sudo chown -R www-data:wp-user wflogs
sudo chown -R www-data:wp-user uploads
上記のコマンドにより、セキュリティ プラグイン Wordfence がそのログにアクセスできるようになります。アップロード ディレクトリは、www-data からも書き込み可能です。
cd plugins
sudo chown -R www-data:wp-user wordfence/
上記のコマンドは、セキュリティ プラグインが適切に機能するために読み書きアクセスが必要であることも確認します。
ディレクトリとファイルのアクセス許可
# Set all directories permissions to 755
find . -type d -exec chmod 755 {} \;
# Set all files permissions to 644
find . -type f -exec chmod 644 {} \;
wp-config.php のパーミッションを 640 に設定して、wp-user のみがこのファイルを読み取ることができ、他のユーザーは読み取れないようにします。上記のファイル所有権では、440 のアクセス許可は機能しませんでした。
sudo chmod 640 wp-config.php
SSH を使用した Wordpress の自動更新は、PHP5 では正常に動作していましたが、Ubuntu 16.04 での php7.0-ssh2 バンドルの問題により、PHP7.0 では機能しなくなり、適切なバージョンをインストールして動作させる方法が見つかりませんでした。幸いなことに、ssh-sftp-updater-support (無料) と呼ばれる非常に信頼性の高いプラグインにより、libssh2 を必要とせずに SFTP を使用した自動更新が可能になります。そのため、まれに必要な場合を除いて、上記の権限を緩める必要はありません。