X 서버에 연결할 수 없습니다 : 0.0 수퍼 유저


10

온라인 상태에서 다음과 같은 오류가 발생하고 도구가 시작되지 않습니다.

[root@dhcppc9 lin64]# ./ise
No protocol specified
_pn: cannot connect to X server :0.0

그러나 내가 슈퍼 유저가 아닌 경우 모든 것이 정상입니다. 왜 그런가요?

편집하다

[root@dhcppc9 lin64]# export $(dbus-launch)
No protocol specified

어떠한 제안?

또한

[root@dhcppc9 lin64]# xhost [+]
No protocol specified
xhost:  unable to open display ":0.0"

이것은 고전입니다. X와 수퍼 유저 계정을 사용하여 프로그램을 시작 export $(dbus-launch)하거나 수행 xhost [+]할 수 있습니다.
41754

둘 다 했어요, 위의 편집 참조
msz

그것은있을 수 있습니다 $ xhost현재 접근을보고하고 $ xhost +모든 호스트에서 액세스 할 수 있도록. X를 사용하여 프로그램을 스폰 할 수있는 가상 터미널에서 종종이 작업을 수행합니다.
41754

@galegosimpatico : dbus 서버를 시작하면 왜이 문제가 해결됩니까?
Bananguin

수퍼 유저가 아닌 경우 무엇이 echo $DISPLAY표시됩니까? 사용하려는 xserver 프로세스는 어느 사용자에게 속합니까? (예를 들어 후자를 찾을 수 있습니다 ps faux)
Bananguin

답변:


12

X 프로그램은 X 디스플레이에 연결하기 위해 두 가지 정보가 필요합니다.

  • 그것은 일반적으로 디스플레이의 주소가 필요 :0당신은 로컬로 로그인 할 때 또는 :10, :11등 당신은 원격으로 로그인 한 (그러나 수 많은 X 연결이 활성화 된 방법에 따라 변경할 수 있습니다) 때. 디스플레이의 주소는 일반적으로 DISPLAY환경 변수에 표시됩니다 .

  • 디스플레이 암호가 필요합니다. X 디스플레이 암호를 매직 쿠키 라고 합니다 . 매직 쿠키는 직접 지정되지 않습니다. 쿠키는 항상 X 표시 파일에 저장됩니다.이 파일은“display :42has cookie 123456” 형식의 레코드 모음입니다 . X 권한 파일은 일반적으로 XAUTHORITY환경 변수에 표시됩니다 . 설정 $XAUTHORITY되어 있지 않으면 프로그램은을 사용 ~/.Xauthority합니다.

참조 원격 X 디스플레이에 열기 창을 (왜 "열 수 없습니다 표시")? 자세한 사항은.

귀하의 경우 DISPLAY가 설정되었지만 프로그램이 쿠키 파일을 찾을 수없는 것 같습니다. XAUTHORITY세션 및 의 값을 확인하십시오 su.

경우 XAUTHORITY세션에 설정되지 않은 su세트 HOME루트의 홈 디렉토리 환경 변수를, 당신은 세트로 필요 XAUTHORITY/home/msz/.Xauthority어디 /home/msz홈 디렉토리입니다.

경우 su제거합니다 XAUTHORITY환경에서이 중 하나를 다시 넣어, 또는 구성 su이 작업을 수행 할 수 없습니다.

홈 디렉토리가 NFS와 같은 일부 파일 시스템에 있으면 root가 직접 읽을 수 없습니다. 이 경우 .Xauthority파일을 비 NFS 파일 시스템의 다른 위치로 복사 할 수 있습니다 .

XAUTHORITY_COPY=$(umask 077; mktemp)
cat "${XAUTHORITY:-~/.Xauthority}" "$XAUTHORITY_COPY"
XAUTHORITY="$XAUTHORITY_COPY" su
rm "$XAUTHORITY_COPY"
unset XAUTHORITY_COPY

1
심볼릭 링크를 만들었으며 효과가있었습니다. 여기있다 :ln -s /home/otheruser/.Xauthority ~
캔 GELIS

XAUTHORITY는 더 이상 존재하지 않는 파일로 설정되었습니다.
pbhj

5

루트로 xhost를 실행하고 있습니다!

일반 사용자로 xhost를 실행 xhost +한 다음 root가되어 다시 시도하십시오.

다른 사람들이 지적했듯이 btw xhost +는 모든 호스트의 모든 사용자를 허용합니다.


많은 최신 시스템이 xhost작동하지 않도록 설정되었습니다 . 그렇다면 적어도 실행 xhost +localhost하지 마십시오 xhost +!
Gilles 'SO- 악마 그만'

이해하자, 그것은 좋은 지적이다. 조언 해 주셔서 감사합니다.
X Tian

내 문제 였어! 감사합니다. 모든 것이 해결되었습니다! 나는 단순히 루트가 아닌 곳에서 실행했습니다.
Quidam

0

나를위한 XAUTHORITY는 더 이상 존재하지 않는 파일로 설정되었습니다.

$ echo $XAUTHORITY

/tmp/xauth-1000-_0

그래서 나는

unset XAUTHORITY

그런 다음 kdesudo를 사용하여 루트로 내 앱에 연결할 수있었습니다 (이 경우 kdesudo bleachbit)


0

일반 사용자로 실행

xhost + localhost

그런 다음 수퍼 유저를

sudo su 

마지막으로 서버 예제로 이동

cd /usr/local/Ampps

마지막으로 ./Ampps를 실행하십시오.

2020 년에 감사합니다


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