Error al conectarse a Mir: Error al conectarse al zócalo del servidor: no existe tal archivo o directorio

18

Después de iniciar sesión como otro usuario, ¿cómo ejecuto los 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
fuente

Respuestas:

13

export DISPLAY=:0trabajó para mi. ¡Asegúrese de ejecutar el comando en el sistema de conexión, no en el sistema al que se está conectando!

usuario2938093
fuente
2
En la máquina que estaba usando para conectarme, no en la máquina a la que te estás conectando.
usuario2938093
ahhh, esto está en la misma caja. cuentas diff.
Thufir
1
No tuvo ningún efecto en mi computadora
ComputerScientist
no funciona para mi No sé por qué me está pasando esto.
Chan Kim
6

Esta respuesta funciona en mi Ubuntu 16.04 y Mir (con ligeras adaptaciones):

Ejecute el comando x como otro usuario usando xauth

Wrapper bash script:

Por conveniencia, creé un script de envoltura bash , que quizás quieras descargar /usr/local/bin/xsudoy marcar ejecutable ( chmod +x /usr/local/bin/xsudo).

Luego simplemente ejecuta:

xsudo hawat firefox

Alternativas potenciales:

  • Como una alternativa mucho más simple, podría considerar pam_xauth(s. Esta respuesta ) Sin embargo, esto no funciona para mí por alguna razón. (Todavía recibo el error de que Firefox no puede conectarse a la pantalla en: 0)
  • En muchos foros puede ver el comando xhost +local:o similar, lo que hará que gksudo -u hawat firefoxfuncione sin ningún script de envoltura. Sin embargo, tenga en cuenta que esto abre una brecha de seguridad : cualquier usuario activo en su host local podrá acceder a su teclado, mouse, pantalla, etc.
  • Solía ​​haber sux , que se ha descontinuado por alguna razón; sin embargo, es posible que aún pueda descargarlo y usarlo. Por lo que puedo decir, hizo algo similar a mi script solo mucho más. Lamentablemente no pude averiguar por qué esto ya no se mantiene. (Tal vez porque ahora deberíamos usar pam_xauth en su lugar - s. Primera alternativa)
Lentschi
fuente
3

Después de pasar demasiado tiempo en esto, descubrí que con Gnome en Ubuntu 16.04, el valor correcto es DISPLAY=:1, no DISPLAY=:0como lo ha sido desde tiempos inmemoriales.

Peter V. Mørch
fuente
1

export DISPLAY =: 0 funciona bien, pero esta es una solución temporal ya que debe escribir esto cada vez que abra el terminal.

Solución permanente: El problema podría deberse a la variable env_keep en / etc / sudoers. Agregue la siguiente línea al final de / etc / sudoers usando gedit o sudo visudo

Por defecto env_keep + = "DISPLAY"

Nota: Recuerde usar siempre "+ =" al agregar a env_keep. En caso de que haya algún otro env_keep con "=" cámbielo a "+ =" porque usar "=" anulará otros valores.

Mahesh Kumar
fuente
FYI: tenga en cuenta que no se supone que edite el archivo sudoers directamente, sino que use el visudocontenedor, que proporciona algunas comprobaciones de cordura antes de escribir un nuevo archivo sudoers.
Gabriel Fair