システム・プログラム
電子・情報工学系
新城 靖
<yas@is.tsukuba.ac.jp>
このページは、次の URL にあります。
http://www.hlla.is.tsukuba.ac.jp/~yas/coins/syspro-2000/2000-05-01
/access-control.html
あるいは、次のページから手繰っていくこともできます。
http://www.hlla.is.tsukuba.ac.jp/~yas/coins/
http://www.is.tsukuba.ac.jp/~yas/index-j.html
Unixは、マルチユーザのシステムである。1つのシステムを複数のユーザが同時
に利用する。システムに含まれているファイルやプロセスは、それぞれのユー
ザと結び付いている(←→ Windows95、Windows98、MacOS)。
Unixは、マルチユーザのシステムなので、ユーザ1人ひとりを認識するような
アクセス制御の仕組みを持っています。
アクセス制御(access control)
とは、ユーザ(プロセス) が、ファイルなどの資源をアクセスする時、どんな
アクセスの仕方なら正しいということを定義して、それがきちんと守られてい
ることをということを保証することである。
ファイルであれば、内容の読出し・書き込み・実行、属性の読出し・変更がで
きるかどうかを調べる。
プロセスでは、シグナルを送れるかどうかを調べる。許されれば、その操作
は実行されて、許されなければ、エラーになる。
Unixは、マルチユーザのシステムなので、ユーザ1人ひとりを認識するような
アクセス制御の仕組みを持っている。たとえば、UNIX では、共同プロジェク
トに関連したファイルは、他のユーザにも見せてもよいが、個人の電子メール
は、他の人には見せないといった制御ができる。
これに対して、パソコン用のOSでは、このような複数のユーザを識別したア
クセス制御は、できない。
UNIXでは、ファイルの「内容」のアクセス制御を次の3段階で行う。
- ユーザ
- ファイルのUID(所有者)が、プロセスのUIDと同じ
- グループ
- ファイルのGIDが、プロセスのGIDのリストのどれかと同じ
- その他
- 上の2つに当てはまらない時
これをつかって、モード属性の下位9ビットのうち、どの3ビットを使うかを
決める。そして、そのビットが1になっていれば、その操作が許される。
ファイルの「内容」のアクセス3段階であるが、ファイルの「属性」次の2段
階である。
- ユーザ
- ファイルのUID(所有者)が、プロセスのUIDと同じ
- それ以外
- ファイルのUID(所有者)が、プロセスのUIDと異なる
ユーザの権限では、ファイルの属性(モード、グループ、時刻)を変更する
ことができる。それ以外の権
限では、属性を読み出すことはできるが、変更は一切できない。
つまり、ファイルの内容がアクセスできなくても、ls -l, stat(2) で
属性を調べることはでる。
プロセスのアクセス制御は、次の2段階で行なう。
- 同一ユーザ
- 操作対象のプロセスが、操作するプロセスのUIDと一致している。
- それ以外
- 操作対象のプロセスが、操作するプロセスのUIDと一致していない。
プロセスの操作としては、シグナルを送ることができるかどうか
(kill() システムコール)
と、デバッガで
デバッグすることができるとか(ptrace() システムコール)、トレースを調べることができるかなどが
ある。それらの操作は、同一ユーザの場合
許され、そうではない場合は、許されない。
Unix では、UID が 0 のユーザは、
全てのアクセス制御の仕組みを無視して何でも実行することができる。
これを
スーパー・ユーザ(super user)
、
特権ユーザ(privileged user)、
あるいは、
ルート(root)
と呼ばれる。
↑[もどる]
←[4月24日]
・[5月01日]
→[5月08日]
[課題]
Last updated: 2000/04/30 21:38:03
Yasushi Shinjo / <yas@is.tsukuba.ac.jp>