Falha ao conectar-se ao Mir: falha ao conectar-se ao soquete do servidor: Esse arquivo ou diretório não existe

18

Após fazer login como outro usuário, como executo 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:~$ 
Thufir
fonte

Respostas:

13

export DISPLAY=:0trabalhou para mim. Certifique-se de executar o comando no sistema de conexão, não no sistema ao qual você está se conectando!

user2938093
fonte
2
Na máquina que eu estava usando para conectar, não na máquina à qual você está se conectando.
User2938093
ahhh, isso está na mesma caixa. contas diff.
Thufir #
11
Não tem qualquer efeito no meu computador
ComputerScientist
não funciona para mim. Não sei por que isso está acontecendo comigo.
Chan Kim
6

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

Execute o comando x como outro usuário usando xauth

Script bash do wrapper:

Por conveniência, criei um script bash de wrapper , para o qual você pode baixar /usr/local/bin/xsudoe 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 pesquisar pam_xauth(s. Esta resposta ) No entanto, isso não funciona para mim por algum motivo. (Ainda recebo o erro de o firefox não conseguir se conectar ao monitor em: 0)
  • Em uma série de fóruns que você pode ver o comando xhost +local:ou similar, que irá fazer gksudo -u hawat firefoxo trabalho sem qualquer script wrapper. No entanto, esteja ciente de que isso abre uma brecha de segurança : qualquer usuário ativo no host local poderá acessar o teclado, mouse, tela etc.
  • Costumava haver sux , que foi descontinuado por algum motivo - você ainda pode fazer o download e usá-lo. Até onde eu sei, isso fez algo semelhante ao meu script muito mais. Infelizmente, não consegui descobrir por que isso não é mais mantido. (Talvez porque agora devamos usar pam_xauth - s. Primeira alternativa)
lentschi
fonte
3

Depois de gastar muito tempo nisso, descobri que, com o Gnome no Ubuntu 16.04, o valor correto é DISPLAY=:1, não DISPLAY=:0como tem sido imemorial.

Peter V. Mørch
fonte
1

export DISPLAY =: 0 funciona bem, mas esta é uma solução temporária, pois você precisa digitar isso sempre que abrir o terminal.

Solução permanente: O problema pode estar relacionado à variável env_keep em / etc / sudoers. Adicione a seguinte linha no final de / etc / sudoers usando gedit ou sudo visudo

Padrões env_keep + = "DISPLAY"

Nota: Lembre-se de sempre usar "+ =" ao adicionar ao env_keep. Caso haja algum outro env_keep com "=", altere-os para "+ =", pois usar "=" substituirá outros valores.

Mahesh Kumar
fonte
FYI: lembre-se de que você não deve editar o arquivo sudoers diretamente, mas usando o visudowrapper, que fornece algumas verificações de sanidade antes de gravar um novo arquivo sudoers.
Gabriel Fair