FreeBSD ハンドブック
Prev | Chapter 3. Unix の基礎知識 | Next

# 3.2. 許可属性

FreeBSD は BSD Unix の直系の子孫であり、 いくつかの鍵となる Unix 思想にもとづいています。 まず最も際だった特徴として最初に言えるのは、FreeBSD がマルチユーザのオペレーティングシステムだということです。 FreeBSD は同時に働いている複数のユーザすべてを、 完全に分離したタスク上で処理する能力を持っています。 また FreeBSD は、ハードウェアデバイス、周辺装置、メモリ、 CPU 時間等への要求を、各ユーザが平等に利用できるように適切に共有し、 管理する役割を担っています。

システムがマルチユーザをサポートしているため、 システムが管理する資源はすべて、 誰がその資源を読み・書き・実行できるかを支配する、 一組の許可属性を持っています。 これらの許可属性は 3 つの部分からなる 2 桁の 8 進数の形で格納されています。 それはそのファイルの所有者(owner)に対するもの、 そのファイルが所属するグループ(group)に対するもの、 その他(others)に対するものの 3 つです。 これを数字を使って表現すると、次のようになります。

値 | 許可属性 | ディレクトリの表示
--- | --- | ---
0 | 読み込み不可、書き込み不可、実行不可 | `---`
1 | 読み込み不可、書き込み不可、実行可能 | `--x`
2 | 読み込み不可、書き込み可能、実行不可 | `-w-`
3 | 読み込み不可、書き込み可能、実行可能 | `-wx`
4 | 読み込み可能、書き込み不可、実行不可 | `r--`
5 | 読み込み可能、書き込み不可、実行可能 | `r-x`
6 | 読み込み可能、書き込み可能、実行不可 | `rw-`
7 | 読み込み可能、書き込み可能、実行可能 | `rwx`

ls(1) に対してコマンドライン引数 `-l` を使うと、 詳細なディレクトリリストを見ることができ、 ファイルの所有者、グループ、その他への許可属性を示す欄があるのがわかります。 次に示すのは、`ls -l` の最初の部分だけ抜き出したものです。

    -rw-r--r--

最初の(一番左の)文字は、それが 普通のファイルなのか、ディレクトリなのか、 キャラクタ型のデバイス特殊ファイルなのか、 ソケットなのか、 その他の特殊な疑似ファイルデバイスなのかといった種類を示す特別な文字です。 この場合、`-` という文字は、 普通のファイルであることを示します。 この例でその次に来る `rw-` と書かれた 3 文字は、 そのファイルの所有者に許可を与えるものです。 その次の `r--` の 3 文字は、 そのファイルが所属しているグループに許可を与えます。 最後の `r--` の 3 文字は、 システムに存在するその他のユーザに許可を与えます。 “-” は許可が与えられていないことを示します。 このファイルの例では、ファイルの所有者はこのファイルを読み書きでき、 ファイルの所属しているグループに属するユーザはファイルを読むことだけでき、 そのどちらでもないユーザは、 このファイルを読むだけできるように許可属性が与えられています。 上の表によれば、このファイルに与えられた許可属性は `644` となります。 ここで各数字は、このファイルの許可属性の 3 つの部分を表しています。

ファイルについてはここまでの説明で十分です。 しかし、 デバイスの場合の許可属性はどのようにコントロールされているのでしょうか? FreeBSD は、大部分のハードウェアをファイルとして取り扱います。 そのため、プログラムからは普通のファイルとまったく同じようにオープンし、 データの読み書きができるようになっています。 これらのデバイス特殊ファイルは `/dev` ディレクトリに収められています。

ディレクトリもまた、ファイルと同様に扱われます。 それは読み込み/書き込み/実行の許可属性を持ちます。 ディレクトリの実行ビットはファイルのそれとは少し違った意味を持ちます。 ディレクトリが実行可能になっているとき、 そのディレクトリに移動することができます。 つまり、そのディレクトリに “cd” することが可能です。 また、実行可能属性がついているディレクトリでは、 名前が分かっているファイルにアクセスすることもできます (もちろんそのファイル自体の許可属性によります)。

特に、ディレクトリの中の一覧を表示するには、 そのディレクトリに読み込み属性が設定されていなければなりません。 一方、名前が分かっているファイルを削除するには、 そのファイルが含まれているディレクトリに 書き込み属性と実行属性 の両方が必要です。

この他にも許可属性ビットはありますが、いずれも setuid バイナリや sticky ディレクトリなどといった特殊な状況で使われます。 ファイルの許可属性そのものについて、 また、それらの設定のしかたに関する詳しい情報は、 chmod(1) マニュアルページを参照してください。

Prev | Home | Next
Unix の基礎知識 | Up | ディレクトリ構造