export DISPLAY=:0
funcionou para mim. Certifique-se de executar o comando no sistema de conexão, não no sistema ao qual está se conectando!
Após o login como outro usuário, como faço para executar programas GUI?
thufir@doge:~$
thufir@doge:~$ sudo -u hawat -i
hawat@doge:~$
hawat@doge:~$ whoami
hawat
hawat@doge:~$
hawat@doge:~$ pwd
/home/hawat
hawat@doge:~$
hawat@doge:~$ echo $HOME
/home/hawat
hawat@doge:~$
hawat@doge:~$ firefox
No protocol specified
Failed to connect to Mir: Failed to connect to server socket: No such file or directory
Unable to init server: Could not connect: Connection refused
Error: cannot open display: :0
hawat@doge:~$
export DISPLAY=:0
funcionou para mim. Certifique-se de executar o comando no sistema de conexão, não no sistema ao qual está se conectando!
Esta resposta funciona no meu Ubuntu 16.04 e Mir (com ligeiras adaptações):
Executar o comando x como outro usuário usando xauth
Por conveniência, criei um script bash , que você pode baixar para /usr/local/bin/xsudo
e marcar executável ( chmod +x /usr/local/bin/xsudo
).
Em seguida, basta executar:
xsudo hawat firefox
pam_xauth
(s. esta resposta ) No entanto, isso não funciona para mim por algum motivo. (Eu ainda recebo o erro sobre o firefox não ser capaz de se conectar ao display em: 0) xhost +local:
ou similar, o que fará fazer gksudo -u hawat firefox
funcionar sem nenhum script de wrapper. No entanto esteja ciente de que isso abre uma lacuna de segurança : qualquer usuário ativo em seu host local poderá acessar seu teclado, mouse, tela etc. export DISPLAY =: 0 funciona bem, mas esta é uma solução temporária, já que você precisa digitar isso toda vez que abrir o terminal.
Solução permanente: O problema pode ser devido à variável env_keep em / etc / sudoers. Adicione a seguinte linha no final do / etc / sudoers usando o gedit ou usando o sudo visudo
Padrões env_keep +="DISPLAY"
Nota: Lembre-se de sempre usar "+=" ao adicionar a env_keep. No caso, se houver qualquer outro env_keep com "=" altere-os para "+=" porque o uso de "=" substituirá outros valores.
Depois de gastar muito tempo com isso, descobri que com o Gnome no Ubuntu 16.04, o valor correto é DISPLAY=:1
, não DISPLAY=:0
como tem sido desde tempos imemoriais.
Tags sudo gui user-management users mir