tsucchi’s diary(元はてなダイアリー)

はてなダイアリー(d.hatena.ne.jp/tsucchi1022)から移行したものです

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 なので、いろんなディストリビューションで起こりうると思う。