Ubuntu で無効な「/etc/sudoers」ファイルを変更するには?


sudovisudo

無効な sudoers ファイルを編集するにはどうすればよいですか?以下のエラーがスローされ、再度編集して修正することはできません.

何が起こるかは次のとおりです.

$ sudo visudo
>>> /etc/sudoers: syntax error near line 28 <<<
sudo: parse error in /etc/sudoers near line 28
sudo: no valid sudoers sources found, quitting


受け入れられた回答



最新の Ubuntu システム (および他の多くの GNU/Linux ディストリビューション) では、破損した sudoers ファイルを修正するのは実際には非常に簡単であり、ライブ CD を使用して再起動したり、マシンに物理的にアクセスしたりする必要はありません.

SSH 経由でこれを行うには、マシンにログインし、コマンド pkexec visudo を実行します.マシンに物理的にアクセスできる場合、SSH は不要です.ターミナル ウィンドウを開いて、その pkexec コマンドを実行するだけです.

あなた (または他のユーザー) が PolicyKit で root としてプログラムを実行することを許可されていると仮定すると、パスワードを入力すると、 visudoroot として実行され、 /etc/sudoers を修正できます.
/etc/sudoers.d の構成ファイルの 1 つを編集する必要がある場合 (この状況では一般的ではありませんが、可能です)、 pkexec visudo -f /etc/sudoers.d/filename を使用します.

問題を解決するために root として追加のシステム管理コマンドを実行する必要がある関連する状況がある場合 (これもこの状況ではまれですが、他の状況では一般的です)、 pkexec bash で対話型の root シェルを開始できます.一般的に言えば、sudo で実行する非グラフィカル コマンドは、代わりに pkexec で実行できます.

(システム上に、PolicyKit で root としてプログラムを実行することを許可されたユーザー アカウントが複数ある場合、それらのアクションのいずれについても、パスワードを要求される前に、使用するアカウントを選択するよう求められます.)


これが機能しない場合 (たとえば、PolicyKit を介してルートとしてプログラムを実行する権限を与えられたユーザーがいない場合) は、Ubuntu ライブ CD (おそらく Ubuntu のインストールに使用した CD など) から起動し、インストールされたシステムのファイルシステムをマウントします. .これを行うには、sudo parted -l を実行してパーティションを表示します.おそらく ext4 パーティションは 1 つだけで、それがルート ファイルシステムです.

インストールされた Ubuntu システムのルート ファイルシステムが /dev/sda1 にあるとします.次に、 sudo mount /dev/sda1 /mnt でマウントできます.次に、インストールされたシステムの sudoers ファイルを sudo nano -w /mnt/etc/sudoers で編集できます.または、さらに良いことに、次のように編集できます

sudo visudo -f /mnt/etc/sudoers


(これにより、間違った構文で sudoers ファイルを保存するのを防ぐことができます).

投稿 How to modify an invalid ‘/etc/sudoers’ file in Ubuntu?Stack All Flow に最初に表示されました.