usermodの罠
usermod -G group user
これでユーザーの補助グループが「追加」出来ると思っていたけど、この認識は間違いでした。
実際はユーザーの補助グループを指定したものに「変更」するという動作です。
# id shim0mura uid=1000(shim0mura) gid=1000(shim0mura) groups=1000(shim0mura),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),107(lpadmin),124(sambashare)
このユーザーにtestという補助グループを追加したくなりました。
# usermod -G test shim0mura # id shim0mura uid=1000(shim0mura) gid=1000(shim0mura) groups=1000(shim0mura),1001(test)
ほげええええええええええええええ
usermodする前のグループが消えました。
ユーザが属する補助グループ (supplementary groups) のリスト。グループはコンマで区切り、間に空白文字を入れてはならない。指定できるグループには -g オプションと同様の制限がある。現在そのユーザが、新しいリストにないグループのメンバーになっている場合は、そのグループから削除される。
man usermod
確かにusermodというコマンドのインターフェース見るとグループの削除とかできなそうだし全部変更するしかないのはよくよく考えれば分かりますね…
間違えるとどうなるのか
usermodで補助グループ追加するとき、元々入ってたグループも全部指定しなきゃいけないの知らなくてデフォルトユーザーがsudoerから抜けたしubuntuだからrootのパスワード変更してなくてsudo suもsuも出来なくて詰んだ
もうリカバリディスク作るの嫌やで...
追記
- aオプションをつければusermodでも補助グループの追加ができるようです。
http://d.hatena.ne.jp/tyru/20110726/usermod
http://d.hatena.ne.jp/studio3104/20130320/1363791024
また、gpasswdという別のコマンドを使えばユーザー情報の変更はできないですが、補助グループ追加はもちろんグループ関係の作業をカバーできます。