ユーザをグループに追加するとき、やってはいけないこと

Ubuntuでは基本的に「root」ユーザでのログインは許していなくて、管理者権限が必要な作業は、インストール時に設定する管理ユーザが「sudo」コマンドで実行するようになっています。以下、この管理ユーザのグループを変更しようとして大変なことになった記録。

管理ユーザのグループ変更

「usermod -G subgroup user」としてサブグループを登録する場合は、いま所属しているサブグループをすべて登録しないとサブグループが消えてしまうというのはわかってはいたんですが...。
消えたら消えたでまた登録すればいいじゃん、クリップボードにコピーしてあるし、と簡単な気持ちでポチっと。

xxx:~$ id      ← 管理ユーザの確認
uid=1000(xxx) gid=1000(xxx) groups=4(adm),20(dialout),24(cdrom),25(floppy),29(audio),
30(dip),44(video),46(plugdev),104(scanner),111(lpadmin),112(admin),1000(xxx)
xxx:~$ sudo usermod -g xxx -G svn xxx ← 管理ユーザのグループ変更
xxx:~$ 

さて、グループは変更できたかな?

xxx:~$ sudo id    ← 管理ユーザの確認
Password:
Sorry, try again.
xxx is not in the sudoers file. This incident will be reported.

がーん、やっちゃった。唯一の管理者権限を持ったユーザをadminグループから外しちゃったよ。もちろん「su -」もできないし、手も足も出ない。

復旧の仕方

サーバ・コンソールから、Ctrl+Alt+Deleteでマシンをリブートします。メニューが立ち上がってくるので「recovery mode」と書いてある方を選択すると、シングルユーザモード(rootでログインした状態)でUbuntuが起動します。

# usermod -g xxx -G adm,admin,xxx xxx
# su xxx
xxx:~$ sudo id    ← 管理ユーザの確認
uid=1000(xxx) gid=1000(xxx) groups=4(adm),112(admin),1000(xxx)

無事、復旧しました。先ほどまでターミナルから操作していたログは「/var/log/auth.log」に残っていますから、これを見て正しいグループを再登録しておきます。本当に肝を冷やしました。