GNU/Linux >> Linux の 問題 >  >> Linux

root 以外のユーザーがシャットダウンや再起動を実行できないようにする正しい方法は何ですか?

  • pklocalauthority は廃止されました
  • systemd と logind および polkit が必要です。

利用可能なアクション

pkaction
# or /usr/share/polkit-1/actions/

/usr/share/polkit-1/actions/org.freedesktop.login1.policy を見てください。

ルールを追加

最初にシステム メッセージの監視を開始して、新しいルールが機能するかどうかを確認します。

journalctl -f

次に、ファイル /etc/polkit-1/rules.d/60-noreboot_norestart.rules を作成します (javascript)

このファイルでは、アクションをチェックして users を許可するロジックを追加します。 power で group または require su 承認:

polkit.addRule(function(action, subject) {
    if (action.id == "org.freedesktop.login1.reboot" ||
        action.id == "org.freedesktop.login1.reboot-multiple-sessions" ||
        action.id == "org.freedesktop.login1.power-off" ||
        action.id == "org.freedesktop.login1.power-off-multiple-sessions") {
        if (subject.isInGroup("power")) {
            return polkit.Result.YES;
        } else {
            return polkit.Result.AUTH_ADMIN;
        }
    }
});

ルールがロードされ、機能するはずです。以下の参照。

<オール>
  • https://lists.fedoraproject.org/pipermail/users/2013-September/440457.html
  • https://wiki.archlinux.org/index.php/Polkit#Authorization_rules
  • http://www.freedesktop.org/software/polkit/docs/latest/polkit.8.html
  • https://bbs.archlinux.org/viewtopic.php?pid=1335204#p1335204

  • まず、ConsoleKit のシャットダウン機能は、「単一ユーザー」と「複数ユーザー」を 2 つの異なる状況と見なすことに注意してください。他のユーザーがログインしている場合、システムをシャットダウンするには常に管理者認証が必要です。

    このようなアクションはすべて PolicyKit によって管理されます。ポリシーを調整したい場合は、polkit(8) – /etc/polkit-1/rules.d/20-disallow-shutdown.rules で説明されているように行うことができます。 :

    polkit.addRule(function(action, subject) {
        if ((action.id == "org.freedesktop.consolekit.system.stop" ||
             action.id == "org.freedesktop.consolekit.system.restart") &&
            subject.isInGroup("users")) {
                return subject.active ? polkit.Result.AUTH_ADMIN : polkit.Result.NO;
        }
    });
    

    PolicyKit 0.105 以前のバージョンでは、これが pklocalauthority(8) – /etc/polkit-1/localauthority/50-local.d/20-disallow-shutdown.pkla に文書化されています。 :

    [Disallow shutdown]
    Identity=unix-group:users
    Action=org.freedesktop.consolekit.system.stop;org.freedesktop.consolekit.system.restart
    ResultAny=no
    ResultInactive=no
    ResultActive=auth_admin
    

    Action s は、ConsoleKit ポリシー ファイルにリストされているか、pkaction を実行してリストされています。 .


    Linux
    1. `ls`が出力をソートしないようにするにはどうすればよいですか?

    2. ユーザーがルートディレクトリにアクセスできないようにする方法は?

    3. inotify を使用する適切な方法は何ですか?

    1. コンソール (Ctrl-C) から強制終了されたときに PyQt アプリケーションを終了させる正しい方法は何ですか?

    2. Linux / OS Xでmongodサービスを開始する正しい方法は何ですか?

    3. Linuxにjdkをインストールする正しい方法は何ですか

    1. コマンド ラインからファイルにテキストを追加する最も簡単な方法は何ですか?

    2. Linux ユーザーを検証するための正規表現は何ですか?

    3. Linux で CPU 速度を表示する正しい方法は何ですか?