
誤ってファイルに間違いを犯してしまいsudoers
、ファイルを変更しようとすると権限が拒否されるというメッセージが表示されるため、修正できません。 を使用してファイルをsudo
開こうとすると、構文エラーと有効なsudoers
ソースが見つからないというメッセージが表示され、コマンドが実行されません。私は Debian の一種である raspbian を使用しています。
このジレンマから抜け出す方法を誰か知っていますか?
答え1
- パスワードが分かっている場合
root
(そしてパスワードが設定されている場合)、su
を使用して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
再びできます。
ふう!