2018年05月22日 情報科学類 コンピュータリテラシ 筑波大学 システム情報系 新城 靖 <yas@cs.tsukuba.ac.jp>
このページは、次の URL にあります。
http://www.coins.tsukuba.ac.jp/~yas/coins/literacy-2018/2018-05-22
/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という。
/etc/passwd
や/etc/group
の代わりに、LDAP
(Lightweight Directory Access Protocol) を用いて UID と GID を保存して
いる。LDAP では、木構造を用いて、ユーザ名やグループ名から様々な情報を引
くことができる。次のコマンドで各ユーザの UID(番号) と GID(番号) を調べ
ることができる。
ldapsearch -h violet-nwi.coins.tsukuba.ac.jp -x -b ou=users,dc=coins,dc=tsukuba,dc=ac,dc=jp uid=ログイン名 uidNumber gidNumber
あるいは、次のように調べる。
ldapsearch -h violet-nwi.coins.tsukuba.ac.jp -x -b ou=users,dc=coins,dc=tsukuba,dc=ac,dc=jp uid=ログイン名 | lv
グループについては、次のようにすると調べることができる。
ldapsearch -h violet-nwi.coins.tsukuba.ac.jp -x -b ou=groups,dc=coins,dc=tsukuba,dc=ac,dc=jp cn=グループ名 gidNumber
ldapsearch -h violet-nwi.coins.tsukuba.ac.jp -x -b ou=groups,dc=coins,dc=tsukuba,dc=ac,dc=jp cn=グループ名 | lv
このことを確認しなさい。