2013-08-06 [長年日記]

sudoを取り戻す

Ubuntu on さくらVPSでユーザにグループを追加しようとして、

$sudo usermod -G user group

としてsshログインしなおしたらsudoができなくなっていた。

$groups

で確認したところ、自分自身と先ほど追加したグループにのみ所属している。どうもusermod -Gでは元々所属しているグループを全て列挙する必要があるらしい。ということで普通にブートして動作するけど誰にもroot権限がない状態になってしまった。

rootのパスワードを設定してあればsuでrootにログインして修正できるのだけど、残念ながら設定していない。ローカルマシンであればLiveCDをつっこんでブートして適当にマウントしてファイル修正すればいいんだけど…、というところでさくらVPSのリモートコンソールでやればいいことに気付いたのでやってみた。

VPSコントロールパネルからOS再インストールからカスタムOSインストールを選択、OS選択からUbuntu12.04 amd64を選択して*1実行。 Ubuntuのインストーラーが起動した状態でTightVNCが立ち上がるので以降はここで作業する。

このページの最初のスクリーンショットで"Install"ではなく、"Advanced options"を選択、ここにrescue modeかなにかそれっぽいのがあるはずなのでそれを選択。言語やキーボードを適当に設定、ネットワークの設定に失敗するはずなので、Go Backを選択するとメニューがでてくるのでshellを起動みたいなメニューを選択する。

shellが起動すればあとはどうとでもなる。

#mkdir /mnt/system

でマウントポイントを作成して

#mount /dev/vda1 /mnt/system

で/mnt/system以下に普段のroot filesystemがマウントされるのでetc/groupを編集。インストーラーにはnanoが入っているのでこれで編集。

#nano /mnt/system/etc/group

で、sudo:...となっているところに自分のユーザ名を記述して保存。コンソールから再起動。

以降は普段の環境でsudoができるようになっているはず。他で動作している環境を参考に/etc/groupを直接編集(するのはよくない)して反映。

$sudo vi /etc/group
$sudo grpconv

おまけでUbuntu(Debian系?)でgroupの編集をするにはgpasswdを使うのがいいらしいですよ。

Tags: linux

*1 ルート権限でシェルを叩ければいいのでディスクイメージはなんでもいい