Ok, z mojego rozumienia LightDM (menedżera logowania) nie wydaje się obsługiwane ograniczanie środowisk pulpitu dla konkretnego użytkownika. Jest to umowa typu wszystko albo nic. Domyślnie, gdy użytkownik wybierze środowisko pulpitu, stanie się ono domyślnym środowiskiem pulpitu. Gdy następnym razem się zalogują, chyba że wybiorą inną, zostaną zalogowani do ustawień domyślnych.
Możesz to jednak zrobić, aby użytkownik nie mógł tego zmienić. Ten użytkownik nadal będzie mógł wybrać inne środowisko pulpitu, ale jeśli to zrobi, nie zmieni to ustawienia domyślnego. Uważam, że jest to najbezpieczniejszy sposób na zrobienie tego, jeśli nie martwisz się, że dana osoba to zmieni. Wszystko, co musisz zrobić, to edytować .dmrc
plik (znajdujący się w katalogu domowym, tj. / Home / user). Tutaj przechowywana jest ich domyślna sesja. Zmień Session
zmienną w tym pliku na cokolwiek chcesz, tj. ubuntu
Jest domyślnym Unity DE, ubuntu-2d
Unity 2D i LXDE
LXDE. Aby tak się nie stało, jeśli zalogują się przy użyciu innego DE, możemy po prostu uczynić go niezmiennym (niezmiennym):
sudo chattr +i /home/user/.dmrc
Teraz nikt nie będzie mógł zmienić tego pliku (łącznie z rootem i innymi programami), chyba że usuniesz niezmienną flagę:
sudo chattr -i /home/user/.dmrc
Jeśli absolutnie NIE chcesz, aby ten użytkownik kiedykolwiek logował się przy użyciu innego DE, wymyśliłem naprawdę hackerski sposób (tj. Rób to na własne ryzyko), aby to osiągnąć. Byłem trochę znudzony i wydawało mi się to zabawną rzeczą. Wszystkie różne DE, które LightDM może zobaczyć, są przechowywane /usr/share/xsessions
jako .desktop
pliki. Do Twojej wiadomości, możesz usunąć dowolne z nich, których nie chcesz wyświetlać na ekranie logowania (ale spowoduje to usunięcie WSZYSTKICH użytkowników). Jeśli otworzysz którykolwiek z nich, są one dość proste. Są to podstawowe pliki uruchamiające pulpit, podobnie jak wszystkie skróty na pulpicie. Każdy zawieraExec
wiersz, który jest wykonywany po wybraniu DE na ekranie logowania (tzn. który DE zostanie uruchomiony). Wykorzystamy to i sprawdzimy, który użytkownik się loguje. Jeśli użytkownik jest naszym ograniczonym użytkownikiem, zmusimy go do korzystania z określonego DE.
Po pierwsze, dla każdego .desktop
pliku /usr/share/xsessions/
musisz utworzyć skrypt w /usr/local/bin
. W moim przykładzie pokażę, jak to zrobić, dla ubuntu.desktop
którego jest Unity DE, i używając LXDE jako DE, do którego zmuszamy naszego ograniczonego użytkownika (ograniczonego użytkownika). Patrząc na LXDE.desktop, widzimy, że Exec
polecenie jest /usr/bin/startlxde
i nie ma TryExec
polecenia. Po otwarciu ubuntu.desktop
widzimy, że Exec
polecenie jest, gnome-session --session=ubuntu
a TryExec
polecenie jest unity
. TryExec
Komenda jest tylko to, co brzmi jak. Po uruchomieniu Exec
polecenia spróbuje je uruchomić TryExec
, ale jeśli się nie powiedzie, nie ulegnie awarii.
Teraz, biorąc te polecenia, które otrzymaliśmy z .desktop
plików, możemy tworzyć nasze skrypty. Włożymy je /usr/share/bin
. Będziemy musieli zrobić dwa, jeden dla Exec
i jeden dla TryExec
. Zrobimy coś takiego:
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
Właśnie testujemy, czy osoba logująca się jest naszym ograniczonym użytkownikiem i odpalamy odpowiednią licencję DE. Teraz musimy upewnić się, że są one wykonywalne:
sudo chmod +x /usr/local/bin/ubuntude.sh
sudo chmod +x /usr/local/bin/ubuntudetry.sh
Teraz musimy zmienić nasze, ubuntu.desktop
aby wywoływały nasze skrypty, zamiast rzeczywistych DE. Skomentuj linie Exec
i TryExec
w pliku i zamień je na:
Exec=/usr/local/bin/ubuntude.sh
TryExec=/usr/local/bin/ubuntudetry.sh
Po prostu powtórz proces dla wszystkich innych DE. Jeśli nie ma TryExec
DE, to nie ma potrzeby tworzenia dla niego skryptu detry.sh, ponieważ LXDE nie używa TryExec
. Oczywiście jest to trochę zhackowane i powinieneś upewnić się, że utworzysz kopię zapasową plików przed ich edycją, ale zadziała, jeśli absolutnie musisz upewnić się, że użytkownik loguje się do właściwej wersji DE.