無効な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
無効な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
コマンドを実行するだけです。
あなた(または他のユーザー)がroot
PolicyKitのようにプログラムを実行する権限を持っていると仮定すると、パスワードを入力すると、visudo
として実行されroot
、を修正できます/etc/sudoers
。
/etc/sudoers.d
(この状況ではまれですが、可能です)の構成ファイルの1つを編集する必要がある場合は、を使用します。pkexec visudo -f /etc/sudoers.d/filename
問題を解決するためにrootとして追加のシステム管理コマンドを実行する必要がある関連状況がある場合(この状況でも珍しいが、他の状況では一般的です)、でインタラクティブルートシェルを起動できますpkexec bash
。一般的に言えば、実行するグラフィカルではないコマンドはsudo
、pkexec
代わりに実行できます。
(システムにroot
PolicyKitのようにプログラムの実行が許可されているユーザーアカウントが複数ある場合、これらのアクションのいずれかについて、パスワードを要求される前に、使用するアカウントを選択するように求められます。)
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ファイルを誤った構文で保存できなくなります)。
#include
ディレクティブはsudoers
特別に扱われます。その#
場合、行頭は行の残りをコメントとして解釈しません。man sudoers
言う:「シャープ記号( 『#』)を...それは#includeディレクティブのか、しない限り、一部でない限り(コメントを示すために使用される」も参照してください。visudoを:#includedir sudoers.d(からアーカイブlzone.de/ブログ)。
pkexec visudo
、正しいパスワードを受け入れないパスワードを要求します。「AUTHENTICATION FAILED」エラーがスローされます。
常にvisudo
sudoersファイルの編集に使用し、自分で直接編集しないでください。検証しない限り、ディスクに保存できません。
入力する:
pkexec visudo
次に、最後の行を変更します
#includedir /etc/sudoers
に:
#includedir /etc/sudoers.d
それはあなたの問題を解決するはずです。
#
から#includedir
、原因構文エラーが#
少なくともUbuntuの12.10で、ディレクティブの一部です。
私のような誰かがpkexecをインストールしていないか、vi、visudo、nanoまたは他のエディターを実行してsudoersファイルを変更できなかった場合、このプロセスで確実にできます。
rwのブートデバイスを再マウントし、ユーザーにexec権限を適用し、ファイルを編集します
mount -n -o remount,rw /
chmod u+x /etc/sudoers
nano /etc/sudoers
その間違いを修正して幸せになります:)
visudo
代わりに使用しますnano /etc/sudoers
。
sudoers
ファイルを台無しにした場合、次のことを行う必要があります。
visudo
、ファイルを修正ソース:-http : //mario.net.au/content/recover-etcsudoers-ubuntu-1204
#include sudoer.dを削除しても、#include sudoer.dを削除しても違いはありません。
ただし、構文エラーがないことを確認してください。私は同じ問題を抱えていましたが、修正に何時間も費やし、それらが構文エラーであるとわかりました。マニュアルを参照して、正しく作成してください。
たとえば、ユーザー名は次のようになります。
dolly ALL = (ALL) ALL NO PASSWD: ALL
正しい構文は
dolly ALL = (ALL) ALL //give permission to everything, not good
または
dolly ALL=(ALL) NOPASSWD:/usr/bin/thurderbird //good, give specific permission
お役に立てれば
thunderbird
。一見シンプルな機能でさえ、完全なルートアクセスへの扉を開きます。たとえば、ルートとして任意の場所にファイルを保存できるプログラムを実行できるユーザーは、完全なルートアクセス権を取得できます(独自のをインストールする/etc/sudoers
か、構文上の制限によりそれをインストールできない場合は、独自のをインストールできます/etc/crontab
)。
VirtualBoxで実行されているUbuntu 16.04(違いはありません)では、上記の方法は機能しませんでした(ファイルの最後の無効な行)。うまくいったのは:
su -
を入力してから独自のユーザー名のパスワードを入力します。root@ubuntu-xenial:~#
なければ、プロンプトが表示されます/etc/sudoers
。その場合に何が起こるかわからない。visudo
、ファイルを実行して修正するだけです。Ctrl + X
、変更されたバッファを保存するように求められます。を押しY
てEnter
あなた/etc/sudoers
が空であるか何かが欠落している場合、あなたがそれを編集できる場合、私のコンテンツは次のとおりです
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
root ALL=(ALL:ALL) ALL
%admin ALL=(ALL) ALL
%sudo ALL=(ALL:ALL) ALL