焦ったので共有します。
背景
raspberry piのsudo設定は、下記のコマンドでエディタを起動して編集を行います。sudo vi sudo
問題なく編集が終了すれば良いのですが、記述が間違っているのに保存を強行すると、visudoを開けない上にsudoもできなくなってしまいます。
下記の警告が出るときは、記述にミスの可能性があるので、「Q」を入力せずに「e」で再度編集するか、「x」で編集を破棄すことをお勧めします。
pi@raspberrypi ~ $ sudo visudo What now? Options are: (e)dit sudoers file again e(x)it without saving changes to sudoers file (Q)uit and save changes to sudoers file (DANGER!) What now? Q
上記の警告を無視してvisudoの設定を終えると、sudoコマンドが実行できなくなる場合があります。
pi@raspberrypi ~ $ sudo sudo: parse error in /etc/sudoers near line 11 sudo: no valid sudoers sources found, quitting sudo: unable to initialize policy plugin pi@raspberrypi ~ $ sudo visudo sudo: parse error in /etc/sudoers near line 11 sudo: no valid sudoers sources found, quitting sudo: unable to initialize policy plugin pi@raspberrypi ~ $ sudo reboot sudo: parse error in /etc/sudoers near line 11 sudo: no valid sudoers sources found, quitting sudo: unable to initialize policy plugin
こうなってしまうと、sudoの設定を元に戻すのは自分の調べた限りraspiだけでは不可能です。
(visudoの設定ミスをraspiだけで復旧する方法をご存知な方は、教えて頂けると嬉しいです。)
しかし、PCでSDカードの内容を編集すれば、visudoの設定を変えられるので、raspiでのsudo実行が再び可能な状態に戻せます。
今回はその方法を説明します。
使ったもの
raspiで使っているSDカードが読み込めるPC設定方法
visudoの設定はSDカード上の/etc/sudoersに記述されています。このファイルを編集するのですが、権限が「読み込みだけ許可」になっているため、そのままでは編集が行えません。
そのため、下記の手順で変更を行います。
- raspiで使っているSDカードをPCで読み込み
- 権限を編集可能な状態に変更
- ファイルを編集
- 権限を元に戻す
- PCからSDカードを取り出し、raspiで実行
順番に説明します
raspiで使っているSDカードをPCで読み込み
raspiの電源を切り、SDカードを取り出して、そのSDカードをPCで読み込んでください。権限を編集可能な状態に変更
ubuntu場合は下記のコマンドで権限を確認できます。ls -la /media/[ユーザー名]/media/[SDカード名]/etc/sudoers
読み込みだけ可能な状態「- r-- r-- ---」になっていると思います。
下記のコマンドで編集可能な状態に権限を変更します。
sudo chmod 660 /media/[ユーザー名]/media/[SDカード名]/etc/sudoers
これによって、書き込み可能な状態「- rw- rw- ---」になりました。
ちなみに、windowsでも権限の変更が可能なようです。
ファイルとフォルダのアクセス許可を設定、表示、変更、または削除する
ファイルを編集
読み書きできるようになったので、お好きなエディタで「/media/[ユーザー名]/media/[SDカード名]/etc/sudoers」を編集して、間違っている記述を修正してください。sudo vi /media/[ユーザー名]/media/[SDカード名]/etc/sudoers
権限を元に戻す
変更した権限を元に戻します。sudo chmod 440 /media/[ユーザー名]/media/[SDカード名]/etc/sudoers
ls -la で確認すると、権限が「- r-- r-- ---」に戻っています。
PCからSDカードを取り出し、raspiで実行
修正が成功していれば、sudoが実行できるようになります。以上です。
参考になれば嬉しいです。
0 件のコメント :
コメントを投稿