Usando o Ubuntu 14.04 com o Unity. Faço login com meu usuário habitual (admin) em ambiente gráfico. Uma vez logado, gostaria de executar comandos GUI como se eu fosse outro usuário (normal), para testar um aplicativo cliente-servidor. Eu preciso de vários usuários (um para servidor e outro para cada cliente), porque cada um precisa de um ambiente $HOME
próprio. No futuro, eles devem ser instalados em máquinas separadas.
Então, eu abro um terminal e faço:
su - user
Quando executo qualquer comando GUI (como 'xterm'), ele diz o usual
Nenhum protocolo especificado
Não é possível abrir a exibição:
Eu li várias maneiras de resolver isso usando xauth
, xhost
, etc., mas a que funcionou para meus propósitos foi:
admin# sudo cp ~/.Xauthority ~user/.
admin# sudo chown user ~user/.Xauthority
admin# su - user
user$ export XAUTHORITY=~/.Xauthority
Agora posso executar qualquer comando da GUI, como xterm
.
No entanto, esta solução funciona apenas dentro da mesma sessão de GUI. Depois de reiniciar o computador, o arquivo .Xauthority
foi alterado e essa solução não é mais válida, a menos que eu copie .Xauthority
novamente, o que é entediante e envolve comandos sudo para copiar.
Então, existe uma maneira de torná-lo persistente em .bashrc
ou de outra maneira? Quer dizer, uma vez que eu abro um terminal da GUI e efetuo login usando su - <user>
, seria capaz de executar comandos que requerem GUI sem ter que fazer todas as coisas anteriores.
Desculpe por Inglês.