Sudoers ファイルが壊れています

Sudoers ファイルが壊れています

誤ってファイルに間違いを犯してしまいsudoers、ファイルを変更しようとすると権限が拒否されるというメッセージが表示されるため、修正できません。 を使用してファイルをsudo開こうとすると、構文エラーと有効なsudoersソースが見つからないというメッセージが表示され、コマンドが実行されません。私は Debian の一種である raspbian を使用しています。

このジレンマから抜け出す方法を誰か知っていますか?

答え1

  1. パスワードが分かっている場合root(そしてパスワードが設定されている場合)、suを使用してrootを編集できます/etc/sudoers
  2. ルート ファイルシステムが SD カード上にある場合は、/etc/sudoersカード リーダーがあれば、それを PC または他のデバイスにプッシュして編集できます。
  3. U-Boot (ブートローダ) コマンドライン (通常はキーボードのボタンを押すか UART 経由で) を入力し、1Linux カーネルコマンドラインに追加してシングルユーザーモードに入ることができます。このモードでは、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再びできます。

ふう!

関連情報