WordPressの正しいファイル権限[終了]


399

私はここを調べましが、最適なファイル権限の詳細は見つかりませんでした。私もここでWordPressのフォームの質問のいくつかを調べましたが、777を示唆する人は誰でも明らかにセキュリティの少しのレッスンが必要です。

要するに私の質問はこれです。以下に対してどのようなアクセス許可が必要ですか?

  1. すべてのWordPressコンテンツを格納するルートフォルダー
  2. wp-admin
  3. wp-content
  4. wp-includes

そして、それらの各フォルダ内のすべてのファイル?


基本的に、Wordpressアップロードフォルダーのみが777である必要がありますが、深刻なセキュリティ上の脅威になります。Suphpが有効になっているサーバーを使用する場合は、権限を手動で変更する必要はありません。
Ali F

4
この質問はタグWikiの抜粋からトピック外であるため、トピック外として閉じることに投票します。「トピック外の質問には、テーマ開発、WordPress管理、管理のベストプラクティス、サーバー設定などに関する質問が含まれます」
Adriaan

回答:


499

WPをセットアップするとき、あなた(ウェブサーバー)はファイルへの書き込みアクセスを必要とするかもしれません。したがって、アクセス権を緩くする必要があるかもしれません。

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-コンテンツを除くすべてのファイルのみユーザーアカウントによって書き込み可能でなければなりません。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の内容を変更したい場合があります。この場合、あなたは

  • 一時的にユーザーに変更WWW-データsu
  • wp-contentグループに書き込みアクセス775を付与し、グループwww-dataまたは
  • ACLを使用して、フォルダへのアクセス権をユーザーに付与します

何をする場合でも、ファイルにwww-dataに対するrw権限があることを確認してください。


2
Kornelは、そのような信頼できるリンクの1つを以下に示します。codex.wordpress.org/Changing_File_Permissions、Apacheのドキュメントhttpd.apache.org/docs/2.2/misc/security_tips.html、およびトピックに関するほとんどすべてのGoogle検索も参照してください。ただし、一般的なケースでは、疑わしい場合は書き込みアクセス権を与えず(もちろん所有権もありません)、ケースバイケースで緩めます。その逆(ここで違反している最小特権の原則)ではありません。
Calimo 2014年

22
権限を変更しないと機能しない場合でも、自動更新機能があるのはなぜですか?
Malhal

6
@ ManuelSchneid3r、wp-contentの下にいくつかのPHPファイルが表示されますが、これらは本当に書き込み可能であるはずですwww-dataか?これはまったく安全ではないように思えます。
Alexis Wilke

12
このソリューションは、ワードプレスが「自動セキュリティ更新」をインストールするのを防ぎます。ワードプレスのマイナーアップデートごとに上記の手順を手動で実行する必要があります。
Jeroen 2017年

11
これは安全な構成ではありません。これらのファイルに読み取り権限を設定しても、Apacheユーザーもファイルを所有している場合は影響がありません。使ってはいけません。codex.wordpress.org/Changing_File_Permissionsを
PodTech.io

60

すべてのwpファイルへのフルアクセスをwww-dataユーザー(この場合はWebサーバーユーザー)に与えることは危険な場合があります。したがって、これを行わないでください。

chown www-data:www-data -R *

ただし、WordPressとそのプラグインをインストールまたはアップグレードするときに役立つ場合があります。しかし、完了したときに、Webサーバーがwpファイルを所有し続けることはもはやお勧めできません。

それは基本的にウェブサーバーがあなたのウェブサイトにどんなファイルでも置くか、または上書きすることを可能にします。これは、誰かが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/は、それらを必要とするプラグインまたはテーマによって文書化する必要があります。権限は異なる場合があります。

ソースおよび追加情報:http : //codex.wordpress.org/Hardening_WordPress


あなたのユーザーアカウントによって。サイトでphpスクリプトを実行しているユーザー(通常はapacheユーザー)を意味しますか?
shasi kanth 2015年

4
@shasikanthいいえ、Apacheユーザーは「Webサーバープロセス」と呼ばれています。ユーザーアカウントはLinuxユーザー(ssh、ftpユーザーなど)です
Daniel Bang

この回答と承認された回答では、ユーザー(www-dataではない)はwww-dataグループのメンバーである必要がありますか?
user658182 2017年

1
いいえ、それがすべてのポイントです。
Piotr Nawrot 2017

1
私が経験する問題は、SSHの「ユーザー」を/ wp-content / plugins /の所有者にすると、常にFTPポップアップルーチンまたは権限エラーが発生し、管理者から完全に機能しなくなるという問題です。プラグインの追加、更新はできません。www-dataをwp-contentの所有者にした場合にのみ、Wordpress Adminプラグイン機能が機能します。(例:sudo chown www-data:www-data -R / var / www / html / wp-content /)
Heres2u

26

ワードプレスルートフォルダーがホームフォルダーの下にある場合:

** Ubuntu / apache

  1. ユーザーをwww-dataグループに追加します。

CREDIT www-dataグループへの書き込み権限の付与

あなたusermodはあなたのユーザーを呼びたいです。だからそれは:

sudo usermod -aG www-data yourUserName

** www-dataグループが存在すると仮定

  1. ユーザーがwww-dataグループに属していることを確認します。

    groups yourUserName

あなたは次のようなものを得るはずです:

youUserName : youUserGroupName www-data

** youUserGroupNameは通常、ユーザー名に似ています

  1. ユーザーの所有権を維持しながら、wp-contentフォルダーのグループ所有権を再帰的に変更します

    chown yourUserName:www-data -R youWebSiteFolder/wp-content/*

  2. ディレクトリをyouWebSiteFolder / wp-content /に変更します

    cd youWebSiteFolder/wp-content

  3. フォルダとサブフォルダのグループ権限を再帰的に変更して、書き込み権限を有効にします。

    find . -type d -exec chmod -R 775 {} \;

** `/ home / yourUserName / youWebSiteFolder / wp-content / 'のモードが0755(rwxr-xr-x)から0775(rwxrwxr-x)に変更されました

  1. ファイルとサブファイルのグループ権限を再帰的に変更して、書き込み権限を有効にします。

    find . -type f -exec chmod -R 664 {} \;

結果は次のようになります。

WAS:
-rw-r--r--  1 yourUserName www-data  7192 Oct  4 00:03 filename.html
CHANGED TO:
-rw-rw-r--  1 yourUserName www-data  7192 Oct  4 00:03 filename.html

に相当:

chmod -R ug + rwフォルダー名

アクセス許可は、ファイルの場合は664、ディレクトリの場合は775のようになります。

追記'could not create directory':プラグインの更新中に誰かがエラーに遭遇し
server@user:~/domainame.com$ sudo chown username:www-data -R wp-content
た場合は、ドメインのルートにいるときに行います。
仮定すると:wp-config.phpあり
、ローカルホスト上でFTP証明書を
define('FS_METHOD','direct');


10
-1。あなたはない、NOTのwp-コンテンツを除き、WWW-データは、WordPressのファイルへの書き込みアクセス権を持っていると思います。
Calimo、2014年

wp-contentの775が役立ちます。ファイルは644、フォルダは755、chown user:www-dataの場合、メディアのアップロードやプラグインの更新などでまだ問題が発生することがありました。775を使用すると、www-data:www-dataでwp-contentを変更することもできます、問題を解決します。
guylabbe.ca 16

-Rは低速で不要なため、find / chmodコマンドから削除してください。
アダムヒメネス

20

このhttps://wordpress.org/support/article/changing-file-permissions/のワードプレスのドキュメントを読むのが最善です

  • すべてのファイルは、httpdプロセスに使用されるユーザーアカウントではなく、実際のユーザーのアカウントが所有する必要があります
  • Webサーバープロセスのアクセス許可の確認に関する特定のグループ要件がない限り、グループの所有権は関係ありません。これは通常は当てはまりません。
  • すべてのディレクトリは755または750である必要があります。
  • すべてのファイルは644または640である必要があります。例外:サーバー上の他のユーザーがファイルを読み取れないようにするには、wp-config.phpを440または400にする必要があります。
  • ディレクトリをアップロードする場合でも、ディレクトリに777を与えることはできません。phpプロセスはファイルの所有者として実行されているため、所有者の権限を取得し、755ディレクトリにも書き込むことができます。

4
なぜあなたが反対票を投じたのかわからない:まるで人々がトップアンサーをインストールを安全でないままにする方法であることを望んでいるかのようです!
BCran 2017

リンクが古くなっています。ここに新しいもの:wordpress.org/support/article/changing-file-permissionsそして、実際のドキュメントを参照している唯一の人であることに感謝します!
Everyman '13 / 09/19

wp-config.phpが400の場合、Apacheはページの読み込み時にそれをどのように含める(つまり、読み込む)べきですか?
マーティンブラウン

14

権限を次のように設定します。

    # 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 =現在のユーザーとルートグループ

これらの権限により、権限を要求することなくthemesyour-pluginフォルダとフォルダの下での開発にアクセスできます。残りのコンテンツは、WPがファイルシステムを管理できるように、ApacheまたはNginxユーザーが所有します。

git repoを作成する前に、まず次のコマンドを実行します。

# Set all directories permissions to 755
find . -type d -exec chmod 755 {} \;

# Set all files permissions to 644
find . -type f -exec chmod 644 {} \;

11
やった!決して777を実行しないでください。これを読んでいる(新しい)人々にこれをアドバイスしないでください。
Karlo

ファイルやフォルダはhttpプロセスによって所有されるべきではありません-これは主要なセキュリティギャップです。悪意のあるユーザーがプラグイン、テーマ、またはワードプレス自体にエクスプロイトを見つけた場合、コードをアップロードしてapacheで実行し、アクセスすることができます-私はそれを直接目にしました:(
DropHit

10

ファイルの正しい権限は644ですフォルダの正しい権限は755です

権限を変更するには、ターミナルと次のコマンドを使用します。

find foldername -type d -exec chmod 755 {} \;
find foldername -type f -exec chmod 644 {} \;

フォルダーの場合は755、ファイルの場合は644。


1
残念ながら、uploads&plugins&themesフォルダーのアクセス許可を775に変更する必要があります。ワードプレスをアップグレードする場合は、すべてのフォルダーを775に変更する必要があります。このセクションでは、アップグレード中にアクセス許可でエラーがポップアップ表示されます。 /プラグイン、テーマの変更、メディアのアップロード。
erginduran 2017年

8

デフォルトのワードプレスサイトには、以下のルールが推奨されると思います。

  • wp-content内のフォルダーの場合、0755権限を設定します。

    chmod -R 0755プラグイン

    chmod -R 0755アップロード

    chmod -R 0755アップグレード

  • 上記のwp-contentのディレクトリの所有者をapacheユーザーとします。

    chown apacheアップロード

    chown apacheアップグレード

    chown apacheプラグイン


1
次のように、ディレクトリの権限を再帰的に設定することもできます。chown -R apache uploads。また、必要に応じて、グループにapacheの所有権を与えることもできます
。chgrpapache

8

一部のプラグインはワードプレスのルートドキュメントを変更するため、実際に使用するプラグインによって異なります。しかし、一般的に私はこのようなものをワードプレスディレクトリに推奨します。

これにより、すべてのファイル/フォルダーのユーザーとして「ルート」(または使用しているユーザー)が割り当てられます。Rは再帰を意味するため、「html」フォルダーで停止することはありません。Rを使用しなかった場合は、「html」ディレクトリにのみ適用されます。

sudo chown -R root:www-data /var/www/html  

これにより、「wp-content」の所有者/グループが「www-data」に設定され、Webサーバーが管理パネルからプラグインをインストールできるようになります。

chown -R www-data:www-data /var/www/html/wp-content

これにより、「html」フォルダ内のすべてのファイル(サブディレクトリ内のファイルを含む)の権限が644に設定されるため、外部のユーザーはファイルを実行できず、ファイルを変更できず、グループはファイルを実行できず、ファイルを変更できます。ユーザーはファイルの変更/読み取りを許可されていますが、ユーザーでもファイルを実行することはできません。これは「html」フォルダーでのあらゆる種類の実行を防ぐために重要です。また、htmlフォルダーとwp-contentフォルダーを除く他のすべてのフォルダーの所有者が「root」(またはユーザー)であるため、www-dataはt wp-contentフォルダー以外のファイルを変更します。これにより、Webサーバーに脆弱性があり、誰かが不正にサイトにアクセスした場合でも、プラグイン以外のメインサイトを削除することはできません。

sudo find /var/www/html -type f -exec chmod 644 {} +

これにより、「wp-config.php」へのアクセス許可が、rw-r -----これらの許可を持つユーザー/グループに制限されます。

chmod 640 /var/www/html/wp-config.php

そして、プラグインまたはアップデートがアップデートできないとクレームした場合は、SSHにアクセスしてこのコマンドを使用し、「www-data」(Webサーバー)に一時的な許可を与えて、管理パネルからアップデート/インストールしてから、元に戻します。完了したら、「root」またはユーザーに戻ります。

chown -R www-data /var/www/html

Nginx(apacheと同じ手順)では、wp-adminフォルダーを不正アクセスやプローブから保護します。nginxがインストールされている場合でも、パスワードの暗号化にはapache2-utilsが必要です。同じファイルにさらにユーザーを追加する場合は、cを省略します。

sudo apt-get install apache2-utils
sudo htpasswd -c /etc/nginx/.htpasswd userName

この場所にアクセスしてください

/etc/nginx/sites-available/

このコードを使用して、「wp-admin」フォルダをパスワードで保護します。「wp-admin」にアクセスしようとしたかどうかをパスワード/ユーザー名に尋ねます。ここでは、暗号化されたパスワードを含む「.htpasswd」ファイルを使用しています。

location ^~ /wp-admin {
    auth_basic "Restricted";
    auth_basic_user_file /etc/nginx/.htpasswd;
    index  index.php index.html index.htm;
}

ここでnginxを再起動します。

sudo /etc/init.d/nginx restart

rootユーザーの使用は推奨されません。より危険な場合があります。新しいユーザーを作成して、sudoグループに追加します
erginduran

ここではルートを使用するように主張しませんでした。例としてルートを使用しました。ルートを使用する代わりに、任意の名前を使用できます。
ドンディランガ2017年

2

コマンド:

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

1
chown username:www-dataである必要があります。それ以外の場合はファイルを編集できません
malhal

$(whoami)代わりに使用できますftp-user。独自のサーバー(ローカル、vpsなど)を使用している場合、デフォルトでは、現在のユーザー(rootではなく)がFTPユーザーです
Juanjo Salvador

2

あなたのウェブサイトが安全であること、そしてあなたがあなたのフォルダに正しい許可を使用していることを確実にするには、以下のようなセキュリティプラグインを使用してください:

https://en-ca.wordpress.org/plugins/all-in-one-wp-security-and-firewall/

https://en-ca.wordpress.org/plugins/wordfence/

これらのプラグインは、Wordpressインストールをスキャンし、潜在的な問題について通知します。これらは、安全でないフォルダのアクセス許可についても警告します。それに加えて、これらのプラグインは、フォルダにどの権限を割り当てる必要があるかを推奨します。


2
chown -Rv www-data:www-data
chmod -Rv 0755 wp-includes
chmod -Rv 0755 wp-admin/js
chmod -Rv 0755 wp-content/themes
chmod -Rv 0755 wp-content/plugins
chmod -Rv 0755 wp-admin
chmod -Rv 0755 wp-content
chmod -v 0644 wp-config.php
chmod -v 0644 wp-admin/index.php
chmod -v 0644 .htaccess

1

これが正しいかどうかはわかりませんが、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 {} \;


1

wp_configファイルで定義します。

/var/www/html/Your-Project-File/wp-config.php

define( 'FS_METHOD', 'direct' );

chown-ファイル/ディレクトリの所有権を変更します。つまり。ファイル/ディレクトリの所有者は指定されたものに変更されますが、権限は変更されません。

sudo chown -R www-data:www-data /var/www

0

私のサイトでのすべての読書と苦痛に基づいており、ハッキングされた後、Wordfenceと呼ばれる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を使用した自動更新が可能になります。したがって、上記のアクセス許可は、必要に応じてまれな場合を除いて、緩める必要はありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.