Nach meinem Verständnis von LightDM (dem Anmeldemanager) scheint es nicht unterstützt zu sein, die Desktop-Umgebungen für einen bestimmten Benutzer einzuschränken . Es ist alles oder nichts. Wenn ein Benutzer eine Desktop-Umgebung auswählt, wird diese standardmäßig zu seiner Standard-Desktop-Umgebung. Wenn sie sich das nächste Mal anmelden, werden sie standardmäßig angemeldet, sofern sie keine andere auswählen.
Sie können es jedoch so gestalten, dass der Benutzer dies nicht ändern kann. Dieser Benutzer kann weiterhin eine andere Desktop-Umgebung auswählen. Wenn dies jedoch der Fall ist, wird die Standardeinstellung nicht geändert. Ich glaube, dies ist der sicherste Weg, dies zu tun, wenn Sie nicht befürchten, dass die Person es ändern wird. Alles, was Sie tun müssen, ist die .dmrc
Datei zu bearbeiten (befindet sich in ihrem Home-Verzeichnis, dh / home / user). Hier wird ihre Standardsitzung gespeichert. Ändern Sie die Session
Variable in dieser Datei nach Ihren Wünschen, dh ubuntu
als Standard-Unity DE, ubuntu-2d
als Unity 2D und LXDE
als LXDE. Damit dies nicht geändert wird, wenn sie sich mit einem anderen DE anmelden, können wir es einfach unveränderlich (unveränderlich) machen:
sudo chattr +i /home/user/.dmrc
Jetzt kann niemand diese Datei ändern (Root und andere Programme enthalten), es sei denn, Sie entfernen das unveränderliche Flag:
sudo chattr -i /home/user/.dmrc
Wenn Sie absolut NICHT möchten, dass sich dieser Benutzer jemals mit einem anderen DE anmeldet, habe ich einen wirklich hackigen Weg gefunden (dh dies geschieht auf eigenes Risiko), um dies zu erreichen. Ich war irgendwie gelangweilt und es schien mir eine lustige Sache zu sein, es zu versuchen. Alle verschiedenen DEs, die LightDM sehen kann, werden /usr/share/xsessions
als .desktop
Dateien gespeichert. Zu Ihrer Information, Sie können alle diese Elemente löschen, die nicht auf dem Anmeldebildschirm angezeigt werden sollen (dies wird jedoch für ALLE Benutzer entfernt). Wenn Sie eine davon öffnen, sind sie ziemlich einfach. Dies sind grundlegende Desktop-Startdateien, genau wie alle Verknüpfungen auf Ihrem Desktop. Jeder enthält eineExec
Zeile, die ausgeführt wird, wenn Sie Ihre DE auf dem Anmeldebildschirm auswählen (dh welche DE gestartet wird). Wir werden dies nutzen und prüfen, welcher Benutzer sich anmeldet. Wenn der Benutzer unser eingeschränkter Benutzer ist, werden wir ihn zwingen, ein bestimmtes DE zu verwenden.
Zunächst müssen Sie für jede .desktop
Datei in /usr/share/xsessions/
ein Skript erstellen /usr/local/bin
. In meinem Beispiel werde ich zeigen, wie dies für ubuntu.desktop
die Unity DE gemacht wird, und LXDE als DE verwenden, zu dessen Verwendung wir unseren eingeschränkten Benutzer (eingeschränkten Benutzer) zwingen. Wenn wir uns LXDE.desktop ansehen, können wir sehen, dass der Exec
Befehl ist /usr/bin/startlxde
und es keinen TryExec
Befehl gibt. Wenn Sie öffnen ubuntu.desktop
, sehen wir, dass der Exec
Befehl ist gnome-session --session=ubuntu
und der TryExec
Befehl ist unity
. Der TryExec
Befehl ist genau das, wonach er sich anhört. Nach dem Ausführen des Exec
Befehls wird versucht, den TryExec
Befehl auszuführen. Wenn er jedoch fehlschlägt, stürzt er nicht ab.
Wenn wir nun die Befehle aus den .desktop
Dateien übernehmen, können wir unsere Skripte erstellen. Wir werden sie einsetzen /usr/share/bin
. Wir müssen zwei machen, eine für die Exec
und eine für die TryExec
. Wir machen so etwas:
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 nur, ob die Person, die sich anmeldet, unser eingeschränkter Benutzer ist, und starten die entsprechende DE. 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
, damit unsere Skripte anstelle der tatsächlichen DEs aufgerufen werden. Kommentieren Sie die Zeilen Exec
und TryExec
in der Datei aus und ersetzen Sie sie durch folgende:
Exec=/usr/local/bin/ubuntude.sh
TryExec=/usr/local/bin/ubuntudetry.sh
Wiederholen Sie einfach den Vorgang für alle anderen DEs, die Sie möglicherweise haben. Wenn es TryExec
für ein DE kein gibt, muss auch kein detry.sh-Skript dafür erstellt werden, da LXDE kein a verwendet TryExec
. Dies ist natürlich etwas hackig, und Sie sollten sicherstellen, dass Sie alle Dateien sichern, bevor Sie sie bearbeiten. Dies funktioniert jedoch, wenn Sie unbedingt sicherstellen müssen, dass sich ein Benutzer bei der richtigen DE anmeldet.