[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

27.1 ファイル・モードビットの構成

ファイル・モードビットには、二つの構成部分がある。 ファイルに対する通常のアクセスを制御するファイル許可属性ビット (file permission bits) と、若干のファイルのみに働く特殊モードビット (special mode bits) である。

ユーザがファイルに対して持つ許可 (訳注: アクセス権とも言う) には、 3 種類ある。

  1. ファイルを読み込む許可。ディレクトリに対しては、ディレクトリの中身をリストする許可になる。
  2. ファイルに書き出す (ファイルを変更する) 許可。ディレクトリに対しては、 そのディレクトリ中でファイルを作成したり、削除したりする許可になる。
  3. ファイルを実行する (プログラムとしてそれを動かす) 許可。 ディレクトリに対しては、ディレクトリ中のファイルにアクセスする許可になる。

ユーザにも 3 種類あり、ファイルに対する上記の操作のいづれについても、 それぞれ違った許可を持つことができる。

  1. ファイルの所有者。
  2. ファイルの所有グループに属するファイルの所有者以外のユーザ。
  3. それ以外の全員。

ファイルには、作成されるときに所有者とグループが割り当てられる。 たいていの場合、所有者はファイルを作成したユーザであり、 グループはファイルが存在するディレクトリのグループだが、 オペレーティングシステムやファイルが作成されるファイルシステム、ファイルの作成方法などによって違うこともある。 ファイルの所有者やグループは、chownchgrp コマンドを使って、変更することができる。

上に挙げた 3 種類の許可属性 3 組のほかに、ファイルのモードビットには三つの特殊モードビットが存在するが、 そうしたものは、実行ファイル (すなわち、プログラム) と — ほとんどのシステムでは — ディレクトリにしか効果を持たない。

  1. ファイルの実行時に、そのプロセスの実効ユーザ ID をファイルの所有者のものにする (set-user-ID bit とか setuid bit と呼ばれる)。 若干のシステムでは、ディレクトリに set-user-ID ビットを付けると、 ファイルの実際の作成者が誰であれ、そのディレクトリ中で作成されるファイルの所有者が、 ディレクトリの所有者と同じになる。また、新しく作られるサブディレクトリに set-user-ID ビットが付く。
  2. ファイルの実行時に、そのプロセスの実効グループ ID をファイルのグループのものにする (set-group-ID bit とか setgid bit と呼ばれる)。 ほとんどのシステムでは、ディレクトリに set-group-ID ビットを付けると、 ファイルの作成者がどんなグループに属していようとも、 そのディレクトリ中で作成されるファイルのグループが、ディレクトリのグループと同じになる。 また、新しく作成されるサブディレクトリに set-group-ID ビットが付く。
  3. 特権を持たないユーザ (訳注: 要するに、root 以外の一般ユーザ) に対して、自分が所有するファイルやディレクトリを除き、 ディレクトリ中のファイルの削除や、名前の変更を禁じる。 これは、ディレクトリの削除制限フラグ (restricted deletion flag) と呼ばれ、‘/tmp’ のような、誰でも書き込めるディレクトリでよく見かけられる。

    古いシステムの中には、通常ファイルにこのビットが付いていると、 プログラムのテキスト・イメージをスワップ・デバイスにセーブするものがある。 そうすることで、実行時にロードが速くなるわけだ。 こちらは、スティッキー・ビット (sticky bit) と呼ばれる。

上記のファイル・モードビットのほかに、ファイルシステムに固有のファイル属性が存在することがある。 たとえば、アクセス・コントロール・リスト (ACL) がそうだし、 ファイルが圧縮されているか否か、ファイルが変更可能か否か (変更不可属性)、 ファイルがダンプ可能か否か、といった属性が存在することもある。 そうした属性は、通常、ファイルシステム固有のプログラムを使って設定される。例を挙げよう。

ext2

GNU 及び GNU/Linux では、ext2 ファイルシステムに固有なファイル属性は、 chattr コマンドを使って設定される。

FFS

FreeBSD では、FFS ファイルシステムに固有なファイルフラグは、 chflags コマンドを使って設定される。

ファイルのモードビットがそのファイルに対するある操作を許可していたとしても、 それでもその操作に失敗することがある。その理由としては、次のようなことが考えられる。

たとえば、ファイルに変更不可属性が設定されていると、chmod a+w FILE を直前に実行したとしても、ファイルを変更することはできない。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

This document was generated on June 7, 2022 using texi2html 1.82.