▼ パーミッションについて



PHP+MySQLが利用可能な本格派レンタルサーバ

.htaccessファイルや.htpasswdのパーミッションは、644ではなく、604にすべきであると説明しました。ここで、パーミッションについて少し考えてみましょう。そもそも、「644」とか「604」というのは、六百四十四とか六百四というような数字ではなく、それぞれの桁の数字は、特定のファイル・ディレクトリーに対して、前から「オーナー」「グループ」「その他(nobody)」に与えられている権限を数値化したものです。この場合、オーナーが6、グループが4(もしくはゼロ)、その他が4となります。

この「6」とか「4」がどこから来るかと言えば、

rread読み出し可能4
wwrite書き込み可能2
xexcute実行可能1

「6」とは「4+2」に分解され、上の表に照らし合わせてみれば、「読み出し可能」で「書き込み可能」という意味になります。オーナーとはファイルの所有者のことですから、読み出す(=4)こともできなければなりませんし、ファイルを適宜修正できなければなりませんし(書き込み可能=2)。.htaccessはCGIのように実行する必要はありませんので、「7」=「4+2+1」にする必要はありません。また、.htaccessはブラウザが解釈できないといけませんので、必ずnobodyに権限を付与し読み込み可能(+4)にする必要があります。もし、ここで間違って、「その他(nobody)」に対しても書き込み可能(+2)にしてしまえば、(同じサーバ内にあるCGIファイルなどにセキュリティホールがある場合).htaccessファイルや.htpasswdファイルがブラウザ経由でも修正削除が可能になり大変なことになります。

ですので、オーナーは「6」、「その他(nobody)」は「4」となります。そして、真ん中の数字、すなわちグループの数は、共有サーバでは必ずゼロにすべきです。そうでないと、telnet経由で他のユーザーによる閲覧が可能になる場合があります。結果として、.htaccessのパーミッションは604にすべきです。(ただ、レンタルサーバの中にはユーザーマニュアルで644を推奨しているところもありますので、私の知らないところで、実は644でないと動かないケースもあるのかもしれません。それぐらい644と書いているページが多いのも事実です。)