|
こちらの話。私のところでは
あと、依存ports の make install で root権限が必要となり Stop する件は未解決。
は「依存がちゃんとうまくいくように順番に make」しています。そのために、 自分のマシンにインストールする ports は
devel/libtool devel/gmake print/freetype2 devel/imake-4 x11/XFree86-4-libraries x11/XFree86-4-clients x11-servers/XFree86-4-Server x11-fonts/XFree86-4-fontEncodings
のように依存関係の順番に列挙したリストを作ってあります。
このようにしている理由は、「依存関係くらい自分で把握するのは当然」だと 思っているからですね。 FreeBSD の committer でも依存関係の把握をきちんと していない人がたまにいて、依存関係が循環 *1した状態にして ports tree を壊すことがあります。
私の場合、 /usr/ports では
% cd /usr % cvs -R -d /home/ncvs checkout ports/Mk ports/japanese/Makefile.inc % foreach i (`cat /hoge/list`) foreach? cvs -R -d /home/ncvs checkout ports/$i foreach? end
のように使うものだけ *2展開してあります。 master/slave port などで「インストールしないけれど 展開しておく必要があるもの」 *3があるのにも注意が必要です。
こちらの話題。
/etc/master.passwd や /etc/group で同じ user や group が複数存在する場合、 最初にマッチしたエントリが使われるのが基本です。 NIS の + で始まるエントリより wheel の行が先にあれば、 NIS のエントリは使われません。 login(1) が passwd を調べたり su(1) が /etc/group から gid 0 なユーザを調べる時には この規則が使われます。
ログインする際にどのグループの権限が設定されるかですが、 login(1) は setusercontext(3) 経由で initgroups(3) を呼びます。 su(1) で別のユーザになる時や ssh でログインする時は initgroups(3) が 直接呼ばれます。 initgroups(3) は getgrouplist(3) を呼んでどのグループの 権限を設定するのか調べますが、 getgrouplist(3) では「同一 group 名が 複数存在する時は最初のエントリが使われる」という処理は行われません。
このように initgroups(3) の処理が他と異なるのが原因です。 /etc/group が
wheel:0:root wheel:0:foo
となっていた場合、ユーザ foo は su(1) では蹴られますが wheel 権限を持つ という (片山さんが経験したのと同じ) 不思議な状態になります。
某氏からリクエストがあったので NetBSD i386 1.5.4_ALPHA-20020830-xcast-0.1.1 snapshotを作成してみる。
というもの。