Articles

WordPress Permissions – How To Set Up Proper Filesystems And Ownerships

Benjamin Intal
  • 12 min read
  • WordPress,Servers,Security,Techniques (WP)

  • Saved for offline reading
  • Share on Twitter.com

Save for offline readingShare on Twitter, LinkedIn

WordPress セキュリティについて話すとき、ファイルのパーミッションと所有権は通常最後の関心事となります。 セキュリティ プラグインをインストールすることは良い習慣であり、すべての WordPress ウェブサイトに必要です。 しかし、ファイル システムのパーミッションが正しく設定されていないと、ほとんどのセキュリティ対策が侵入者によって簡単にバイパスされてしまいます。

WordPress のセキュリティについて話すとき、ファイルのパーミッションと所有権は通常、最も重要なことではありません。 セキュリティ プラグインをインストールすることは良い習慣であり、すべての WordPress ウェブサイトに必要です。 しかし、ファイル システムのパーミッションが正しく設定されていないと、ほとんどのセキュリティ対策が侵入者によって簡単にバイパスされてしまいます。

wordpress permissions

パーミッションと所有権は、WordPress インストールにおいて非常に重要です。 Web サーバー上でこれらを適切に設定することは、WordPress をインストールした後に最初に行うべきことです。 間違った権限を設定すると、致命的なエラーが発生し、Web サイトが停止してしまう可能性があります。 また、間違ったパーミッションは、あなたのウェブサイトを危険にさらし、攻撃されやすくする可能性があります。

SmashingMagでさらに読む:

  • What To Do When Your Website Goes Down
  • How To Keep Your Coding Workflow Organized
  • How to find out why your website stopped working
  • 9 Steps To A Happy Relationship With Your Hosting Provider

セキュリティに関する懸念以外に、多くの問題が間違った権限と所有権を持つことによって引き起こされる可能性があります。 あるいは、メディア・アップローダーで画像をアップロードしようとしたときに、エラーメッセージが表示されたことはありませんか?

この記事では、WordPress のファイルシステムの権限と所有権について、それらが何であるか、なぜ重要であるか、どのように設定するかについて、すべてを説明します。 私がファイルシステムを維持するために従っている、いくつかの基本原則を学びます。 また、最も一般的な2つのWordPressサーバーの構成についても説明します。 これらの違いがどのようなものか、さらに重要なこととして、それぞれに適切なパーミッションと所有者を設定する方法について説明します。 FTP クライアント

この記事のコースでは、ターミナルを使用してパーミッションと所有権を変更します。 なぜ、代わりに FTP クライアントを使用しないのでしょうか。 その理由は、FTP は私たちのニーズに対して少し制限されているからです。 FTP は、ファイルの転送やファイルおよびフォルダーのアクセス権の変更には使用できますが、所有権設定の変更には使用できません。

この記事に記載されているコマンドを実行するには、SSH コマンドを使用してサーバーにログインしている必要があります。 ターミナルおよび SSH に慣れていない場合は、「Linux コマンド入門」の記事で学ぶことができます。

ユーザーとグループ

何よりも先に、ユーザーとグループとは何かについて簡単に説明する必要があるでしょう。 つまり、FTP を使用してファイルを転送するたびに、サーバー上のユーザー アカウントを使用することになります。 そして、ホストがどのようにアカウントを設定したかによって、あなた(ユーザー)は一つまたはそれ以上のグループに属しているかもしれません。 ユーザーとグループは、WordPressにおけるユーザーとロールのようなものです。 前者がサーバー上で使用されることを除けば、両方とも概念的には同じです。

ユーザーとグループは、すべてのファイルとフォルダーの権限を識別するのに役立つので、重要です。 通常、ファイルの所有者はそのファイルに対して完全な特権を持ち、同じグループに属する他のユーザーはそのファイルに対してより少ない特権を持ち、他のすべての人はそのファイルに対して何の特権も持たないかもしれません。 これらの特権を私たちはパーミッションと呼んでいます。

What Are File Permissions?

パーミッションは、ユーザーがファイルに対して何ができるかを決定します。 パーミッションは、644777 のような数字の集合で表され、パーミッションモードと呼ばれます。 WordPressでプラグインを使用したことがある方は、プラグインがファイルやディレクトリに書き込めないのでパーミッションを変更してほしいと言われたことがあるのではないでしょうか。 ファイルのアクセス権を変更することにより、Web サーバーがそのファイルまたはフォルダーにアクセスできるようになります。

権限モードを「誰が何をできるか」というステートメントのセットと考え、各桁はステートメントの「誰」の部分に対応します:

  • 1桁目の数字です。 ファイルを所有するアカウントのユーザーができること
  • 2桁目。 所有者のグループに属する他のユーザーアカウントができること
  • 3桁目。 他のすべての人のユーザーアカウント(ウェブサイトの訪問者を含む)ができること

次に、この数字は文の「何」の部分に相当し、これらの数字のいずれかの組み合わせの合計である。

  • 4 ファイルの読み取り、またはフォルダ内のファイル名の読み取り
  • 2 ファイルの書き込み、またはフォルダの内容の変更
  • 1 ファイルの実行、またはフォルダ内のファイルのアクセス

これらの数字は許可モードで “who” に割り当てられる権限である。 上のリストでは、特権はファイルとフォルダーで異なる意味を持つことに注意してください。

正しい許可モードを使用することは非常に重要です。 これをよりよく説明するために、WordPress のユーザーとロールをもう一度考えてみてください。 WordPress Web サイトでは、投稿者と管理者は異なる機能のセットを持っています。 投稿者は新しいブログ記事を作成することができますが、プラグインを追加することはできません。 一方、管理者は、プラグインを追加したり、ブログの記事を作成したりすることができます。 管理者は、ウェブサイトの外観を変更することもできます。 役割の異なるユーザーができることを明確に分けているのです。 これは、ブログ投稿やテーマ オプションを扱う代わりに、サーバー上のファイルやフォルダーを扱うことを除けば、権限モードと同じです。

権限モードの変更

FTP クライアントには通常、ファイルやフォルダーの権限モードを簡単に変更できるインターフェイスが用意されています。 以下は、私の FTP クライアントのインターフェイスのスクリーンショットです:

Example of a permission mode interface.
Example of a permission mode interface.

サーバーのターミナルにアクセスできる場合、chmod コマンドを使ってファイルまたはフォルダーの許可モードを変更することも可能です:

sudo chmod 644 <file>

すべてのファイルまたはフォルダーに対して許可モードを変更するには、find コマンドと同時に chmodを使用して下さい。 たとえば、すべてのファイルを 644:

sudo find . -type f -exec chmod 644 {} +

またはすべてのフォルダを 755:

sudo find . -type d -exec chmod 755 {} +

に変更するには、「WordPress Codex でファイルのパーミッションを変更する」を参照してください。

The Difference Between 644 And 777

Let’s look at some permission modes and how they affect our website.

What would the PHP script with a permission mode of 644 mean? 許可モードがどのように機能するかについての上記の説明に従って、このモードによってユーザーが私たちのスクリプトでできることを解読することができます。

  • オーナーの権限は “read” (4) + “write” (2) = 6
  • オーナーのグループの権限は “read” (4) = 4
  • 他のすべての人の権限は “read” (4) = 4

これは平たく言うと、次のことを意味するのだそうです。

  • スクリプトを所有している場合、私たちはそれを読んで変更することができます。

見てわかるように、644 は PHP スクリプトにとって良い権限モードです。

次に、フォルダーについて見てみましょう。 もし、権限モードが 777 であるフォルダを所有していたらどうでしょうか。 このパーミッションモードは、次のように分解できます。

  • 所有者の権限は「読み取り」(4)+「書き込み」(2)+「実行」(1)= 7
  • 所有者のグループの権限は「読み取り」(4)+「書き込み」(2)+「実行」(1)= 7です。
  • 他のすべての人の権限は、「読み取り」(4)+「書き込み」(2)+「実行」(1)= 7

つまり、

  • 誰でも、このフォルダー内のファイル名のリストを取得できるのです。
  • 誰でも私たちのフォルダー内の任意のファイルを作成、変更、および削除することができます;
  • 誰でも私たちのフォルダー内のファイルにアクセスできます。

WordPress ウェブサイト上のあらゆるものに対して、777 が悪いパーミッション モードであることは明らかです。 さらに悪いことに、誰でも悪意のあるコードを入れて、Web サイトを危険にさらすことができるようになります。

WordPress サーバーの設定

さて、権限とその読み方について理解しました。 しかし、すべてのパーミッションの変更に進む前に、サーバーがどのように設定されているかを理解する必要があります。 パーミッションはユーザー アカウントとグループを扱うため、WordPress Web サイトがどのように実行されているかを知る必要があります。

多くの異なるサーバー構成が存在します。 異なる構成では、WordPress が正しく安全に動作するために、異なる権限モードのセットが必要です。 ここでは、最も一般的な 2 つの構成と、それらに適した権限について説明します。

  • 標準のサーバー構成:
    • ユーザー アカウントがある。
    • 別のユーザー アカウントとして Web サーバーを実行する。
  • 共有サーバー構成または suEXEC 構成:
    • ユーザー アカウントがある。
    • サーバーを使用する他のユーザーはユーザー アカウントがあり、あなたのユーザー アカウントと同じグループを共有するかもしれない。
    • Web サーバーは WordPress ファイルの所有者として実行されます。

    これらの 2 つの主な違いは、Web サーバーの実行方法です。

    Permissions For A Standard WordPress Server Configuration

    標準の WordPress 構成は、Web サーバーがユーザー アカウントと関係がないため、共有サーバー構成よりも少し作業が必要です。

    WordPress のファイルとフォルダーの所有権

    最初に、WordPress ファイルのファイルおよびフォルダーの所有権を調整する必要があります。 次のことを確認する必要があります。

    • WordPress のすべてのファイルとフォルダーの所有者が自分のユーザー アカウントであること、
    • 自分のユーザー アカウントと Web サーバーのユーザー アカウントが同じグループに属していることです。

    自分のユーザーアカウントが属するグループを調べるには、サーバーのターミナルでこのコマンドを使用します。

    groups

    次に、Web サーバーが属するグループを調べるには、WordPress スクリプトの 1 つにこの PHP スニペットを一時的に挿入してください。

    echo exec( 'groups' );

    自分のユーザーとWebサーバーが同じグループに属していない場合、ターミナルで次のコマンドを使用して、自分のユーザーをWebサーバーのグループのいずれかに追加できます。

    sudo usermod -a -G <a-common-group-name> myuser

    最後に、WordPress フォルダー内のすべてのものが、先ほど追加したユーザー アカウントと共有グループに属していることを確認するために、WordPress フォルダーで次のコマンドを実行します。 さて、次はパーミッションモードを調整する番です。 3965>

    • すべてのファイルは 664.
    • すべてのフォルダーは 775.
    • wp-config.php660.

    ここで、この一連の許可モードで実現しようとすることは、次のとおりです:

    • ユーザーアカウントはファイルを読み取り、変更することができます。
    • WordPress (私たちの Web サーバー経由) はスクリプトを読み取り、変更できます。
    • WordPress はファイルとフォルダーを作成、変更または削除できます。 心配しないでください。WordPress がファイルを作成および変更するために特定の機能を必要とするため、このようにしているのです。 WordPress では、テーマやプラグインのアップロードと削除、さらには管理用バックエンドからのスクリプトとスタイルの編集が可能です。

      FTP クライアントを使用して許可モードを変更するか、WordPress ディレクトリで次のコマンドを使用して、すべてのファイルとフォルダーの許可をすばやく調整できます:

      sudo find . -type f -exec chmod 664 {} +sudo find . -type d -exec chmod 775 {} +sudo chmod 660 wp-config.php

      一部の Web サーバーは他より厳しいことに注意してください。 あなたのサーバーが厳しい場合、wp-config.php660に設定すると、あなたのウェブサイトが動作しなくなる可能性があります。 この場合、664のままにします。

      共有サーバー構成または SuEXEC 構成の権限

      共有サーバー構成の権限は、より簡単に実装することができます。 Web サーバーはファイルおよびフォルダーの所有者として実行されるため、所有権について深く考える必要はありません。 ユーザー アカウントと Web サーバーは同じ権限を共有しているので (どちらも所有者)、権限モードの変更にすぐに取りかかることができます。

      • すべてのファイルは 644.
      • すべてのフォルダーは 755.
      • wp-config.php600.
      • でなければならない。

    以前の権限モードのセットと同様に、これらは次のように分割されます:

    • ユーザー アカウントはファイルを読み取り、変更できます。
    • WordPress (Web サーバーを介して、アカウント所有者として) スクリプトを読み取り、変更できます。
    • WordPress はファイルやフォルダーを作成、変更、削除することができます。
    • 他のユーザーは wp-config.php のデータベース認証情報を見ることはできません。

    再度、FTP クライアントを使用して許可モードを変更するか、WordPress ディレクトリで次のコマンドを使用してすべてのファイルとフォルダの許可をすばやく調整できます:

    sudo find . -type f -exec chmod 644 {} +sudo find . -type d -exec chmod 755 {} +sudo chmod 600 wp-config.php

    標準の WordPress サーバー構成と同様に、サーバーは他よりも厳しく、wp-config.php600 に許可しない可能性があります。 この場合、より甘い 640 に調整することができます。それでもうまくいかない場合は、644 を使用してください。

    常にこれらのガイドラインに従ってください。WordPress ファイルは侵入者から安全に保たれます。

    Common Pitfalls

    人々がよくやる間違いは、uploads フォルダを 777 に設定することです。 ホームページに画像をアップロードしようとするとエラーが出るので、これを行う人もいますが、777はこの問題をすぐに解決してくれます。 しかし、決して誰にでも無制限にアクセスできるようにしてはいけません。そうしないと、Webサーバーが攻撃されやすくなってしまいます。 この記事で取り上げたガイドラインに従えば、Web サイトへのファイルのアップロードに問題はありません。

    しかしながら、時には、プラグインがファイルを 777 に設定するよう要求することがあります。 このような場合、一時的に 777 に設定することができますが、終了したら必ず元の権限モードに戻してください。

    まとめ

    ここまで、WordPress Web サイトの適切な権限とファイルの所有権について学んできました。 また、777のパーミッションモードは、Webサーバーを危険にさらすので、避けるようにすることも学びました。