目次
1. はじめに
エックスサーバーのマニュアルによると、Webサイトを公開する際に推奨されるファイルのパーミッション(アクセス権限)は以下のように説明されています。
2. 疑問点など
推奨されるパーミッションに関して、疑問点などを書いていきます。
2.1. .html / .php / .zip などのファイル
.html や .php は「644」となっています。
「644」を別の表記にすると「rw-r–r–」であり、これは以下を表します。
- 所有者:rw → 読み取り、書き込み
- 所有グループ:r → 読み取り
- その他:r → 読み取り
例えば、エックスサーバー上のあなたのアカウント名を foo とした場合、通常作成したファイルの所有者と所有グループは以下となります。
- 所有者:foo
- 所有グループ:members
これに対して、Webサーバーは以下の権限で実行されます。
- 実行ユーザー:foo
- 実行グループ:members
※ 例えば、PHPの exec関数を使い、id
コマンドを実行すると分かります。
これらを踏まえると、Webサーバーの実行ユーザーが foo であるので、ファイルの所有者と一致し、この場合「所有者のパーミッション」が適用されます[1]。そうすると「読み取り」が許可されているので問題なく .html や .php を読む込むができるはずです。「所有グループ」や「その他のユーザー」に対して、読み取り権限を与える必要はありません。であれば、.html や .php ファイルに設定するパーミッションは例えば「rw——- (600)」でよいはずです。ではなぜ「rw-r–r– (644)」が推奨されているのか?が疑問になります。
2.2. フォルダ
フォルダの推奨されるパーミッションは「755, 705 のいずれか」とありますが、先ほどの流れからすると、所有者だけにパーミッションを与えれば十分なので「700」でよいのでは?となります。しかも「755」だけでなく、「705」も挙げられているのは、どういう理由からでしょうか? 「所有グループ」と「その他のユーザー」を区別する理由が分かりません。歴史的経緯?
[1] Linux file permissions explained
2.3. .txt / .dat / .log などのファイル
推奨パーミッションは「600」で、実はこれは Webからアクセスできない設定です。これらのファイルの場合、Webからアクセスできないことが、「推奨」や「適切」であるということなのでしょう。Webからアクセスさせたい場合は、例えば「604」にします。「004」でもよいです。このことから、これらのファイルに対しては、foo ではなく「その他のユーザー」でアクセスされている可能性があります。
2.4. .pl ファイル(Webから直接指定してアクセスする場合)
最小のパーミッション設定は「500」です。つまり、所有者に対して「読み取り」と「実行」権限だけ与えておけば、Webサーバーは foo ユーザーの権限でアクセスしてくるので、.pl ファイルが実行できます。
2.5. .htaccess ファイル
最小のパーミッション設定は「644」ですが、おそらくこのファイルはWebサーバーの設定によって、Web経由でのアクセスは禁止されています。
但し、最小で「004」に設定しておけば、この .htaccess ファイルを配置したWebサイトは正常に表示されます。逆に言うと、「その他のユーザー」に対する読み取り権限を付与していないと、この .htaccess ファイルを配置したWebサイトはアクセスできなくなり、403 Forbidden が返されます。このことから、基本的に .htaccess は .txt と同じ扱いであると思われます。