UNIXのシステムにおけるファイルやフォルダのアクセス権のことを、パーミッション
という。ファイルやフォルダごとにアクセス権を設定して、定められた人のみが変更できるよう設定することができる。
Apacheサーバーの所有権の種類
自分(Owner) | ファイル/ディレクトリの所有者、本人のこと |
---|---|
グループ(Group) | 同じサーバーを利用できるユーザ全体 |
他人(Other) | その他全て、第三者のこと。Web上の一般閲覧者 |
パーミッションの種類
- 読み取り権限
- 書き込み権限
- 実行権限
ファイルとディレクトリの実行権の違い
アクセス権 | ファイル | ディレクトリ |
---|---|---|
読み取り権限 | ファイルの内容を 読みだす(表示する)ことができる | ディレクトリ内のファイル一覧を読み取れる(リストの表示可能)が、 ファイルへのアクセスやcdコマンドによる移動はできない |
書き込み権限 | ファイルの内容を 変更(上書き、削除)できる | ディレクトリ内にファイルを作成したり、 ディレクトリ内のファイルを削除したりできる |
実行権限 | ファイルをプログラムとして 実行できる | ディレクトリ内にcdコマンドで移動したり、 ディレクトリ内のファイルにアクセスできる |
ディレクトリのパーミッションの場合、あくまで「ディレクトリ」に対するものなので、その配下のファイルまで権限があるわけではない。ファイルはファイルで、ディレクトリはディレクトリで権限の設定が必要となる。
権限 | 動作 |
---|---|
読み取り(read) | ファイルを読む権利がなくても、ファイルネームを表示する事は可能である。 |
書き込み(write) | ディレクトリに書き込む権利がない場合、そのディレクトリ内で新規ファイルを作成できない。 |
実行(execute) | 実行する権利を有効にするには、読み取りる権利も必要である。 CGIのようなサーバーサイドでスクリプトを動作させる事ができる。 HTMLやCSSなどは、動作しないため、「実行」を設定しても特に意味はない。 |
パーミッションの見方
表記 | 読み取り権限 | 書き込み権限 | 実行権限 | 何もできない |
---|---|---|---|---|
アルファベット表記 | r | w | x | – |
数値表記 | 4 | 2 | 1 | 0 |
アルファベット表記の例
rw-rw-r--
というパーミッションの場合、9文字が所有者、グループ、その他に3文字ずつ割り当てられる。
rw- | rw- | r– |
所有者 | グループ | その他 |
所有者とグループはrw-
なので、読み取り権限があり、書き込み権限があり、実行権限がないという意味になる。
その他はr--
なので、読み取り権限しかない。
-
(ハイフン)は権限がないという意味。
数値表記の例
数値の表記では、各ユーザーごとに、数値を足して表記する。
アルファベット表記のパーミッションがrw-rw-r--
は、数値表記では、664
となる。
rw- | rw- | r– |
---|---|---|
所有者 | グループ | その他 |
4+2+0 | 4+2+0 | 4+0+0 |
6 | 6 | 4 |
rは4、wは2、xは1で表し、それを足した数値で表すため、664
となる。
フルパーミッション
読み書き実行全ての権限を全てのユーザーが持つ場合は777となる場合、フルパーミッションという。
セキュリティ上ではこの設定は殆どの場合避ける必要がある。
パーミッションの適正値
HTML 画像ファイル | 604、644 |
---|---|
CGIの実行ファイル | 700、705、755 |
CGIのデータファイル | 600 |
.htaccessファイル | 604、644 |
.txt / .dat / .log などのファイル | 600 |
ディレクトリ | 705、755 |
グループ権限はレンタルサーバーによって推奨値が異なるようだ。
検証
サーバー上に設置したファイルのパーミッションを変更してアクセスし、表示の違いを検証する。
パーミッション | 700 | 600 | 500 | 400 | 300 | 200 | 100 | 000 |
---|---|---|---|---|---|---|---|---|
phpファイル | ○ | ○ | ○ | ○ | ✕ | ✕ | ✕ | ✕ |
Webに表示しアクセスするためには、パーミッション400、つまり読み取り権限が必要ということがわかった。
また、070、007はAccess denied.
、ステータスは403
となった。