D'accord, d'après ma compréhension de LightDM (le gestionnaire de connexion), il ne semble pas pris en charge pour restreindre les environnements de bureau pour un utilisateur spécifique . C'est un accord tout ou rien. Par défaut, lorsqu'un utilisateur choisit un environnement de bureau, celui-ci deviendra son environnement de bureau par défaut. Lors de leur prochaine connexion, à moins qu'ils n'en choisissent un autre, ils seront connectés à leur valeur par défaut.
Vous pouvez cependant faire en sorte que l'utilisateur ne puisse pas changer cela. Cet utilisateur pourra toujours sélectionner un autre environnement de bureau, mais s'il le fait, cela ne changera pas sa valeur par défaut. Je crois que c'est la façon la plus sûre de le faire, si vous n'êtes pas inquiet que la personne le change. Il vous suffit de modifier leur .dmrc
fichier (situé dans leur répertoire personnel, c'est-à-dire / home / user). C'est là que leur session par défaut est stockée. Remplacez la Session
variable de ce fichier par ce que vous voulez, c'est ubuntu
-à- dire par défaut Unity DE, ubuntu-2d
Unity 2D et LXDE
LXDE. Pour que cela ne soit pas modifié s'ils se connectent avec un autre DE, nous pouvons simplement le rendre immuable (immuable):
sudo chattr +i /home/user/.dmrc
Désormais, personne ne pourra modifier ce fichier (root et autres programmes inclus) à moins que vous ne supprimiez l'indicateur immuable:
sudo chattr -i /home/user/.dmrc
Si vous ne voulez absolument PAS que cet utilisateur se connecte avec un autre DE, j'ai trouvé un moyen vraiment hacky (c'est-à-dire le faire à vos risques et périls) pour y parvenir. J'étais un peu ennuyé et cela semblait être une chose amusante à essayer. Tous les différents DE que LightDM peut voir sont conservés /usr/share/xsessions
sous forme de .desktop
fichiers. Pour info, vous pouvez supprimer ceux que vous ne souhaitez pas voir apparaître sur l'écran de connexion (mais cela le supprimera pour TOUS les utilisateurs). Si vous ouvrez l'un d'eux, ils sont assez simples. Ce sont des fichiers de lancement de bureau de base, tout comme tous les raccourcis sur votre bureau. Chacun contient unExec
, ce qui est exécuté lorsque vous choisissez votre DE dans l'écran de connexion (c'est-à-dire quel DE est lancé). Nous allons en profiter et vérifier quel utilisateur se connecte. Si l'utilisateur est notre utilisateur restreint, nous le forcerons à utiliser un certain DE.
Tout d'abord, pour chaque .desktop
fichier, /usr/share/xsessions/
vous devrez créer un script dans /usr/local/bin
. Pour mon exemple, je vais montrer comment faire cela ubuntu.desktop
, qui est le DE Unity, et en utilisant LXDE comme DE, nous forçons notre utilisateur restreint (utilisateur restreint) à l'utiliser. En regardant LXDE.desktop, nous pouvons voir que la Exec
commande est /usr/bin/startlxde
et il n'y a pas de TryExec
commande. Lorsque vous ouvrez, ubuntu.desktop
nous voyons que la Exec
commande est gnome-session --session=ubuntu
et la TryExec
commande est unity
. La TryExec
commande est exactement ce que cela ressemble. Après avoir exécuté la Exec
commande, il essaiera d'exécuter la TryExec
commande, mais s'il échoue, il ne se bloquera pas.
Maintenant, en prenant ces commandes que nous avons obtenues des .desktop
fichiers, nous pouvons créer nos scripts. Nous allons les mettre /usr/share/bin
. Nous devrons en faire deux, un pour le Exec
et un pour le TryExec
. Nous allons faire quelque chose comme ça:
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
Nous testons simplement si la personne qui se connecte est notre utilisateur restreint et tirons le DE approprié. Maintenant, nous devons nous assurer qu'ils sont exécutables:
sudo chmod +x /usr/local/bin/ubuntude.sh
sudo chmod +x /usr/local/bin/ubuntudetry.sh
Nous devons maintenant changer notre ubuntu.desktop
afin qu'il appelle nos scripts, au lieu des DE réels. Mettez en commentaire les lignes Exec
et TryExec
dans le fichier et remplacez-les par ceci:
Exec=/usr/local/bin/ubuntude.sh
TryExec=/usr/local/bin/ubuntudetry.sh
Répétez simplement le processus pour tout autre DE que vous pourriez avoir. S'il n'y en a pas TryExec
pour un DE, il n'est pas nécessaire non plus de créer un script detry.sh pour lui, car LXDE n'utilise pas de TryExec
. Évidemment, c'est un peu hacky, et vous devez vous assurer de sauvegarder tous les fichiers avant de les modifier, mais cela fonctionnera si vous devez absolument vous assurer qu'un utilisateur se connecte au bon DE.