"Error: XDG_RUNTIME_DIR no está configurado en el entorno" al intentar ejecutar nautilus como root

14

Estoy intentando ejecutar nautilus como root pero cuando ejecuto "sudo nautilus" desde el terminal, aparece el siguiente error:

error: XDG_RUNTIME_DIR no establecido en el entorno.

(nautilus: 9341): Gtk-WARNING **: no se puede abrir la pantalla:

El problema no ocurre cuando intento ejecutar nautilus como no root. Estoy usando ubuntu 14.04. ¿Alguien sabe como puedo arreglar esto?

Quantumbutterfly
fuente
Solo para el registro, terminé aquí después de que apareciera el mismo error al intentar hacer X11Forwarding a través de ssh. Solución: Olvidé usar la -Xopción al iniciar mi sesión ssh.
JW.

Respuestas:

13

Cuando ejecuta el software como otro usuario, de hecho, está iniciando el nuevo entorno mínimo y aislado que no incluye algunas variables "excesivas" (entre otras variables responsables de inyectar bibliotecas o establecer ciertos privilegios). Reemplace su sudo nautilusllamada con lo siguiente: continuará con la configuración del servidor x específica del usuario de la sesión actual:

pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY nautilus

Esta es una solución única de bajo nivel, pero funcionará en una máquina mal configurada. Si quiere "arreglar su sudo" permanentemente , necesita encontrar el problema con la configuración de su entorno y corregirlo como se describe en otras respuestas.

cprn
fuente
1
@Cyprian Guerra: esto no se establece en el medio ambiente, solo te permite correr una vez. Esto no es de mucha ayuda. La ejecución sudo nautilusdebería funcionar normalmente desde la terminal cuando se ejecuta. Normalmente cada vez que hago eso desde la terminal en una instalación nueva, se abre normalmente con sudo.
@ user94959 No comprende el principio básico: el nuevo entorno se está configurando, las variables se transfieren, la tarea se ejecuta, cuando la tarea sale de este entorno separado se está destruyendo. Por lo tanto, sí, debe establecer las variables para cada nuevo entorno. Si desea más material de lectura, pruebe las páginas de manual pkexecy sudogoogle para la disputa relacionada.
cprn
@CyprianGuerra, entonces, ¿por qué cuando intento abrir una aplicación desde el menú del escritorio que requiere privilegios elevados puede ejecutarse después de ingresar la contraseña? obviamente hay algo que falta en la configuración si no se inicia correctamente porque no está configurado en el entorno XDG de manera normal? El problema es cuando su dicho Cannot open displaysignifica que falta algo en su archivo de configuración porque algo lo modificó y lo eliminó del entorno cuando no debería. Entonces, ¿cómo puede volver a establecerse en el entorno de forma permanente para que no tenga que lidiar con esto?
1
@sherrellbc Estoy diciendo explícitamente que el kit de políticas se ejecute envantes de ejecutarse nautilusy el primero se encarga de establecer las variables por mí. Puedes comprobarlo man env.
cprn
1
@cprn D'oh. Debería haber revisado la página del manual primero. env COMMAND ARG ...
sherrellbc
1

También tuve el mismo problema en Ubuntu 14.04. Abra la terminal presionando,

Ctrl+ Alt+T

luego sudo visudo

cambiar la linea

Por defecto env_keep = "https_proxy"

a

Por defecto env_keep + = "https_proxy"

Funcionó a las mil maravillas.

Om Prakash
fuente
Funciona pero establecerlo para $XAUTHORITYdesafía el propósito.
cprn
1

Para hacerlo más fácil, más explicado el nuevo arranque de mi sistema.

Después de todas las explicaciones aquí llegué al resultado, y "env" en la terminal ya dijo que eso es correcto para estas sesiones:

Estas dos filas para usar la variable de entorno:

para el comportamiento tmp que he elegido:

mkdir -pv ~ / .cache / xdgr

Para configurar la variable de entorno:

export XDG_RUNTIME_DIR = $ PATH: ~ / .cache / xdgr

Después de cerrar la terminal y una nueva apertura para la recuperación de env, dicen:

XDG_RUNTIME_DIR = / run / user / 1001

nota: está bien para el usuario en ubuntu, root necesita más (última información por término - con permisos 0700)

Andrés
fuente
0

Si recibe este error en Docker; esto es lo que hago

# sudo xhost +
access control disabled, clients can connect from any host
# export DISPLAY=:0.0
# docker run -it --env DISPLAY=unix$DISPLAY --privileged  --volume /tmp/.X11-unix:/tmp/.X11-unix .. rest of your Docker arugments
Alex Punnen
fuente