Linux の userdel の面白仕様
今日びっくりしたことメモ。
同名のグループとユーザを作って、ユーザを消すと、グループも一緒に消えちゃうらしい
root@ubuntu[829]# groupadd hoge root@ubuntu[830]# grep hoge /etc/group hoge:x:1001: root@ubuntu[831]# useradd -g hoge -d /home/hoge hoge root@ubuntu[832]# grep hoge /etc/passwd hoge:x:1001:1001::/home/hoge:/bin/sh root@ubuntu[833]# userdel hoge #ユーザーを消すと。。。 root@ubuntu[834]# grep hoge /etc/passwd # もちろんユーザは消える root@ubuntu[835]# grep hoge /etc/group # で、グループも消える!
グループにひもづく別のユーザが居ると、エラーメッセージがでつつ、グループは残る。その後、もう一つのユーザを消しても、グループは残る
root@ubuntu[837]# groupadd hoge root@ubuntu[838]# useradd -g hoge hoge1 root@ubuntu[839]# useradd -g hoge hoge root@ubuntu[840]# userdel hoge userdel: Cannot remove group hoge which is a primary group for another user. # なんか↑のようなエラーになる root@ubuntu[843]# grep hoge /etc/passwd hoge1:x:1001:1001::/home/hoge1:/bin/sh root@ubuntu[844]# grep hoge /etc/group hoge:x:1001: # 残る root@ubuntu[845]# userdel hoge1 root@ubuntu[846]# grep hoge /etc/group hoge:x:1001: # まだ残る
ユーザとグループの名前が違う場合は、ユーザを消してもグループは残る
root@ubuntu[850]# groupadd hoge root@ubuntu[851]# useradd -g hoge hoge1 root@ubuntu[852]# userdel hoge1 root@ubuntu[854]# grep hoge /etc/group hoge:x:1001: # 残る
日本語 man には何も書いてなかったけど、info で見たら、どうも /etc/login.defs に USERGROUPS_ENAB=yes が定義されているとそうなるっぽい。
あんまり合理的じゃないと思われる仕様だけど、なんでこうなってるんだろーか?
ちなみに、この日記用のログは ubuntu で取ったけど、もともとこの現象を発見したのは CentOS なので、いろんなディストリビューションで起こりうると思う。