De acuerdo, según tengo entendido, LightDM (el administrador de inicio de sesión) no parece ser compatible para restringir los entornos de escritorio para un usuario específico . Es un trato de todo o nada. De manera predeterminada, cuando un usuario elige un entorno de escritorio, se convertirá en su entorno de escritorio predeterminado. Cuando inicien sesión la próxima vez, a menos que elijan otra, iniciarán sesión en sus valores predeterminados.
Sin embargo, puede hacerlo para que el usuario no pueda cambiar esto. Este usuario aún podrá seleccionar un entorno de escritorio diferente, pero si lo hace, no cambiará su valor predeterminado. Creo que esta es la forma más segura de hacerlo, si no le preocupa que la persona lo cambie. Todo lo que tiene que hacer es editar su .dmrc
archivo (ubicado en su directorio de inicio, es decir, / home / user). Aquí es donde se almacena su sesión predeterminada. Cambie la Session
variable en ese archivo a lo que desee, ubuntu
es decir, es el Unity DE predeterminado, ubuntu-2d
es Unity 2D y LXDE
es LXDE. Para que esto no se cambie si inician sesión con otro DE, simplemente podemos hacerlo inmutable (inmutable):
sudo chattr +i /home/user/.dmrc
Ahora nadie podrá cambiar ese archivo (incluido el root y otros programas) a menos que elimine el indicador inmutable:
sudo chattr -i /home/user/.dmrc
Si absolutamente NO desea que este usuario inicie sesión alguna vez con otro DE, descubrí una forma realmente hacky (es decir, bajo su propio riesgo) para lograr esto. Estaba un poco aburrido y parecía una cosa divertida de probar. Todos los DE diferentes que LightDM puede ver se guardan /usr/share/xsessions
como .desktop
archivos. Para su información, puede eliminar cualquiera de estos que no desea que aparezca en la pantalla de inicio de sesión (pero eso lo eliminará para TODOS los usuarios). Si abre cualquiera de estos, son bastante sencillos. Son archivos básicos de iniciador de escritorio, al igual que todos los accesos directos en su escritorio. Cada uno contiene unExec
línea, que es lo que se ejecuta cuando elige su DE en la pantalla de inicio de sesión (es decir, qué DE se inicia). Vamos a aprovechar esto y verificar qué usuario está iniciando sesión. Si el usuario es nuestro usuario restringido, los obligaremos a usar un determinado DE.
Primero, para cada .desktop
archivo /usr/share/xsessions/
necesitará crear un script en /usr/local/bin
. Para mi ejemplo, mostraré cómo hacer esto ubuntu.desktop
, que es el DE de Unity, y usando LXDE como el DE estamos forzando a nuestro usuario restringido (usuario restringido) a usar. Mirando LXDE.desktop, podemos ver que el Exec
comando es /usr/bin/startlxde
y no hay ningún TryExec
comando. Cuando abre ubuntu.desktop
, vemos que el Exec
comando es gnome-session --session=ubuntu
y el TryExec
comando es unity
. El TryExec
comando es exactamente lo que parece. Después de ejecutar el Exec
comando, intentará ejecutar el TryExec
comando, pero si falla, no se bloqueará.
Ahora, tomando esos comandos que obtuvimos de los .desktop
archivos, podemos crear nuestros scripts. Los pondremos adentro /usr/share/bin
. Tendremos que hacer dos, uno para el Exec
y otro para el TryExec
. Haremos algo como esto:
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
Solo estamos probando si la persona que inicia sesión es nuestro usuario restringido y estamos activando el DE apropiado. Ahora, debemos asegurarnos de que sean ejecutables:
sudo chmod +x /usr/local/bin/ubuntude.sh
sudo chmod +x /usr/local/bin/ubuntudetry.sh
Ahora necesitamos cambiar nuestro ubuntu.desktop
para que llame a nuestros scripts, en lugar de los DE reales. Comente las líneas Exec
y TryExec
en el archivo y reemplácelas con esto:
Exec=/usr/local/bin/ubuntude.sh
TryExec=/usr/local/bin/ubuntudetry.sh
Simplemente repita el proceso para cualquier otro DE que pueda tener. Si no hay TryExec
un DE, entonces tampoco es necesario crear un script detry.sh para él, ya que LXDE no utiliza a TryExec
. Obviamente, esto es un poco complicado, y debe asegurarse de hacer una copia de seguridad de los archivos antes de editarlos, pero funcionará si necesita asegurarse de que un usuario inicie sesión en el DE correcto.