"오류 : 환경에 XDG_RUNTIME_DIR이 설정되지 않았습니다." 노틸러스를 루트로 실행하려고 할 때


14

노틸러스를 루트로 실행하려고하지만 터미널에서 "sudo nautilus"를 실행하면 다음 오류가 발생합니다.

오류 : 환경에서 XDG_RUNTIME_DIR이 설정되지 않았습니다.

(nautilus : 9341) : Gtk-WARNING ** : 디스플레이를 열 수 없습니다 :

루트가 아닌 것으로 노틸러스를 실행하려고하면 문제가 발생하지 않습니다. 우분투 14.04를 사용하고 있습니다. 누구든지 내가 어떻게 해결할 수 있는지 알고 있습니까?


기록을 위해, ssh를 통해 X11Forwarding을 시도 할 때 동일한 오류가 발생한 후 여기에서 끝났습니다. 솔루션 : -Xssh 세션을 시작할 때 옵션 을 사용하는 것을 잊었습니다 .
JW.

답변:


13

다른 사용자로 소프트웨어를 실행하면 실제로 "과도한"변수 (라이브러리 주입 또는 특정 권한 설정을 담당하는 변수)를 가지지 않는 새로운 최소 격리 환경을 시작하게됩니다. sudo nautilus다음과 같이 통화를 교체하십시오 . 현재 세션에서 사용자 별 x 서버 설정을 수행합니다.

pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY nautilus

이것은 한 번 낮은 수준의 솔루션이지만 잘못 구성된 시스템에서 작동합니다. 영구적으로 "문제를 해결 sudo하려면"환경 구성 관련 문제를 찾아 다른 답변에 설명 된대로 수정해야합니다.


1
@Cyprian Guerra-환경에 설정되지 않으며 한 번만 실행할 수 있습니다. 이것은 거의 도움이되지 않습니다. 실행 sudo nautilus시 터미널에서 정상적으로 작동합니다. 일반적으로 새로 설치할 때 터미널에서 할 때마다 sudo와 함께 정상적으로 열립니다.

@ user94959 기본 원칙을 이해하지 못합니다. 새로운 환경이 설정되고 변수가 전달되며 작업이 실행되고이 별도의 환경이 종료 될 때 작업이 종료됩니다. 따라서 모든 새로운 환경에 변수를 설정해야합니다. 더 많은 읽기 자료를 원한다면 관련 분쟁에 대한 Google pkexecsudoMan 페이지를 사용해보십시오 .
cprn

@CyprianGuerra 그러면 높은 권한이 필요한 데스크톱 메뉴에서 응용 프로그램을 열려고하면 암호를 입력 한 후에 어떻게 실행할 수 있습니까? XDG 환경에 정상적으로 설정되어 있지 않아 제대로 시작되지 않으면 구성에 누락 된 부분이 있습니까? 문제는 그 말이 Cannot open display무언가를 수정하고 환경에서 제거해서는 안되기 때문에 구성 파일에서 누락 된 것을 의미 할 때입니다. 그렇다면 어떻게 환경에 영구적으로 되돌릴 수 있습니까? 그래서 나는 이것을 다루지 않아도됩니까?

1
@sherrellbc 실행 env하기 전에 정책 키트를 명시 적으로 실행 nautilus하고 있으며 전자는 변수 설정을 처리합니다. 확인하실 수 있습니다 man env.
cprn

1
@cprn D' oh. 맨 페이지를 먼저 확인 했어야합니다. env COMMAND ARG ...
sherrellbc

1

우분투 14.04에서도 같은 문제가있었습니다. 을 눌러 터미널을 엽니 다.

Ctrl+ Alt+T

그때 sudo visudo

줄을 바꾸다

기본값 env_keep = "https_proxy"

기본값 env_keep + = "https_proxy"

그것은 매력처럼 작동했습니다.


작동하지만 동일하게 설정 $XAUTHORITY하면 목적이 무시됩니다.
cprn

1

쉽게 만들기 위해-내 시스템의 새로운 부팅에 대해 더 자세히 설명했습니다.

여기에 모든 설명이 끝나면 결과에 도달했으며 터미널의 "env"는 이미이 세션에 적합하다고 말했습니다.

이 두 행은 환경 변수를 사용합니다.

내가 선택한 tmp 동작의 경우 :

mkdir -pv ~ / .cache / xdgr

환경 변수를 설정하려면 다음을 수행하십시오.

XDG_RUNTIME_DIR = $ PATH 내보내기 : ~ / .cache / xdgr

터미널을 닫은 후 env 호출을위한 새로운 개방을 알려줍니다.

XDG_RUNTIME_DIR = / 실행 / 사용자 / 1001

참고 : 우분투의 사용자에게는 괜찮습니다. 루트에는 더 필요합니다 (최종 정보-용어-0700 권한)


0

Docker 에서이 오류가 발생하면; 이것이 제가하는 것입니다

# 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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.