L'accesso dell'utente a queste azioni è controllato da polkit. In particolare, corrispondono alle seguenti azioni:
org.freedesktop.consolekit.system.stop
org.freedesktop.consolekit.system.restart
org.freedesktop.upower.suspend
org.freedesktop.upower.hibernate
Tutte queste azioni sono consentite per impostazione predefinita per gli utenti locali attivi (anche se consolekit
limita ulteriormente le prime due autorizzazioni a funzionare solo quando un singolo utente ha effettuato l'accesso al sistema).
Se si desidera disabilitare queste azioni, creare un file /etc/polkit-1/50-local.d/disable-shutdown.pkla
contenente qualcosa come:
[Disable shutdown/whatever]
Identity=unix-user:*
Action=org.freedesktop.consolekit.system.stop;org.freedesktop.consolekit.system.restart;org.freedesktop.upower.suspend;org.freedesktop.upower.hibernate
ResultAny=no
ResultInactive=no
ResultActive=no
Ciò dovrebbe impedire il completamento di tali azioni. Ulteriori informazioni su questi file delle politiche sono disponibili eseguendo man pklocalauthority
.
Se stai cercando di limitare root
, tuttavia, questo sarà solo un piccolo inconveniente. Per definizione, root
è un account senza restrizioni secondo il tradizionale sistema di controllo dell'accesso discrezionale UNIX. Se non puoi fidarti degli utenti a cui hai dato pieno root
accesso, allora hai problemi più grandi di loro semplicemente spegnendo il sistema.
Si noti che nelle versioni successive di Ubuntu qualcuno ha deciso di interrompere la compatibilità. Come risposto in Come disabilitare l'arresto / riavvio da lightdm in 14.04? l'azione sembra essere cambiata in "org.freedesktop. login1 .reboot" (e simili).
Ad esempio in 14.04 aggiungendo le seguenti righe come /etc/polkit-1/localauthority/50-local.d/restrict-login-powermgmt.pkla
funzionano:
[Disable lightdm PowerMgmt]
Identity=unix-user:*
Action=org.freedesktop.login1.reboot;org.freedesktop.login1.reboot-multiple-sessions;org.freedesktop.login1.power-off;org.freedesktop.login1.power-off-multiple-sessions;org.freedesktop.login1.suspend;org.freedesktop.login1.suspend-multiple-sessions;org.freedesktop.login1.hibernate;org.freedesktop.login1.hibernate-multiple-sessions
ResultAny=no
ResultInactive=no
ResultActive=no
Inoltre, questo metodo blocca solo i comandi di riavvio / etc emessi dalla GUI. Per bloccare i comandi di riavvio / etc dalla riga di comando è possibile utilizzare molly-guard - come spiegato in Disabilitare il comando di arresto per tutti gli utenti, anche root - conseguenze?
shutdown
epm-suspend
da/sbin/
e/bin/