Linux

其他使用者登錄時如何在 Debian xfce 中阻止關機或重啟

  • December 30, 2018

我想防止使用者在其他使用者登錄時啟動關機或重啟。使用者可以是 TTY 使用者 (Ctrl+Alt+F3) 或來自客戶端主機的 ssh 使用者。

在 OpenBSD 中,我使用帶有規則文件的 polkitorg.xfce.session.policy來防止此類操作。

我需要在 Debian 測試(又名 Buster)中找到如何做到這一點。

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.

Debian Testing Buster 使用 polkit 1.05,所以沒有規則文件,也沒有 js 語法。

您必須使用舊的 policykit ini 樣式。

為了防止使用者在其他使用者登錄時啟動關機或重啟,

您必須在 /etc/polkit-1/localauthority/50-local.d/ 中創建兩個 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 中安裝了關閉或重啟的操作。

您還必須在 /etc/polkit-1/localauthority/50-local.d/ 中為此操作創建一個 pkla 文件

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

引用自:https://unix.stackexchange.com/questions/491038