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を使うのがいいらしいですよ。
*1 ルート権限でシェルを叩ければいいのでディスクイメージはなんでもいい