次のエラーが発生しますsudo
。
$ sudo ls
sudo: /etc/sudoers is owned by uid 1000, should be 0
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin
もちろんchown
、root
使用されていない場合は、sudo
当社のアカウントにパスワードはありませんroot
。
正直なところ、システムがどのように混乱したのかはわかりませんが、今は私が直すべき時です。
通常、回復モードで起動しますが、システムはリモートであり、通常の起動時にVPNを介してのみアクセスできます。同じ理由で、Live CDやUSBスティックから起動するのは非現実的です。
システムはUbuntu 16.04(EOLシャットダウン、質問なし)ですが、質問と回答はおそらくより一般的です。
ベストアンサー1
説明された手順ここ(それ自体が不完全なコピーである可能性があります。Ubuntuの回答に尋ねる)奇跡を起こしました。ここにコピーして説明を追加します。
プログラム
ターゲットサーバーへの2つのSSHセッションを開きます。
最初のセッションで、次を実行してbashのPIDを取得します。
echo $$
2番目のセッションでは、次のコマンドを使用して認証ブローカーを起動します。
pkttyagent --process 29824
手順1で取得したpidを使用してください。
最初のセッションに戻り、次を実行します。
pkexec chown root:root /etc/sudoers /etc/sudoers.d -R
2番目のセッションパスワードプロンプトにパスワードを入力します。
説明する
sudo
と同様に、pkexec
承認されたユーザーが他のユーザー(通常は)としてプログラムを実行できるようにしますroot
。特に認証にpolkitを使用しますorg.freedesktop.policykit.exec
。
これは次のように定義されています/usr/share/polkit-1/actions/org.freedesktop.policykit.policy
。
<action id="org.freedesktop.policykit.exec">
<description>Run programs as another user</description>
<message>Authentication is required to run a program as another user</message>
<defaults>
<allow_any>auth_admin</allow_any>
<allow_inactive>auth_admin</allow_inactive>
<allow_active>auth_admin</allow_active>
</defaults>
</action>
auth_admin
管理ユーザーがこれを実行できることを示します。誰が管理ユーザーになることができますか?
この特定のシステム(Ubuntu 16.04)では、構成は次のとおりです /etc/polkit-1/localauthority.conf.d/51-ubuntu-admin.conf
。
[Configuration]
AdminIdentities=unix-group:sudo;unix-group:admin
したがって、グループ内のすべてのユーザーがsudo
それをadmin
使用できますpkexec
。
最新のシステム(Arch Linux)では、次の場所にあります/usr/share/polkit-1/rules.d/50-default.rules
。
polkit.addAdminRule(function(action, subject) {
return ["unix-group:wheel"];
});
したがって、ここではwheel
グループ内の誰もが管理ユーザーです。
マニュアルページには、pkexec
現在のセッションの認証プロキシがない場合は、pkexec
独自のテキスト認証プロキシが使用されることが示されていますpkttyagent
。実際にプロセスを最初にpkexec
起動せずに実行すると、pkttyagent
システムにメッセージが表示されます。同じシェルでパスワードを入力しましたが、パスワードを入力した後に失敗します。
polkit-agent-helper-1: error response to PolicyKit daemon: GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: No session for cookie
そうだポルケットの古いバグこれは牽引力が得られないようです。もっと議論する。
2つのシェルを使用する秘訣は、ただ解決策この質問について。