D'accordo, dalla mia comprensione di LightDM (il gestore degli accessi) non sembra supportato limitare gli ambienti desktop per un utente specifico . È un affare tutto o niente. Per impostazione predefinita, quando un utente sceglie un ambiente desktop, questo diventerà il suo ambiente desktop predefinito. Quando effettueranno l'accesso la prossima volta, a meno che non ne scelgano un altro, verranno collegati ai valori predefiniti.
Tuttavia, puoi farlo in modo che l'utente non possa modificarlo. Questo utente sarà comunque in grado di selezionare un ambiente desktop diverso, ma se lo fa, non cambierà il suo valore predefinito. Credo che questo sia il modo più sicuro per farlo, se non sei preoccupato che la persona lo cambi. Tutto quello che devi fare è modificare il loro .dmrcfile (situato nella loro directory home, cioè / home / user). Qui è dove è memorizzata la loro sessione predefinita. Modificare la Sessionvariabile in quel file come desiderato, ovvero ubuntuUnity DE predefinito, ubuntu-2dUnity 2D ed LXDELXDE. Per farlo in modo che questo non venga modificato se accedono con un altro DE, possiamo semplicemente renderlo immutabile (immutabile):
sudo chattr +i /home/user/.dmrc
Ora nessuno sarà in grado di modificare quel file (inclusi root e altri programmi) a meno che non si rimuova il flag immutabile:
sudo chattr -i /home/user/.dmrc
Se NON vuoi assolutamente che questo utente acceda mai con un altro DE, ho trovato un modo davvero confuso (cioè farlo a tuo rischio e pericolo) per ottenere questo risultato. Ero un po 'annoiato e questa sembrava una cosa divertente da provare. Tutti i diversi DE che LightDM può vedere sono conservati /usr/share/xsessionscome .desktopfile. Cordiali saluti, è possibile eliminare uno di questi che non si desidera visualizzare nella schermata di accesso (ma che lo rimuoverà per TUTTI gli utenti). Se apri uno di questi, sono abbastanza semplici. Sono file di base per l'avvio del desktop, proprio come tutti i collegamenti sul desktop. Ognuno contiene unExeclinea, che è ciò che viene eseguito quando si sceglie il proprio DE nella schermata di accesso (ovvero quale DE viene avviato). Ne approfitteremo e verificheremo quale utente sta effettuando l'accesso. Se l'utente è il nostro utente con restrizioni, li forzeremo a utilizzare un determinato DE.
Innanzitutto, per ogni .desktopfile in /usr/share/xsessions/cui dovrai creare uno script /usr/local/bin. Per il mio esempio, mostrerò come farlo per ubuntu.desktop, che è l'Unity DE, e usando LXDE come DE che stiamo costringendo al nostro utente con restrizioni (utente limitato). Guardando LXDE.desktop, possiamo vedere che il Execcomando è /usr/bin/startlxdee non c'è nessun TryExeccomando. Quando apri ubuntu.desktopvediamo che il Execcomando è gnome-session --session=ubuntue il TryExeccomando è unity. Il TryExeccomando è proprio come sembra. Dopo aver eseguito il Execcomando, proverà a eseguire il TryExeccomando, ma se non riesce non si arresterà in modo anomalo.
Ora, prendendo quei comandi che abbiamo ottenuto dai .desktopfile, possiamo creare i nostri script. Li inseriremo /usr/share/bin. Dovremo fare due, uno per il Exece uno per il TryExec. Faremo qualcosa del genere:
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
Stiamo solo verificando se la persona che effettua l'accesso è il nostro utente limitato e accendiamo il DE appropriato. Ora, dobbiamo assicurarci che siano eseguibili:
sudo chmod +x /usr/local/bin/ubuntude.sh
sudo chmod +x /usr/local/bin/ubuntudetry.sh
Ora dobbiamo cambiare il nostro in ubuntu.desktopmodo che chiamerà i nostri script, anziché i DE effettivi. Commentare le Exece TryExecrighe nel file, e sostituirli con questo:
Exec=/usr/local/bin/ubuntude.sh
TryExec=/usr/local/bin/ubuntudetry.sh
Ripeti la procedura per tutti gli altri DE che potresti avere. Se non esiste TryExecun DE, allora non è necessario creare nemmeno uno script detry.sh, poiché LXDE non utilizza a TryExec. Ovviamente questo è un po 'confuso e dovresti assicurarti di eseguire il backup di tutti i file prima di modificarli, ma funzionerà se devi assolutamente assicurarti che un utente acceda al DE corretto.