田舎者Yの日記

片田舎のバイク乗り・Linuxユーザ、つまり変わり者のブログ

Ubuntu Server で管理者権限を失ってしまった

職場の私の部署でファイルサーバを立てている。予算がなかったことと一度に30を超えるアクセスが予想されること、それほど重要でないデータを扱っていること、私が自由に管理できることなどもあって、廃棄予定だった旧型サーバをクリーン・インストールして Ubuntu Server として仕立てて使っている。Debian も考えたのだが、自分が家で使っているのが Ubuntu なのでそうした。素人管理者で CUI だけでは手に余るので Gnome をインストールしてある。使っているのが Ubuntu 10.04LTS。閑散期に 12.04LTS にしなければと考えている。

 

さて見様見真似でサーバ管理をしていて悲劇は起こった。自分のログインユーザをグループを変える必要があり、以下のコマンドを行った。
sudo usermod -G hoge [username]

しばらく使ったあと何気なくアップデートしようと sudo apt-get update としたところ
[username] is not is not in the sudoers file. This incident will be reported.
というエラーが発生しアップデートできない。どうも自分が sudoer から外されてしまったようだ。私のユーザだけが sudo できる設定だったので誰も管理者権限を持つ者がいなくいなってしまったのだ!

 

早速ウェブ検索して以下のページを見つけた。同じような失敗をする方は大概ウェブに痕跡を残しているw
Ubuntu で usermod -G して admin から外され、目の前真っ白になった時の対処方法 | slumbers

usermod の -G オプションを使う場合は、
sudo usermod -G adm,dialout,cdrom,plugdev,lpadmin,admin,www-data,オレ オレ
のようにすべてを列記する必要があったのだ。なるほど。

 

ここで私の場合は問題が2つあった。
最初は grub2 で recovery mode の選択画面が表示されず、すぐに通常のログイン画面になってしまうこと。これは Shift キーを押し下げながらブートすれば表示されるのであった。もう一つは(これが最大の難関だった) 'root    Drop to root shell prompt'  を選択した後に root のpassword を入力するように促されることだ。これは Ubuntu server の仕様なのだろうか。もちろん root のパスワードなんて設定したことがない。

 

まったく困ってしまったのだが、すぐにインストールディスクがあることに気づいた。それを使ってブートすれば root のパスワード入力はパスできるかもしれない!

早速インストールディスクでブートしたのだが、Server の場合はすべて CUI。何とかしてコマンドプロンプトにこぎつけて以下のコマンドを実行して再起動した。

# mount /dev/sda1 /mnt
# chroot /mnt
# usermod -G  adm,dialout,cdrom,plugdev,lpadmin,admin,www-data,[username] [username]

途中 fdisk -l でディスクの構成を確かめようとしたのだが command not found であった。パスが通ってなかったのかも。/dev/sda1 なのは確実だったのとパーティションを暗号化していなかったのが幸いした。(暗号化していてもマウントできるのだったか?)

なんとか回復できたのが不幸中の幸いであった。しかし思わぬところに落とし穴があるものだ。また一つ勉強になった(こればっかり)。