楽しいだけで十分です

好きなことを書きます

Webサーバー(Apache)のパーミッション

CentOS7を使って、Apacheの勉強をしていたのですが、パーミッションエラーなどでよくエラーになったので、整理してみました。
前半が、前提知識としてLinuxパーミッション設定の話、後半がApacheパーミッション設定の話になってます。

Linuxパーミッション

所有権

種類 意味
Owner (所有者) ファイル or ディレクトリの所有者
Group (グループ) ファイル所有者の所属グループ
Other (その他) その他の全てのユーザー

実行権

種類 アルファベット表記 数字表記
Read (読み込み) r 4
Write (書き込み) w 2
Execute (実行) x 1
権限なし - 0

実行権は、ファイルの場合とディレクトリの場合で意味が異なります。

ファイルの場合

種類 説明
Read lessコマンドなどを利用してファイルを読み込むこと
Write テキストエディタなどによる上書き・rmコマンドなどによる削除
Execute スクリプトファイルなどのプログラムを実行すること

ディレクトリの場合

種類 説明
Read lsコマンドなどを利用して、対象のディレクトリの中にあるファイルを確認すること
Write 対象のディレクトリのファイルを作成・削除すること
Execute cdコマンドなどで、対象のディレクトリにアクセスできる権限

Webサーバー(Apacheなど)のパーミッション

  • Apacheのユーザーである、apacheユーザーに権限があるかを意識すると良いです。
  • HTMLなどの静的なコンテンツでも、PHPのようなプログラムでも、基本的にはapacheユーザーに読み込み権限があれば動作します。

HTMLなどの静的コンテンツの場合

  • Webページはブラウザを通して一般ユーザーがアクセスするため、Otherに読み込み権限を与えればいいように感じますが、それは間違いです。
  • 実際には、ブラウザのリクエストを元にApacheがファイルを読み込み、その内容をブラウザに返しています。そのため、apacheユーザーに読み込み権限が必要です。

PHPを実行する場合

  • Apacheのデフォルト設定では、Apacheの一部である、モジュールの機能を利用してPHPを実行します。
  • この時には、ApachePHPスクリプトファイルを読み込んで、PHPモジュールとしてプログラムを実行するため、apacheユーザーに読み込み権限があれば実行できます。実行権限は不要です。

参考にしたサイト様