Falha ao conectar-se ao Mir: Falha ao conectar ao soquete do servidor: Nenhum arquivo ou diretório

11

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:~$ 
    
por Thufir 12.01.2017 / 15:38

4 respostas

9

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!

    
por user2938093 07.02.2017 / 10:24
5

Esta resposta funciona no meu Ubuntu 16.04 e Mir (com ligeiras adaptações):

Executar o comando x como outro usuário usando xauth

Script do Wrapper bash:

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

Alternativas potenciais:

  • Como uma alternativa muito mais simples, você pode procurar 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)
  • Em muitos fóruns, você pode ver o comando 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.
  • Costumava haver sux , que foi descontinuado por algum motivo - você ainda pode ser capaz de baixar e usá-lo embora. Tanto quanto eu posso dizer, ele fez algo semelhante ao meu script apenas muito mais. Infelizmente, não consegui descobrir por que isso não é mais mantido. (Talvez porque agora devêssemos usar o pam_xauth - primeira alternativa)
por lentschi 02.03.2017 / 13:59
1

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.

    
por Mahesh Kumar 09.10.2017 / 15:29
1

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.

    
por Peter V. Mørch 08.11.2017 / 17:54