Outro dia, tive a ideia de criar uma sessão de convidados independente do gerente de exibição.
Minha idéia básica era mudar o shell de login para um programa personalizado que cria uma residência temporária instantaneamente (por exemplo, /tmp/guest-XXXXXX
) e atribuir essa sessão àquela casa. Depois que o usuário fizer logout, ele removerá esse diretório novamente. O problema que encontrei é o seguinte, preciso definir uma casa em /etc/passwd
e posso sobrescrever a variável de ambiente HOME sem problemas, mas os aplicativos ainda parecem usar a configuração inicial em passwd
em vez da variável de ambiente, pelo menos em um ambiente gráfico. Eu não posso definir a casa em passwd
porque eu não sei sobre isso até que a sessão tenha iniciado.
A lógica básica que eu criei é assim:
Isso parece funcionar quando eu su
no usuário, mas executar uma sessão gráfica significa que todos os programas / todos os programas iniciados usam o conjunto inicial em passwd
.
É possível alterar a casa de um usuário em tempo real / enquanto uma sessão gráfica está ativa? Eu negligenciei algo na arquitetura de como as sessões gráficas funcionam?