L'accès des utilisateurs à ces actions est contrôlé par polkit. En particulier, ils correspondent aux actions suivantes:
org.freedesktop.consolekit.system.stop 
org.freedesktop.consolekit.system.restart 
org.freedesktop.upower.suspend 
org.freedesktop.upower.hibernate 
Toutes ces actions sont autorisées par défaut pour les utilisateurs locaux actifs (bien que consolekitles deux premières autorisations ne fonctionnent plus que lorsqu'un seul utilisateur est connecté au système).
Si vous souhaitez désactiver ces actions, créez un fichier /etc/polkit-1/50-local.d/disable-shutdown.pklacontenant quelque chose comme:
[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
Cela devrait empêcher ces actions de se terminer. Pour plus d'informations sur ces fichiers de stratégie, exécutez man pklocalauthority.
Si vous essayez de restreindre rootcependant, ce ne sera qu'un inconvénient mineur. Par définition, rootest un compte sans restriction selon le système de contrôle d'accès discrétionnaire UNIX traditionnel. Si vous ne pouvez pas faire confiance aux utilisateurs rootauxquels vous avez accordé un accès complet , alors vous avez de plus gros problèmes qu'eux en arrêtant le système.
Notez que dans les versions ultérieures d'Ubuntu, quelqu'un a décidé de rompre la compatibilité. Comme répondu dans Comment désactiver l'arrêt / redémarrage de lightdm dans 14.04? l'action semble avoir changé en "org.freedesktop. login1 .reboot" (et similaire).
Par exemple, en 14.04, l'ajout des lignes suivantes /etc/polkit-1/localauthority/50-local.d/restrict-login-powermgmt.pklafonctionne:
[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
De plus, notez que cette méthode bloque uniquement les commandes de redémarrage / etc émises depuis l'interface graphique. Pour bloquer les commandes de redémarrage / etc de la ligne de commande, on peut utiliser molly-guard - comme expliqué dans Désactiver la commande d'arrêt pour tous les utilisateurs, même root - conséquences?
               
              
shutdownetpm-suspendde/sbin/et/bin/