web-dev-qa-db-ja.com

他のユーザーがログインしたときにDebianxfceでシャットダウンまたは再起動をブロックする方法

別のユーザーがログインしているときにユーザーがシャットダウンまたは再起動を開始しないようにしたい。ユーザーはTTYユーザー(Ctrl + Alt + F3)またはクライアントホストのsshユーザーにすることができます。

OpenBSDでは、このようなアクションを防ぐために、ルールファイルでpolkit org.xfce.session.policyを使用しています。

Debian Testing(別名バスター)でこれを行う方法を見つける必要があります。
アクションのあるorg.freedesktop.login1.policyを見つけました

  • org.freedesktop.login1.power-off
  • org.freedesktop.login1.power-off-multiple-sessions

これらのアクションのルールファイルを作成しましたが、シャットダウンまたは再起動をブロックしません。
これらのアクションについては、polkitだけが責任を負っていないようです。

これをどこで探すべきかわかりません。おそらくsystemdまたはPAM?

編集

OpenBSDおよびNetBSDでは、デフォルトでは、GUIからシャットダウンまたは再起動することはできません。
次のようなルールファイルを/usr/local/share/polkit-1/rules.d/に作成する必要があります。

polkit.addRule (function (action, subject) {
    if (action.id == "org.xfce.session.xfsm-shutdown-helper")
    {
        return polkit.Result.YES;
    }
});

Debianでは、デフォルトで、すべてのユーザーがGUIからシャットダウンまたは再起動できます。
org.xfce.session.xfsm-shutdown-helperまたはorg.freedesktop.login1.power-offのルールファイルはありません。

return polkit.Result.NO;を使用してルールファイルを追加しようとしましたが、役に立ちませんでした
Debianではlightdmを使用し、BSDではxdmを使用します。

3
ctac_

Debian TestingBusterはpolkit1.05を使用しているため、ルールファイルやjs構文はありません。
古いポリシーキットのiniスタイルを使用する必要があります。
別のユーザーがログインしているときにユーザーがシャットダウンまたは再起動を開始しないようにするには、
/etc/polkit-1/localauthority/50-local.d /に2つのpklaファイルを作成する必要があります

cat /etc/polkit-1/localauthority/50-local.d/Reject_All_Users_To_login1_power-off-multiple-sessions.pkla 
[Reject all users to use login1_power-off-multiple-sessions]
Identity=unix-user:*
Action=org.freedesktop.login1.power-off-multiple-sessions
ResultAny=no
ResultInactive=no
ResultActive=no

cat /etc/polkit-1/localauthority/50-local.d/Reject_All_Users_To_login1_reboot-multiple-sessions.pkla
[Reject all users to use login1_reboot-multiple-sessions]
Identity=unix-user:*
Action=org.freedesktop.login1.reboot-multiple-sessions
ResultAny=no
ResultInactive=no
ResultActive=no

ただし、xfceも/usr/share/polkit-1/actions/org.xfce.session.policyにシャットダウンまたは再起動するアクションをインストールするため、これだけでは不十分です。
このアクションのpklaファイルも/etc/polkit-1/localauthority/50-local.d/に作成する必要があります

cat /etc/polkit-1/localauthority/50-local.d/Reject_All_Users_To_Use_Xfce_Session_Policy.pkla 
[Reject all users to use xfce_session_policy]
Identity=unix-user:*
Action=org.xfce.session.xfsm-shutdown-helper
ResultAny=no
ResultInactive=no
ResultActive=no
0
ctac_