誤ってsudoers
ファイルを間違えてしまったので、ファイルを変更しようとすると、承認拒否メッセージが表示されるため、変更できません。sudo
ファイルを開くと構文エラーが表示され、有効なソースが見つからず、sudoers
コマンドは実行されません。私はDebianのバージョンであるraspbianを使用しています。
このキャッチ22から抜け出す方法を知っている人はいますか?
答え1
- パスワードを知って
root
設定した場合は、su
Beenを使ってroot
編集できます/etc/sudoers
。 - ルートファイルシステムがSDカードにある場合は、それを取り出し、
/etc/sudoers
PCまたは他のデバイス(カードリーダーがある場合)で編集できます。 - U-Boot(ブートローダ)コマンドラインを入力し(通常はキーボードのボタンを押すか、UART経由で)、
1
Linuxカーネルコマンドラインに追加してシングルユーザーモードに入ります。このモードではroot
編集できます/etc/sudoers
。また、見ることができますこれ。
答え2
シングルユーザーモードで起動する必要があります。
https://serverfault.com/questions/482079/debian-boot-to-single-user-mode
ルートとしてsudoersファイルを編集して問題を解決できます。visudo
visudoはファイルを保存する前にファイルの構文チェックを実行するため、後でこの操作をやり直す必要がないように、このコマンドを使用してsudoersファイルを編集することをお勧めします。
答え3
クラウドインスタンスを使用すると、さらに問題が発生します。
ディストリビューションによっては、いくつかのテクノロジがありますが、すでにDockerをインストールして実行している場合は、通常Dockerコンテナで問題を解決できます。これは通常、Dockerサービスがルートとして実行され、コンテナ内にマウントされたボリュームで実行されるすべての操作がホストシステムのルートによって影響を受けるためです。
ホストマシンから:
docker run --rm -ti -v /etc:/usr/local/etc busybox sh
「busybox」は、ダウンロードに時間がかかることのない素晴らしい小さなディストリビューションです。動作するシェルを含むDockerイメージがすでに存在する場合は、そのイメージを使用してください。
Dockerコンテナから:
cd /usr/local/etc
vi sudoers
/etc/sudoers.d/
ディレクトリに誤ったファイルを追加した可能性があります。このような場合は、単にファイルを削除するだけで十分です。
コンテナをシャットダウンすると、やり直すsudo
ことができます。
うわー!