No se puede conectar a X Server cuando se ejecuta la aplicación con sudo

29

Cuando estoy ejecutando algún software usando el sudocomando, muestra un error como

cannot connect to X server

Por ejemplo, si ejecuto el siguiente comando:

$ sudo gedit /etc/profile

Estoy recibiendo el siguiente comando

(gedit:6758): WARNING **: Command line `dbus-launch --autolaunch=84b871d735f31ffe014dc9ba00000009 --binary-syntax --close-stderr' 
exited with non-zero exit status 1: 
Autolaunch error: X11 initialization failed. 
Cannot open display:
Run 'gedit --help' to see a full list of available command line options.

O si estoy ejecutando super-boot-managerrecibo el siguiente error

buc: cannot connect to X server

Por favor ayuda.

Apurba
fuente
¿Por dónde correr super-boot-mangera partir?
Thor
Primero traté de correr super-boot-managerdirectamente desde la unidad luncher, no funcionó. Luego lo probé desde la terminal, luego recibí esos errores de masaje.
Apurba
¿Como en una terminal dentro del entorno gráfico de usuario? ¿Qué hace: echo $DISPLAYdecir? Debe ejecutar sin sudoque super-boot-managerse ejecuta sudointernamente.
Thor
echo $DISPLAYestá dando :0.0. Y no estoy corriendo super-boot-managercomo sudo. Estoy ejecutando solo usando el comando super-boot-managerde la terminal.
Apurba
1
Finalmente el problema está resuelto. Acabo de agregar la línea: Defaults env_keep="DISPLAY XAUTHORITY"al final de visudo. Gracias a todos, especialmente a @Thor por su amable ayuda.
Apurba

Respuestas:

39

Debe permitir que el usuario root acceda al servidor X:

xhost local:root

Y apunte el comando a la derecha DISPLAY:

sudo DISPLAY=$DISPLAY gedit /etc/profile
Thor
fuente
Eso resolvió el problema con la apertura geditcomo sudo, pero aún no puede almorzar super-boot-manager. Está mostrando el mismo error
Apurba
15

Finalmente el problema está resuelto. Acabo de agregar la línea:

Valores predeterminados env_keep = "DISPLAY XAUTHORITY"

al final de visudo.

Para hacer eso tienes que correr

sudo visudo

abrirá el archivo y luego agregará la línea anterior al final.

Gracias a todos, especialmente a @Thor por su amable ayuda

Apurba
fuente
1
Por defecto env_keep = "DISPLAY" funciona para mí.
bagustris
He estado buscando por todas partes esta respuesta para siempre. Desearía poder votarles a ustedes dos veces por sus respuestas. ¡Muchas gracias! :)
Ev-
4

Complementando la respuesta de @ Thor:

Corre xhost local:rootantes sudo gedit. Para hacer esto permanente, agregue la línea

xhost local:root

al archivo ~ / .xinitrc 1 . Cree el archivo si no existe.


[1] /ubuntu//a/720120/452398

adabru
fuente
Gracias por proporcionar una respuesta que proporciona una solución no permanente.
2NinerRomeo