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 .dmrc
file (situato nella loro directory home, cioè / home / user). Qui è dove è memorizzata la loro sessione predefinita. Modificare la Session
variabile in quel file come desiderato, ovvero ubuntu
Unity DE predefinito, ubuntu-2d
Unity 2D ed LXDE
LXDE. 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/xsessions
come .desktop
file. 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 unExec
linea, 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 .desktop
file 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 Exec
comando è /usr/bin/startlxde
e non c'è nessun TryExec
comando. Quando apri ubuntu.desktop
vediamo che il Exec
comando è gnome-session --session=ubuntu
e il TryExec
comando è unity
. Il TryExec
comando è proprio come sembra. Dopo aver eseguito il Exec
comando, proverà a eseguire il TryExec
comando, ma se non riesce non si arresterà in modo anomalo.
Ora, prendendo quei comandi che abbiamo ottenuto dai .desktop
file, possiamo creare i nostri script. Li inseriremo /usr/share/bin
. Dovremo fare due, uno per il Exec
e 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.desktop
modo che chiamerà i nostri script, anziché i DE effettivi. Commentare le Exec
e TryExec
righe 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 TryExec
un 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.