web-dev-qa-db-ja.com

WordPressのファイル許可を修正する

here を見たことがありますが、最良のファイル許可に関する詳細は見つかりませんでした。 ここでも についてのWordPressのフォームの質問をいくつか見てみましたが、777を示唆する誰もが明らかにセキュリティの面で少しのレッスンが必要です。

要するに私の質問はこれです。次のものに対してどのような権限を付与する必要がありますか。

  1. すべてのWordPressコンテンツを保存するルートフォルダ
  2. wP管理者
  3. wPコンテンツ
  4. wPインクルード

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

345
John Crawford

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--

セットアップ後、アクセス権を強化する必要があります、に従って Hardening 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-datasuで変更し、
  • wp-contentグループに書き込みアクセス775を与え、グループに参加しますwww-dataまたは
  • ACLs を使用して、ユーザーにフォルダへのアクセス権を与えます。

何をするにしても、ファイルにwww-dataのrwパーミッションがあることを確認してください。

451
ManuelSchneid3r

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

chown www-data:www-data -R *

ただし、WordPressとそのプラグインをインストールまたはアップグレードしているときには便利です。しかし、あなたが終了したとき、それはもはやWebサーバによってwpファイルを所有しておくのは良い考えではありません。

それは基本的にウェブサーバがあなたのウェブサイトのファイルを置くか、または上書きすることを可能にします。これは、誰かがあなたのWebサイトにファイルを置くためにWebサーバ(あるいはいくつかの.phpスクリプトのセキュリティホール)を使うことをどうにかしてあなたのサイトを引き継ぐ可能性があることを意味します。

あなたのサイトをそのような攻撃から守るためにあなたは次のことをすべきです:

すべてのファイルはあなたのユーザーアカウントによって所有され、あなたによって書き込み可能であるべきです。ホスティング設定で必要な場合、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

52
Kornel

自分のホームフォルダの下に自分のwordpressルートフォルダがある人のために:

** Ubuntu/Apache

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

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

あなたのユーザで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のようになります。

PSプラグインを更新するときに誰かがエラー'could not create directory'に遭遇したならば、してください:
[email protected]:~/domainame.com$ Sudo chown username:www-data -R wp-content
あなたがあなたのドメインのルートにいるとき。
仮定:wp-config.phphas
LocalHostのFTP認証情報
define('FS_METHOD','direct');

23
Jadeye

アクセス権を次のように設定しました。

    # 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 {} \;

私の場合は、Webからそのユーザーが所有するファイルへのアクセスを防止する、Apacheのデフォルトユーザーとは異なるWordPress用の特定のユーザーを作成しました。

それから、アップロードフォルダを処理し、最終的に十分なファイルとフォルダのアクセス許可を設定します。

_編集済み_

W3C Total Cacheを使用している場合は、次の手順も実行する必要があります。

chmod 777 wp-content/w3tc-config
chmod 777 wp-content/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サイトを開発してしばらくして、環境ごとに異なるファイル権限をお勧めします。

本番環境では、ファイルシステムを変更するためのアクセス権をユーザーに与えることはできません。リソースをアップロードし、バックアップを行うために特定のフォルダにアクセスすることだけを許可します。サーバー、ステージングやプロダクションに関する良いアップデートプラグインではありません。プロダクションファイルの設定はここに残します。

# 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リポジトリを作成する前に、まず以下のコマンドを実行します。

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

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

これに関するワードプレスのドキュメントを読むのが一番です https://codex.wordpress.org/Changing_File_Permissions

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

ファイルの正しいアクセス許可は644ですフォルダの正しいアクセス許可は755です

権限を変更するには、terminalコマンドと次のコマンドを使用します。

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

フォルダは755、ファイルは644です。

9
Kappa

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

これは、すべての単一のファイル/フォルダ内のユーザとして「ルート」(または使用しているユーザが何でも)を割り当てます。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はWebサーバーに脆弱性があり、誰かがそのサイトに不正にアクセスした場合でも、プラグイン以外のメインサイトを削除することはできません。

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

これは "wp-config.php"へのアクセス権限をrw-r -----これらの権限でuser/groupに制限します。

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

そして、プラグインやアップデートがアップデートできないと訴えた場合は、SSHにアクセスしてこのコマンドを使用し、 "www-data"(ウェブサーバ)に一時的な許可を与えて管理パネルからアップデート/インストールしてから元に戻します。それが完了したら、 "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
7
Don Dilanga

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

  • Wp-content内のフォルダには、0755権限を設定してください。

    chmod -R 0755プラグイン

    chmod -R 0755アップロード

    chmod -R 0755アップグレード

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

    chown Apacheがアップロードしたもの

    chown Apacheのアップグレード

    chown Apacheプラグイン

7
shasi kanth
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
2
Grapehand

コマンド:

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
2

OS Xの場合は、次のコマンドを使用してください。

Sudo chown -R www:www /www/folder_name
1
Abduhafiz

Wp_configファイルで定義してください。

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

define( 'FS_METHOD', 'direct' );

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

Sudo chown -R www-data:www-data /var/www
1
Harish Verma

これが正しいかどうかはわかりませんが、Google Compute App Engine上でBitnamiイメージを使用しています。私はプラグインと移行に問題があり、パーミッションを変更することでさらに問題を解決したところ、これら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
wayofthefuture

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

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

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

これらのプラグインはあなたのWordpressのインストールをスキャンし、潜在的な問題についてあなたに通知します。これらは、安全でないフォルダのアクセス許可についても警告します。それに加えて、これらのプラグインはどのパーミッションをフォルダに割り当てるべきかをあなたに勧めます。

1
user296526

私自身のサイトでのすべての読みと苦悩に基づいて、ハッキングされた後、私は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がそのログにアクセスできるようにします。 uploadsディレクトリは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 bundeldの問題によりPHP7.0で動作しませんでした。幸い、 ssh-sftp-updater-support (無料)という非常に信頼性の高いプラグインを使用すると、libssh2を使用せずにSFTPを使用した自動更新が可能になります。そのため、まれに必要に応じて上記の許可を緩める必要はありません。

0
spinozarabel