Comment désactiver l'arrêt / le redémarrage / la suspension / l'hibernation?


12

J'ai un PC de bureau Ubuntu 10.04 LTS avec GNOME.

Comment puis-je désactiver complètement les fonctions de redémarrage / arrêt / suspension / mise en veille prolongée dans GNOME ou même avec root? Pour que la racine donne la commande "reboot" ou "pm-suspend", elle ne fait rien et la machine continue. Comment puis-je désactiver complètement ces "fonctionnalités" de base?


Je ne sais pas? En tant que kiosque? vous venez de supprimer shutdownet pm-suspendde /sbin/et/bin/
Amith KK

Ces fichiers pourraient être dans le cache, non? Les supprimer annulera définitivement la fonction de redémarrage / arrêt / suspension / hibernation même dans GNOME?
LanceBaynes

Oui, ce serait probablement le cas @Lance Baynes
Amith KK

Réponses:


15

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?


3
A cessé de travailler ici avec Ubuntu 13.10 !!!
GabrieleV

@GabrieleV Peut-être que la version avec login1 fonctionne en 13.10? Je l'ai testé en 14.04 - et j'espère que personne chez Canonical ne rompt la compatibilité descendante dans polkit dans chaque version pour le plaisir.
réduction de l'activité

Comme autre point de données, je viens de l'utiliser avec succès sur le nouveau Ubuntu 18.04.1 LTS, pour interdire l'arrêt et le redémarrage (mais permettre l'hibernation et la suspension). Notez que je devais utiliser ces noms «login1»; que j'ai également désactivé «halt» et «halt-multiple-sessions»; que je l'ai fait parce que j'ai trouvé ces actions dans /usr/share/polkit-1/actions/org.freedesktop.login1.policy; et enfin, que dans l'interface utilisateur gdm3 d'Ubuntu 18.04, les boutons de la boîte de dialogue de confirmation ne sont pas masqués, mais ils n'ont tout simplement aucun effet.
MarnixKlooster ReinstateMonica

6

Pensez à installer molly-guard .

sudo apt-get install molly-guard

Ce package empêchera l'arrêt / redémarrage / suspension / mise en veille prolongée involontaire en vous invitant de manière interactive à saisir le nom d'hôte du système.

Cependant, il est trivial de configurer molly-guard pour désactiver complètement l'arrêt / le redémarrage / la suspension / l'hibernation. Créez simplement un fichier exécutable dans /etc/molly-guard/run.d/99-prevent-all qui contient ceci:

#!/bin/sh
exit 1

Notez qu'il protège uniquement contre les commandes émises à partir de la ligne de commande, shutdown / reboot / suspend / hibernate issu de l'interface graphique le contourne. Pour bloquer également l'interface graphique en utilisant le redémarrage, on peut utiliser des règles polkit .


Il s'agit d'une bonne solution pour un ordinateur multi-utilisateurs où l'administrateur doit travailler et empêcher tous les autres utilisateurs de s'arrêter pendant un certain temps.
Alexis Wilke

1
Fonctionne à partir de la console, mais même avec molly-guard en place (et réglé sur 'toujours demander'), l'arrêt se poursuit sans demander lors du lancement depuis GNOME (3.4).
Jan

Ouais, ça ne marche plus ... Depuis le 13.10, peut-être le 13.04.
Alexis Wilke

3

AVERTISSEMENT! Les commandes répertoriées ici sont dangereuses à utiliser. Ne les utilisez pas à vos risques et périls!

chmod -x /usr/sbin/pm-suspend
chmod -x /sbin/reboot
chmod -x /sbin/shutdown

4
Pouvez-vous étayer votre réponse? Je ne pense sûrement pas qu'il voulait éliminer les possibilités de redémarrage et d'arrêt.
viyyer

Comment pourrait-on réactiver l'hibernation de cette façon?
Gabriel Fair

utilisez "chmod + x" et non "chmod -x"
LanceBaynes

5
Avertissement! Ne faites pas cela Ces commandes sont liées par des liens symboliques /bin/systemctlet en supprimeront le bit exécutable. Il s'agit d'un exécutable critique qui contrôle également service SERVICE_NAME [stop|start|restart]. Votre système ne démarrera probablement plus (si vous pouvez l'arrêter).
Daniel F

J'ai exécuté ces commandes sur un VPS ubuntu. Arrêtez le VPS de l'hôte, l'arrêt a échoué. Il a tué le démon SSH. La force s'est arrêtée et a commencé, SSH peut très bien. Après le redémarrage /bin/systemctlest défini en lecture-écriture uniquement-rw-r--r-- 1 root root
kryo

0

En s'appuyant sur la réponse d'OP, vous pouvez faire

for file in $(/sbin/shutdown /sbin/reboot /usr/sbin/pm-suspend); do
    mv $file $file.bak && touch $file
done

Cela renomme les liens symboliques et les remplace par des fichiers vierges. Cela empêchera l'arrêt de la ligne de commande, je ne sais pas si les commandes GUI l'appellent ou font leur propre chose, vous devrez peut-être également faire la réponse acceptée.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.