グラフィカル sudo プロンプトを使用して systemctl を停止する

グラフィカル sudo プロンプトを使用して systemctl を停止する

私の質問は、sudo を入力し忘れたときにこの迷惑なポップアップが開かないように systemd(?) を構成するにはどうすればよいかということです。テキストベースの sudo プロンプトを表示するか、エラーを表示して、間違いをすぐに修正できるようにしてください。

これは Arch Linux の最新版 (systemd 238.133) です。

ここに画像の説明を入力してください

答え1

これは「sudo」プロンプトではなく、「polkit」プロンプトです。これを回避する方法の1つは、全てsystemctl だけでなくソフトウェアでも、アクションを即座に拒否する (または即座に許可する) polkit ルールを記述することが非常に重要です。

polkit.addRule(function(action, subject) {
    if (subject.user !== "root") {
        if (/^org\.freedesktop\.systemd1\./.test(action.id)) {
            return polkit.Result.NO;
        }
    }
});

( subject.userroot によって呼び出されるアクションは polkit チェックを完全にバイパスするため、テストは省略できます。)

polkitルールは に保存され/etc/polkit/rules.d/*.rules、通常は のように名前が付けられます80-custom.rules(昇順で処理されます)。詳細については、ポルキット(8)


(ただし、sudo設定がパスワードなしの場合、「sudo」を使用することとpolkitにすぐにアクションを許可させることの間に実質的なセキュリティ上の違いはありません。また、sudo必要パスワード... では、それを polkit ダイアログに入力すればいいのではないでしょうか。同じパスワードです。

答え2

オプションがあります--no-ask-password。エイリアスを作成します。

alias systemctl='systemctl --no-ask-password'

(Bash、Kubuntu でテスト済み)。

答え3

systemctlにはsudoを使用しないでください。これまで; もし、あんたがメンテナンスを許可し、polkit を適切にセットアップします。

根拠: は、sudo要求されたユーザー(通常は )によって効果的に実行されるプログラムを作成しますroot。リンクされたすべてのツールキットを含みます。プログラム、ライブラリ、または...sudo構成にバグがあると、脆弱になります。 の場合systemdsystemctlバイナリはコントローラ(一般的に)。それはではないは(ほとんどの使用例では)ルート権限を必要とします。これは、それ自体では特権操作を実行せず、 を要求するためですinit。実際のrootアカウント(直接または 経由sudo)を使用することは、全か無かの原子爆弾の解決策ですが、のみ必要なのは、許可するいいえ: 認証に対してsystemdsystemd理解してpolkitいるので承認、使用認証済みroot付与された権限が多すぎるだけです。

のバグを考えてみましょうsystemctl。このバグにより、任意のコマンドを直接 ( 経由ではなくsystemd) 呼び出すことができます。rootによって権限が付与されている場合sudo、EUID=0 で任意のコマンドを実行できます。systemctl権限のないユーザーとして実行する場合、そのようなコマンドは、以前にアクセスを取得したアカウントでのみ実行できます。これは、いくつかの基本的なセキュリティ ルールの単純な結果です。

  • 必要な権限セットのみを使用する(完全なセットではない == root)、
  • これらの権限は、それを必要とするコードにのみ付与します (systemdに権限を付与せずにを承認しますsystemctl)。

マシンの唯一のユーザーであることに関して言えば、特権のないアカウント (1 つではない) を使用して作業する場合、root実行するプログラムが余分な権限を取得しないように制限する必要があると思います。アカウントがコマンドを実行するsystemctlためだけに権限を付与することは、そのような余分な権限です。rootauthorizedsystemd

さらに、 を使用すると、polkitさまざまなアクション (開始/停止/リロードなど) やさまざまなサービスに対して、異なるアクセス基準を設定できます。 に正確なコマンドを入力することもできますsudoersが、polkit ソリューションはそのようなコマンドの特定の部分を認識します。

結論sudo:より権限の低い方法が利用できる場合は使用しないでください。sudoこれは、すべてまたは何もない最後の手段の解決策です。

パスワードプロンプトをグラフィックではなくテキストで表示したい場合は、DISPLAY の設定を解除します。例:認証エージェントを実行するグ​​ラフィカル セッションからターミナルをアンバインドします。

関連情報