Sur un système Unix traditionnel, les utilisateurs non root ne peuvent pas le faire. Qu'est-ce qui donne aux utilisateurs cette capacité dans les environnements de bureau modernes et comment pourrais-je désactiver cette fonctionnalité, utilisateur par groupe?
J'ai vu un excellente méthode pour empêcher quiconque d'arrêter/de suspendre, mais idéalement, ce que je recherche, c'est pour empêcher certains utilisateurs (par exemple, en les ajoutant/les supprimant d’un certain groupe d’utilisateurs) de pouvoir exécuter un arrêt, un redémarrage, une suspension.
Comme mentionné dans l'autre question, vous pouvez contrôler ces actions via le système d'autorité locale de PolicyKit.
Si vous créez un fichier /etc/polkit-1/50-local.d/restrict-shutdown.pkla
avec un contenu tel que:
[Disable shutdown/etc for group restricted]
Identity=unix-group:restricted
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 empêchera tout membre du groupe restricted
d'effectuer les actions correspondantes. Sinon, si vous souhaitez restreindre des utilisateurs individuels, remplacez unix-group:restricted
par unix-user:user1;unix-user:user2;...
. Tout utilisateur non associé à cette stratégie doit se retrouver avec le comportement par défaut.
Créez et éditez ce fichier en tant que root:
/etc/polkit-1/localauthority/50-local.d/power-management.pkla
Copiez et collez ce qui suit:
[Disable shutdown/restart for users jim jane]
Identity=unix-user:jim;unix-user:jane
Action=org.freedesktop.login1.reboot;org.freedesktop.login1.reboot-multiple-sessions;org.freedesktop.login1.power-off;org.freedesktop.login1.power-off-multiple-sessions
ResultAny=no
ResultInactive=no
ResultActive=no
[Disable suspend/hibernate for users jim jane]
Identity=unix-user:a;unix-user:vvpinker
Action=org.freedesktop.login1.suspend;org.freedesktop.login1.suspend-multiple-sessions;org.freedesktop.login1.hibernate;org.freedesktop.login1.hibernate;org.freedesktop.login1.hibernate-multiple-sessions
ResultAny=no
ResultInactive=no
ResultActive=no