Entfernen Sie Shutdown, Suspend, Restart und Hibernate aus dem Benutzerumschalter-Menü

7

Ich verwende einen Desktop sowohl als Router für mein lokales Netzwerk als auch als normalen Desktop mit mehreren Benutzern. Ich habe Maverick drauf. Gelegentlich drückt einer der Desktop-Benutzer versehentlich auf Herunterfahren, Neustart, Anhalten oder Ruhezustand, was dazu führt, dass ich das Netzwerk zu zufälligen Tageszeiten reparieren muss. Ich weiß, wie man über die Befehlszeile neu startet und herunterfährt. Ich brauche die GUI-Oberfläche nicht.

Wie kann ich die Optionen Herunterfahren, Anhalten, Neustarten und Ruhezustand aus dem Benutzerumschaltmenü entfernen? Ich möchte nur noch den "Sperrbildschirm", "Gastsitzung", die Benutzerliste und "Abmelden" übrig.

Eine systemweite Lösung wäre am besten, aber ich kann bei Bedarf eine für jeden Benutzer durchführen.

Azendale
quelle
Wenn Sie weg finden, nehmen Sie einfach diese Optionen aus der GUI. Dann würde es Ihr Problem heilen. Aber es wird sehr langweilig und riskant sein. Was ich befürchten würde, ist diese Änderung vorzunehmen und das System nicht einmal über die Eingabeaufforderung neu starten zu lassen.
Freebird
1
@freebird Es tut mir leid, aber ich kann Ihrem Kommentar nicht zustimmen. Eine GUI-Option zum Herunterfahren ist nicht obligatorisch. Server führen meistens keine Desktop-Umgebung wie GNOME aus und können nach Belieben neu
gestartet
Die neueste Problemumgehung für Ubuntu 17.04 finden Sie in diesem Beitrag , in dem vorgeschlagen wird, Dateien unter zu ändern /usr/share/polkit-1/actions. Dies kann jedoch durch Aktualisierungen überschrieben werden. PS: Ich kann später eine andere Antwort für Ubuntu 16.04 posten.
Clearkimura

Antworten:

4

Option 1:

Installieren Sie den gconf-Editor , führen Sie gksu gconf-editorand Apps / Indicator-Session / aus und unterdrücken Sie den Neustart und das Herunterfahren.

Ich bin nicht sicher zu suspendieren und Hibernate, vielleicht zu ändern , <allow_active>um noauf /usr/share/polkit-1/actions/org.freedesktop.upower.policyden Trick.


Option 2:

Entfernen Sie das Indikator-Sitzungspaket und fügen Sie Desktop-Verknüpfungen zum Abmelden und Sperren des Bildschirms hinzu.

Der Befehl zum Abmelden lautet gnome-session-save --logout-dialogund zum Sperren des Bildschirms gnome-screensaver-command --lock.

sergio91pt
quelle
1
Die erste Option funktioniert. Ich bin mir nicht sicher, ob Sie die CLI damit noch anhalten oder in den Ruhezustand versetzen können, aber das spielt auf diesem Computer keine Rolle. Vielen Dank!
Azendale
4

Für Ubuntu 14.04 und 16.04 (Unity)

Verwenden Sie gsettingsdiese Option, um die meisten Menüelemente im Anzeigesitzungsmenü systemctlzu deaktivieren und um die Suspend-Fähigkeit selbst auf Systemebene zu deaktivieren. Diese Lösung ist jedoch nicht perfekt.

So deaktivieren Sie Menüelemente

Suchen Sie zunächst mit dem gsettingsBefehl nach relevanten Schlüsseln und filtern Sie mit dem grepBefehl. Verwenden Sie "Sitzung" und "Menü", damit Schlüsselwörter zweimal gefiltert werden.

$ 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

Verwenden Sie dann gsettings, um relevante Schlüssel mit einem Wert festzulegen, der den aktuellen Werten entgegengesetzt ist, dh "false" wird zu "true" und umgekehrt. Führen Sie die folgenden Befehle nacheinander aus.

$ 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

Damit der suppress-logout-menuitemSchlüssel wirksam wird, muss der Benutzer möglicherweise den Unity-Desktop neu laden ( unityBefehl in Terminal oder HUD-Eingabeaufforderung ausführen , keine Abmeldung erforderlich oder ähnliches).

Und das ist alles, um die meisten Menüpunkte auszublenden.

Vor und nach dem Deaktivieren von Menüelementen in der Anzeigesitzung

Wenn Sie die obigen Schritte ausführen, werden jetzt alle Menüelemente mit Ausnahme des Menüelements "Anhalten" im Anzeigesitzungsmenü ausgeblendet. Es gibt einen offenen Fehler bezüglich der Unfähigkeit, den SuspendMenüpunkt auszublenden . Das Bestätigen und Abonnieren kann die Lösung fördern.

Da der Menüpunkt nicht direkt unterdrückt werden kann, besteht die nächst einfachere Lösung darin, eine Aussetzung auf systemweiter Ebene zu deaktivieren.

So deaktivieren Sie suspend in Ubuntu 14.04 (Unity, upstart)

In Version 14.04 gibt es verschiedene Möglichkeiten, die Suspendierung zu deaktivieren, dh Konfigurationsdateien für polkit-1oder zu bearbeiten pm-utils. Es gibt jedoch keine Klarstellung, welche tatsächlich richtig funktionieren wird.

So deaktivieren Sie suspend in Ubuntu 16.04 (Unity, systemd)

Deaktivieren Sie in Version 16.04 alle Suspendierungen mit systemd, wie im Debian-Wiki angegeben .

$ 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.

Der systemctlBefehl wird sofort wirksam. Kein Neustart oder ähnliches.

Wenn der Menüpunkt "Anhalten" angeklickt wird, geht das System daher nicht in den Ruhezustand, sondern bewirkt nur, dass der Bildschirm leer wird und zum Anmeldebildschirm zurückkehrt (ähnlich wie bei "Bildschirm sperren").

Problemumgehung für bekanntes Problem nach dem Anhalten

Auch ohne tatsächliche Unterbrechung tritt das gleiche bekannte Problem auf, wenn die aktuelle Sitzung fortgesetzt wird: Der Netzwerkmanager wird nach der Unterbrechung nicht aktiviert . Die Problemumgehung besteht darin, den Dienst neu zu starten.

$ sudo systemctl restart network-manager.service

Der Netzwerkmanager wird neu gestartet und das Netzwerk ist wieder verfügbar.

Getestet alle oben in Ubuntu 16.04 (Unity), neu in VirtualBox installiert.

Clearkimura
quelle
1
Interessant. Es ist seltsam, dass es keinen Schlüssel zum Anhalten gibt, sondern nur Herunterfahren, Neustarten, Abmelden und das Benutzermenü.
Elder Geek
1
In Verbindung stehender Beitrag: Wie deaktiviere Suspend in 14.04? . Ich habe kein Ubuntu 14.04, daher kann ich dies nicht von meiner Seite aus testen. Ich habe jedoch relevanten Text hinzugefügt, der später von jedem ersetzt werden kann, der die Antwort verbessern möchte.
Clearkimura
3

Für das Anhalten und den Ruhezustand können anstelle der Bearbeitung einer Paketdatei, die beim Aktualisieren des Pakets ersetzt wird, Dateien in verwendet werden /etc/polkit-1/localauthority. Deaktivieren Sie suspend mit der Datei, /etc/polkit-1/localauthority/90-mandatory.d/disable-suspend.pkladie Folgendes enthält:

[Disable suspend]
Identity=unix-user:*
Action=org.freedesktop.upower.suspend
ResultActive=no

Dies ist inspiriert von der Datei /var/lib/polkit-1/localauthority/10-vendor.d/com.ubuntu.desktop.pkla, die unter anderem die Konfiguration zum Deaktivieren des Ruhezustands enthält:

[Disable hibernate by default]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=no

Zumindest ist es das, was ich unter Ubuntu 12.04 verwende.

Weitere Informationen zur lokalen PolicyKit-Behörde: http://hal.freedesktop.org/docs/polkit/pklocalauthority.8.html

Christophe Drevet-Droguet
quelle
Funktioniert nicht in 13.10
Takkat