2007年05月08日
情報科学類 コンピュータリテラシ
                                       筑波大学 システム情報工学研究科 
                                       コンピュータサイエンス専攻, 電子・情報工学系
                                       新城 靖
                                       <yas@is.tsukuba.ac.jp>
このページは、次の URL にあります。
	http://www.coins.tsukuba.ac.jp/~yas/coins/literacy-2007/2007-05-08
/uid-propagation.html
あるいは、次のページから手繰っていくこともできます。
	http://www.coins.tsukuba.ac.jp/~yas/
	http://www.cs.tsukuba.ac.jp/~yas/
/etc/passwd
 
に記述される。(coins では、LDAP という仕組みを使っているので、このファイ
ルを用いていないが、考え方は共通である。)
/etc/passwdは、次のように「:」で区切
られた7つのフィールドから構成されている。
root:UUm1ttAWtthJg:0:0:root:/root:/bin/bash
bin:*:1:1:bin:/bin:
daemon:*:2:2:daemon:/sbin:
yas:XXZ9eZ35CUVgE:1231:40:Yasushi SHINJO:/home/yas:/bin/tcsh
^        ^	   ^   ^  ^		 ^         ^
|        |	   |   |  |	       	 |         |
ユーザ名 |	  UID GID finger名	 |         ログイン・シェル
     パスワードのハッシュ値     	 ホーム・ディレクトリ
/etc/group
 
に記述されている。(coins では、LDAP という仕組みを使っているので、この
ファイルを用いていないが、考え方は共通である。)
/etc/group は、次のように、「:」で区切
られた4つのフィールドから構成される。
wheel:*:0:root,yas bin:*:1:root,bin,daemon daemon:*:2:root,bin,daemon staff:*:30:yas lab:*:40:yas,delegate,user1 ^ ^ ^ ^ | | | | | | | ユーザ名のリスト | | GID | パスワード(使われない) グループ名
/etc/passwd を検索し、そのユーザ名の行を取り出す。
/etc/passwd の第3フィールドの数を、プロセスの UID として設定する。
/etc/passwd の第4フィールドの数と、/etc/group を
ユーザ名で引いて見つかった数を、プロセスの GID として設定する。
/etc/passwd の第6フィールドのディレクトリを、カレント・ワー
キング・ディレクトリにします。
/etc/passwd の第7フィールドのプログラムのシェルを実行する。
MacOSX では、Finder などを実行する。
プロセスの属性の GID は、1個目は、/etc/passwd の第4フィールド、
その他は、/etc/groupに由来する。
区別する時は、1個目を(主)GID, 2個目以降を
補助GID(supplementary GID)
とか、
groups
ということがある。
以後、プロセスの属性の UID と GID は、 子プロセス、孫プロセスと代々コピーされていく。
ファイルの UID は、そのファイルを作っ たプロセスの UID に由来する。 ファイルの GID は、 親ディレクトリの GID に由来する。 (そのファイルを作ったプロセスの1個目の GID に由来する Unix もある)。
普通は、プロセスのUID・GID属性がファイルにコピーされる。 例外的に、ファイルの UID・GID属性がプロセスにコピーされることがある。 そのような仕組みを、それぞれ、set-uid、set-gidという。
Date: