
私のサーバーでAnsibleを設定し、すべてのサーバーでAnsibleユーザーを作成し、それらにsudoアクセス権を与えました。したがって、Ansibleユーザーを使用して別のサーバーにsshするたびにパスワードを要求しないでください。両方のサーバーで正常に構成しましたが、ファイルを変更して別のサーバーで構成すると、システムが/etc/sudoers/
応答しなくなり、端末を再起動し、rootユーザーとしてサーバーにログインしようとするとエラーが発生します。
$ sudo su
/etc/sudoers: syntax error near line 121 <<< sudo: parse error in /etc/sudoers near line 121 sudo: no valid sudoers sources found, quitting sudo: unable to initialize policy plugin
答え1
sudoers
ファイルが破損しているため、sudo
すべてのアクセスが拒否されます。ルートパスワードがある場合は、それを使用して問題を解決できます。
su -
visudo
そうでない場合は、リカバリディスクを使用してシステムを起動し、sudoers
そのようにファイルをリセットする必要があります。はるかに複雑です。
これを防ぐために構文チェックを実行するため、/etc/sudoers
ファイルを使用せずに手動で編集しないでください。visudo
ちなみに、使用する必要はありませんsudo su
(root権限を取得するために使用され、すでにroot権限で再提供するようにsudo
要求します)。または完全に適切かもしれません。su
sudo -s
sudo -i
答え2
ルートパスワードはありませんが、ユーザーアカウントがそのwheel
グループ(またはsudo
Debian / Ubuntuの場合はグループ)にある場合は、もう一度試すことができます。
pkexec visudo
パスワードの入力を求められ(詳細)、ファイルをsudo
編集できます。/etc/sudoers
アクティブなルートセッションが残っておらず、それを取得できない場合(または使用中sudo
)、pkexec
残念ながらダウンタイムなしでこの問題を解決する方法はありません。
私はOracle Cloud OPCに精通していません。ただし、明らかにクラウドサーバー上にあり、これらのサーバーが複数あるため、この問題を解決する最後の方法は、クラウド管理インターフェースを使用してサーバーを強制終了し、問題のクラウドサーバーから仮想マシンディスクの接続を一時的に切断することです。仮想ディスクを2番目のクラウドサーバーに追加ディスクとして追加します。その後、問題サーバーのルートファイルシステムを/mnt
2番目のサーバー(「回復サーバー」)にマウントし、それを実行してvisudo -f /mnt/etc/sudoers
構文エラーを修正できます。これを実行した後、リカバリサーバーからディスクをアンマウントして接続を切断し、問題のあるサーバーに戻します。
クラウド管理インターフェースに仮想マシンでこれを実行するために必要な機能がない場合は、クラウド・オペレーター(Oracleなど)に連絡してサポートを受ける必要があります。彼らはこの種の問題について非常によく知っているでしょう。タイプミスのためにクラウドサーバーへのルートアクセスを失った人は間違いなくあなたが初めてではありません。