7 votes

Supprimer l'arrêt, la suspension, le redémarrage et la mise en veille prolongée du menu de commutation d'utilisateur

Je suis en train d'utiliser un ordinateur de bureau à la fois comme routeur pour mon réseau local et comme un ordinateur normal avec plusieurs utilisateurs. J'ai Maverick qui fonctionne dessus. De temps en temps, l'un des utilisateurs de l'ordinateur de bureau appuiera accidentellement sur Arrêter, Redémarrer, Mettre en veille ou Mettre en hibernation, ce qui me force à réparer le réseau à des moments aléatoires de la journée. Je sais comment redémarrer et éteindre à partir de la ligne de commande. Je n'ai pas besoin de l'interface GUI.

Comment puis-je supprimer les options Arrêter, Mettre en veille, Redémarrer et Mettre en hibernation du menu de commutation d'utilisateur ? Tout ce que je veux laissé est "Verrouiller l'écran", "Session Invité", la Liste des utilisateurs et "Déconnexion".

Une solution à l'échelle du système serait la meilleure, mais je peux en faire une pour chaque utilisateur si nécessaire.

4voto

Galaxy Z Flip 3 Points 12200

Option 1:

Installer gconf-editor, exécutez gksu gconf-editor et sur /apps/indicator-session/ supprimez le redémarrage et l'arrêt.

Je ne suis pas sûr pour la mise en veille et l'hibernation, peut-être en changeant par no sur /usr/share/polkit-1/actions/org.freedesktop.upower.policy fera l'affaire.


Option 2:

Supprimez le package Indicator session et ajoutez des raccourcis sur le bureau pour vous déconnecter et verrouiller l'écran.

La commande pour vous déconnecter est gnome-session-save --logout-dialog et pour verrouiller l'écran utilisez gnome-screensaver-command --lock.

4voto

Pour Ubuntu 14.04 et 16.04 (Unity)

Utilisez gsettings pour désactiver la plupart des éléments de menu dans le menu de session de l'indicateur et utilisez systemctl pour désactiver la capacité de suspension elle-même au niveau du système systemd. Cette solution n'est cependant pas parfaite.

Comment désactiver les éléments de menu

Pour commencer, recherchez les clés pertinentes à l'aide de la commande gsettings et filtrez avec la commande grep. Utilisez "session" et "menu" comme mots-clés à filtrer deux fois.

$ gsettings list-recursively | grep session | grep menu
com.canonical.indicator.session suppress-logout-menuitem false
com.canonical.indicator.session force-restart-menuitem false
com.canonical.indicator.session suppress-restart-menuitem false
com.canonical.indicator.session suppress-shutdown-menuitem false
com.canonical.indicator.session user-show-menu true

Ensuite, utilisez gsettings pour définir les clés pertinentes avec une valeur opposée aux valeurs actuelles, c'est-à-dire que "false" devient "true", vice versa. Exécutez les commandes suivantes, une par une.

$ gsettings set com.canonical.indicator.session suppress-shutdown-menuitem true
$ gsettings set com.canonical.indicator.session suppress-restart-menuitem true
$ gsettings set com.canonical.indicator.session suppress-logout-menuitem true
$ gsettings set com.canonical.indicator.session user-show-menu false

Pour que la clé suppress-logout-menuitem prenne effet, l'utilisateur peut avoir besoin de recharger le bureau Unity (exécutez la commande unity dans Terminal ou dans l'invite de commande HUD, pas besoin de vous déconnecter ou autre).

Et c'est tout ce qu'il faut faire pour masquer la plupart des éléments de menu.

Avant et après la désactivation des éléments de menu dans l'indicateur de session

En suivant les étapes ci-dessus, tous les éléments de menu sont maintenant masqués dans le menu de session de l'indicateur, sauf l'élément de menu "Suspend". Il y a un bug ouvert concernant l'impossibilité de masquer l'élément de menu Suspend. Confirmer et s'y abonner peut encourager sa résolution.

Étant donné que l'élément de menu ne peut pas être supprimé directement, la solution la plus simple suivante est de désactiver toute suspension au niveau du système.

Comment désactiver la suspension dans Ubuntu 14.04 (Unity, upstart)

Dans la version 14.04, il existe plusieurs façons de désactiver la suspension, c'est-à-dire modifier les fichiers de configuration pour polkit-1 ou pm-utils. Mais il n'y a aucune clarification sur celle qui fonctionnera réellement correctement.

Comment désactiver la suspension dans Ubuntu 16.04 (Unity, systemd)

Dans la version 16.04, désactivez toute suspension avec systemd comme noté sur le Wiki Debian.

$ sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
Created symlink from /etc/systemd/system/sleep.target to /dev/null.
Created symlink from /etc/systemd/system/suspend.target to /dev/null.
Created symlink from /etc/systemd/system/hibernate.target to /dev/null.
Created symlink from /etc/systemd/system/hybrid-sleep.target to /dev/null.

La commande systemctl prendra effet immédiatement. Pas besoin de redémarrer ou autre.

Par conséquent, chaque fois que l'élément de menu "Suspend" est cliqué, le système ne se met pas en veille mais provoque uniquement l'extinction de l'écran et le retour à l'écran de connexion (effet similaire à "Verrouiller l'écran").

Contournement pour un problème connu après la suspension

Même sans suspension réelle, le même problème connu se posera lors de la reprise de la session actuelle : Network manager ne se réveille pas après la suspension. La solution de contournement est de redémarrer le service.

$ sudo systemctl restart network-manager.service

Le gestionnaire de réseau sera redémarré et la mise en réseau sera à nouveau disponible.

Testé et fonctionnant dans Ubuntu 16.04 (Unity), fraîchement installé dans VirtualBox.

2voto

John Dorian Points 161

Pour suspendre et mettre en veille, au lieu de modifier un fichier du package qui sera remplacé lors de la mise à jour du package, on peut utiliser des fichiers dans /etc/polkit-1/localauthority. Désactivez la suspension avec le fichier /etc/polkit-1/localauthority/90-mandatory.d/disable-suspend.pkla contenant :

[Désactiver la suspension]
Identity=unix-user:*
Action=org.freedesktop.upower.suspend
ResultActive=no

Cela s'inspire du fichier /var/lib/polkit-1/localauthority/10-vendor.d/com.ubuntu.desktop.pkla contenant, entre autres, la configuration pour désactiver la mise en veille :

[Désactiver la mise en veille par défaut]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=no

C'est du moins ce que j'utilise sur Ubuntu 12.04.

Plus d'informations sur l'autorité locale PolicyKit : http://hal.freedesktop.org/docs/polkit/pklocalauthority.8.html

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X