Frage Wie schränke ich einen Benutzer auf eine bestimmte Desktop-Umgebung ein?


Ich führe eine mehr oder weniger standardmäßige Installation von Ubuntu Precise 12.04 durch und bin ziemlich zufrieden mit der täglichen Arbeit mit Unity Desktop.

Wenn es um das Spielen geht, fühle ich mich jedoch viel wohler mit LXDE (Hintergrund: Im aktuellen Zustand zeigt Unity wesentlich niedrigere Frameraten als beispielsweise Unity 2D oder LXDE - ein bekannter Bug, an dem gearbeitet wird).

Zu diesem Zweck habe ich ein Spieler-Benutzerprofil erstellt und möchte es nun auf die LXDE-Desktop-Umgebung beschränken.

Um dies weiter auszuarbeiten: Wenn ich nach dem Booten gefragt werde, möchte ich nur LXDE als Option für das Spieler-Benutzerprofil auf dem Login-Bildschirm erscheinen lassen, während mein Standard-Benutzerprofil immer noch die Option haben sollte, die zu verwendende Desktop-Umgebung auszuwählen.

Vielen Dank im Voraus für jede Einsicht, die Ihnen helfen könnte!


8
2017-08-05 15:53


Ursprung


Es sollte Ihre letzte Wahl als Standard für das nächste Mal beibehalten. Tut es das nicht? Gibt es einen Grund, warum Sie die anderen Optionen nicht möchten, wenn die Standardeinstellungen der Desktop-Umgebung nicht korrekt sind? - reverendj1
Ich habe dieses Verhalten auch bemerkt, nachdem ich die Frage gestellt habe. Im Grunde ist das schon, was ich wollte und warum ich gefragt habe. Abgesehen davon bin ich immer noch an einer Lösung interessiert - ich muss mehr über Gruppen und Berechtigungen erfahren. "Ich bin sehr überrascht, dass dies ein so großes Problem zu sein scheint. Ist es unmöglich zu erreichen? - FuzzyQ


Antworten:


Okay, von meinem Verständnis von LightDM (dem Login-Manager) scheint es nicht unterstützt zu sein, die Desktop-Umgebungen für ein zu beschränken Spezifisch Benutzer. Es ist alles oder nichts. Wenn ein Benutzer eine Desktop-Umgebung auswählt, wird diese standardmäßig zur Standard-Desktop-Umgebung. Wenn sie sich das nächste Mal anmelden, werden sie, sofern sie keinen anderen auswählen, mit ihren Standardeinstellungen angemeldet.

Sie können es jedoch so einrichten, dass der Benutzer dies nicht ändern kann. Dieser Benutzer kann weiterhin eine andere Desktopumgebung auswählen, aber wenn dies der Fall ist, wird der Standardwert nicht geändert. Ich glaube, dies ist der sicherste Weg, dies zu tun, wenn Sie nicht besorgt sind, dass die Person es ändern wird. Alles, was Sie tun müssen, ist ihre bearbeiten .dmrc Datei (befindet sich in ihrem Home-Verzeichnis, d. h. / home / user). Hier wird ihre Standardsitzung gespeichert. Ändere das Session Variable in dieser Datei zu was auch immer Sie wollen, d. ubuntu ist die Standardeinheit DE, ubuntu-2d ist Unity 2D und LXDE ist LXDE. Um es so zu machen, wird dies nicht geändert, wenn sie sich mit einem anderen DE einloggen, wir können es einfach unveränderlich machen (unveränderbar):

sudo chattr +i /home/user/.dmrc

Jetzt wird niemand in der Lage sein, diese Datei zu ändern (root und andere Programme enthalten), wenn Sie das unveränderliche Flag nicht entfernen:

sudo chattr -i /home/user/.dmrc

Wenn Sie sich NICHT unbedingt wünschen, dass sich dieser Benutzer jemals mit einem anderen DE anmeldet, habe ich einen wirklich hacky Weg gefunden (d. H. Tun dies auf eigene Gefahr), um dies zu erreichen. Ich war irgendwie gelangweilt und das schien eine lustige Sache zu sein. Alle verschiedenen DEs, die LightDM sehen kann, werden beibehalten /usr/share/xsessions wie .desktop Dateien. Zu Ihrer Information, Sie können alle diese löschen, die Sie nicht auf dem Anmeldebildschirm anzeigen möchten (aber das wird es für ALLE Benutzer entfernen). Wenn Sie eines davon öffnen, sind sie ziemlich einfach. Sie sind grundlegende Desktop-Launcher-Dateien, genau wie alle Verknüpfungen auf Ihrem Desktop. Jeder enthält ein Exec Zeile, die ausgeführt wird, wenn Sie Ihre DE auf dem Anmeldebildschirm auswählen (d. h. welche DE gestartet wird). Wir werden dies ausnutzen und prüfen, welcher Benutzer sich anmeldet. Wenn der Benutzer unser eingeschränkter Benutzer ist, werden wir sie zwingen, ein bestimmtes DE zu verwenden.

Zuerst für jeden .desktop Datei in /usr/share/xsessions/ Sie müssen ein Skript erstellen /usr/local/bin. Für mein Beispiel werde ich zeigen, wie man das macht ubuntu.desktop, was die Unity DE ist, und die Verwendung von LXDE als DE, die wir für unseren eingeschränkten Benutzer (restrictedUser) erzwingen. Betrachten wir LXDE.desktop, können wir sehen, dass die Exec Befehl ist /usr/bin/startlxde und es gibt keine TryExec Befehl. Wenn Sie öffnen ubuntu.desktop wir sehen, dass die Exec Befehl ist gnome-session --session=ubuntu und das TryExec Befehl ist unity. Das TryExec Befehl ist genau wie es sich anhört. Nach dem Ausführen der Exec Befehl, es wird versuchen, die TryExec Befehl, aber wenn es fehlschlägt, wird es nicht abstürzen.

Nun, wir nahmen diese Befehle von der .desktop Dateien können wir unsere Skripte erstellen. Wir werden sie hineinlegen /usr/share/bin. Wir werden zwei machen müssen, einen für die Exec und eins für die TryExec. Wir werden so etwas tun:

ubuntude.sh

#!/bin/bash

if [ `/usr/bin/whoami` = "restricteduser" ] ; then
   /usr/bin/startlxde
else
   gnome-session --session=ubuntu
fi

ubuntudetry.sh

#!/bin/bash

if [ `/usr/bin/whoami` != "restricteduser" ] ; then
   unity
fi

Wir testen gerade, ob sich die Person, die sich anmeldet, unser eingeschränkter Benutzer ist und die entsprechende DE auslöst. Jetzt müssen wir sicherstellen, dass sie ausführbar sind:

sudo chmod +x /usr/local/bin/ubuntude.sh
sudo chmod +x /usr/local/bin/ubuntudetry.sh

Wir müssen jetzt unsere ändern ubuntu.desktop so dass es unsere Skripte anstelle der eigentlichen DEs aufrufen wird. Kommentieren Sie die Exec und TryExec Zeilen in der Datei und ersetzen Sie sie durch:

Exec=/usr/local/bin/ubuntude.sh
TryExec=/usr/local/bin/ubuntudetry.sh

Wiederholen Sie den Vorgang für alle anderen DEs, die Sie möglicherweise haben. Wenn es keine gibt TryExec Für ein DE muss dann auch kein Skript "detry.sh" erstellt werden, da LXDE kein a verwendet TryExec. Offensichtlich ist dies ein bisschen hacky, und Sie sollten sicherstellen, dass Sie alle Dateien sichern, bevor Sie sie bearbeiten, aber es wird funktionieren, wenn Sie unbedingt sicherstellen müssen, dass sich ein Benutzer bei der richtigen DE anmeldet.


4
2017-08-22 15:32



Vor allem: Danke für deine ausführliche Antwort! Das ist eine ziemlich schlaue Herangehensweise. Aber wenn ich den letzten Teil richtig mache, wird der Benutzer gezwungen, sich bei lxde anzumelden egal welche Option er gewählt hat. Aber es werden immer noch alle anderen Optionen angezeigt, die in / usr / share / xsessions / aufgeführt sind, bekomme ich das richtig? In diesem Fall würde ich lieber mit Option 1 gehen. Es ist schade, dass es keine benutzerspezifische Option zum Einrichten von Sitzungen für die Desktopumgebung gibt. Das Entfernen unerwünschter xsessions aus einem Benutzerordner wäre sowohl praktisch als auch einfach. - FuzzyQ
Bitte. Ich habe es als eine Herausforderung angenommen, und ich wollte mich mehr in LightDM einarbeiten. Richtig, der Benutzer wird immer noch alle anderen Optionen sehen, es ist einfach egal, da sie gezwungen werden, LXDE zu verwenden. Wie gesagt, die .dmrc-Datei dient dazu, benutzerspezifische Standardeinstellungen beizubehalten, aber es gibt keine integrierte Möglichkeit Macht ein Benutzer, der nur bestimmte DEs verwendet, oder einschränken, welche Benutzer sie sehen / verwenden können. Es ist jeder oder niemand, ohne den Hack, den ich vorgestellt habe. - reverendj1


Unter Debian Squeeze und Wheezy können Sie auch eine .xsessionrc mit einer einzelnen Zeile hinzufügen

STARTUP = XXX exportieren

(XXX ist das forcierte Session-Skript, siehe Exec-Line oben) im Benutzer-Homedirectory, um einen bestimmten Sitzungstyp zu erzwingen, unabhängig davon, was der Benutzer gewählt hat.

Sollte auch auf Ubuntu funktionieren.

(Schauen Sie in /etc/X11/Xsession.d/40x11-common_xsessionrc und 50x11-common_determine-startup um zu sehen, warum das funktioniert)


1
2018-06-28 10:53