26.1 ファイルの許可の構造
ユーザがファイルに対して持つ三種類の許可があります.
-
ファイルを読み込む許可です.ディレクトリに対しては,これはディレクトリの
内容をリストアップする許可という意味があります.
-
ファイルを書き込む(変更する)許可です.ディレクトリに対しては,これはディ
レクトリでのファイルの作成と削除の許可を意味します.
-
ファイルを実行(それをプログラムとして実行)する許可です.ディレクトリに対
しては,これはディレクトリのファイルにアクセスする許可を意味します.
ファイル上で上記のあらゆる処理を行うため,異なる許可を持つ,三つのユーザ
の分類があります.
-
ファイルの所有者.
-
ファイルのグループにいるその他のユーザ.
-
その他全員.
ファイルが作成されるとき,所有者とグループが与えられます.通常,所有者は
現在のユーザで,グループはファイルがあるディレクトリのグループですが,こ
れはオペレーティングシステム,ファイルが作成されるファイルシステム,そし
てファイルが作成される方法で変化します.chownとchgrp
コマンドを使用してファイルの所有者とグループを変更可能です.
上記でリストアップされた三つの許可の三つの設定に加えて,ファイルの許可は
三つの特別な構成部分があり,それは実行可能なファイル(プログラム)と,いく
つかのシステムのディレクトリにのみ効果があります.
-
プロセスの実効ユーザIDを,実行時にファイルのものに設定します(setuid
bitと呼ばれます).ディレクトリには効果がありません.
-
プロセスの実効グループIDを,実行時にファイルのものに設定します
(setgid bitと呼ばれます).いくつかのシステムのディレクトリに対して
は,そのディレクトリで作成されたファイルを同じグループのディレクトリとし
て置いても,それを作成したユーザのグループは問題ありません.
-
スワップデバイス上のプログラムのテキストイメージを保存するので,実行時に
より速くロードされます(sticky bitと呼ばれます).いくつかのシステム
のディレクトリに対しては,ユーザが所有していないファイルやディレクトリ場
合,そのディレクトリ内でのファイルの削除や名前の変更を妨げます.これは,
ディレクトリに対する制限された削除フラグ(restricted deletion flag)
と呼ばれます.
上記の追加の許可として,ファイルシステム特有のファイル属性があるかもし
れません.例えば,アクセス制御リスト(ACL)で,ファイルが圧縮されている
かどうか,ファイルが編集可能かどうか(不変性),ファイルのダンプが可能か
どうかなどです.これらは通常,ファイルシステム特有のプログラムで設定さ
れます.例えば以下のものがあります.
- ext2
-
GNUとLinux/GNUのext2ファイルシステム固有のファイルの許可(“属性”)は,
chattrを使用して設定します.
- FFS
-
FreeBSDのFFSファイルシステムの固有のファイルの許可(“フラグ”)は,
chrflagsを使用して設定します.
ファイルの許可“ビット”はファイル上で処理可能であっても,処理が失敗す
る可能性もあります.その理由は以下の通りです.
-
ファイルシステム特有の許可は,それを許可していない.
-
ファイルシステムが読み込み専用でマウントされている.
例えば,ファイル上の不変属性が設定されている場合,chmod a+w
FILE
を実行したという事実によらず,編集することは不可能です.