El otro día tuve la idea de crear una sesión de invitado independiente del administrador de pantalla.
Mi idea básica era cambiar el shell de inicio de sesión a un programa personalizado que crea un hogar temporal sobre la marcha (fe /tmp/guest-XXXXXX
) y asignar ese hogar a esta sesión. Después de que el usuario cierre la sesión, se eliminará ese directorio nuevamente. El problema con el que me encontré es el siguiente: necesito configurar un hogar /etc/passwd
y puedo sobrescribir la variable de entorno HOME sin problemas, pero las aplicaciones todavía parecen usar el hogar configurado passwd
en lugar de la variable de entorno, al menos en un entorno gráfico. . No puedo configurar el hogar passwd
porque no lo sé hasta que comienza la sesión.
La lógica básica que se me ocurrió se ve así:
- shell de inicio de sesión iniciado
- hogar temporal creado
- HOME está configurado para este hogar temporal
- un caparazón real está bifurcado
- después de que termina ese caparazón real, se elimina el hogar temporal
Esto parece funcionar cuando entro su
en el usuario, pero ejecutar una sesión gráfica significa que muchos/todos los programas iniciados usan la configuración de inicio en passwd
.
¿Es posible cambiar el inicio de un usuario sobre la marcha/mientras una sesión gráfica está activa? ¿Pasé por alto algo en la arquitectura de cómo funcionan las sesiones gráficas?