マルチユース型クラウドサービスWORKS実績COLUMNコラムCOMPANY会社概要お問い合わせHOMECOLUMNWEBサーバーのファイルパーミッションについてCOLUMN2013.04.05エンジニア日記WEBサーバーのファイルパーミッションについてShareWEBサイトやWEBシステムをWEBサーバー上に設置する際に、ファイルのパーミッションの問題に遭遇するケースが度々あると思います。そこで、WEBサーバーにおいてのファイル・ディレクトリのパーミッションについて考えてみたいと思います。ファイルパーミッションとはまず、ファイルのパーミッションとは何か。その他のユーザーに対するファイルへのアクセス権限のデータを持っています。ファイルのアクセス権限は3つあり、Read(読み込み)、Write(書き込み)、eXecute(実行)の権限が設定されています。それぞれの権限を数字で表すことができ、Readは4、Writeは2、eXecuteは1とされていて、この数字を足すことでファイルの権限を表すことができます。この数字をファイル所有者、グループ、その他のユーザーに対する権限として3つ並べることで、ファイルへのアクセス権限が表現されます。644はオーナーに読み込み・書き込み権限、グループに読み込み権限、その他のユーザーに読み込み権限が与えれている設定です。グループはそのユーザーのメイングループ(メイングループ、サブグループについては後述します)となります。考えてしまうかもしれませんが、それは間違いです。(結果としては同じ設定になりますが。)上記が間違っている理由は、一般の人はブラウザを通して、WEBサーバー上に設置されているファイルに直接アクセスしているわけではないからです。ファイルに直接アクセスしているのは、Apacheというプログラムで、Apacheはブラウザから指定されたファイルを読み込み、その内容をブラウザに渡しています。Apacheがファイルの読み込みを行えるパーミッションにする必要があります。プログラムがファイルにアクセスする際のユーザーカテゴリーは、プログラムの実行者に属します。一般的な設定では、Apacheのプログラムを実行しているユーザーは、apacheという名前の普通のユーザーでして、これはその他のユーザーのカテゴリに属します。htmlファイルなどのWEBに公開するファイルのパーミッションは、その他のユーザーに読み込み権限を与えればいい、ということになります。PHPファイルは?PHPファイルはプログラムなどで、実行権限が必要と考えてしまいますが、Apacheのデフォルトの設定では読み込み権限があれば動作します。読み込み権限のみ与えておけば大丈夫です。ログファイルなどのプログラムから書き込まれる必要があるファイルには、書き込み権限を与える必要があります。ディレクトリは?ディレクトリのパーミッションもRead、Write、eXecuteで表され、ファイルのように数字でも表現されますが、若干認識が異なります。一般的なディレクトリのパーミッションとしては、その他のユーザーに5と設定すれば良いと思います。プログラムからファイルをアップロードされるディレクトリには書き込み権限も与え、7と設定すれば良いと思います。Linuxになれていないとグループというものがイメージしづらいと思います。グループって普通は1つのものが複数のグループに属することができますよね。上記で見たとおり、1つのファイルに対してファイルのグループは1つになっています。メイングループとしては1つのグループのみに属することしかできません。ファイルのグループというのは、ファイルの所有者のメイングループということになります。グループのアクセス権限が適応されることになります。まとめWEBに公開するファイルのパーミッションは基本的には644、ディレクトリは755となると思います。上記のメイングループ、サブグループの違いを考慮してファイル・ディレクトリに対するパーミッションを設定する必要がでてきますね。