Life, Education, Death

プログラミング以外でも思ったことをつらつらと書きたい

あぁ管理者権限が消えてしまったよ

sudo実行時に、sudoerじゃないからsudoさせないよ。(user1 is not in the sudoers file. This incident will be reported.)
って警告が出てしまった場合は
間違えて管理者権限を消してしまった可能性があります。
(以下、Ubuntu 12.04 LTSでの対処法なので他のバージョンでは異なる可能性があります。)

まず、該当ユーザーのグループを確認しましょう。
Ubuntu 12.04では”sudo”というグループに属しているユーザーにsudo権限が付いています。
(ここは/etc/sudoersに書かれている設定に依存しているはずです)

groups

と打つと、自分が所属しているグループが表示されます。
ここにsudoがないとsudoを実行することができません。

1.他のsudo権限があるユーザーで直す

他のユーザーでログインをして

sudo gpasswd -a ユーザー名 sudo

というコマンドを実行すれば、無事sudo権限が与えられるはずです。


もし、どのユーザーにもsudo権限がない場合は他の方法で対応する必要があります。

2.LiveCDを使ってリカバリーモードにしてみる。

リカバリーモードで起動すると、読み取り専用で最初マウントされているので
fsckなど何か適当なモードを実行して、読み書き用で再マウントされるようにしてください。

その後、先ほどの画面で”root”を選択してRoot権限でコンソールを立ち上げてください。
立ち上がったら、

sudo gpasswd -a ユーザー名 sudo

で実行します。

参考

gpasswdの使い方など http://tobysoft.net/wiki/index.php?Ubuntu%2Fgroup%A4%CE%B4%C9%CD%FD%CA%FD%CB%A1

リカバリーモードについて画像付きで解説されています http://kledgeb.blogspot.jp/2012/08/ubuntu-1204_28.html

3.LiveCDを使ってUbuntuを起動させて無理やりに設定ファイルを変更する

2.同様にLiveCDを使います。Ubuntuをインストールせずに起動します。
起動後、Ubuntuがインストールされているドライブがマウントされているはずです(左側のタスクバーにHDDのアイコンがあるはず)
タスクバーの一番上のホームボタンを押して”Terminal”を起動します。
Vimが入っていなかったのでgeditで開きましたがなんでもいいと思います。)

sudo gedit /etc/group

でエディタを起動します。
グループ名:x:グループID:所属するユーザー
という書式なので、sudoというグループを検索します。
検索した末尾にユーザー名を追加して保存すればOKです。
(参考:グループファイルの見方について http://kazmax.zpp.jp/linux_beginner/etc_group.html

/etc/groupを変更後、PCを再起動すれば無事設定したユーザーでsudoが使えるようになります。

そもそも何で発生したのか・・・

グループを追加するつもりが、上書きしてしまったことが原因のようです。

グループ設定は再起動するまで反映されないようなので、しばらくの間気づきませんでした。

グループ設定を行うときは、上書きしないように気をつけましょう。