![GUI는 $XAUTHORITY가 정의되지 않은 상태에서 실행되지만 루트에서는 실행되지 않습니다.](https://linux55.com/image/35227/GUI%EB%8A%94%20%24XAUTHORITY%EA%B0%80%20%EC%A0%95%EC%9D%98%EB%90%98%EC%A7%80%20%EC%95%8A%EC%9D%80%20%EC%83%81%ED%83%9C%EC%97%90%EC%84%9C%20%EC%8B%A4%ED%96%89%EB%90%98%EC%A7%80%EB%A7%8C%20%EB%A3%A8%ED%8A%B8%EC%97%90%EC%84%9C%EB%8A%94%20%EC%8B%A4%ED%96%89%EB%90%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
저는 Xfce를 데스크탑 환경으로 사용하는 CentOS 6을 사용하고 있으며 디스플레이 관리자 xdm
로 전환했습니다 gdm
.
그러나 이렇게 변경한 후 매우 이상한 현상을 관찰했습니다. 그래픽 응용 프로그램이 $XAUTHORITY
정의 없이 실행될 수 있었습니다.
$ echo $DISPLAY
:0.0
$ echo $XAUTHORITY
$ zenity --error --text ".........."
$ echo $?
0
그러나 내가 sudo할 때:
$ sudo -s
[sudo] password for xxxxxx:
# echo $DISPLAY
:0.0
# echo $XAUTHORITY
# zenity --error --text "........."
No protocol specified
(zenity:3793): Gtk-WARNING **: cannot open display: :0.0
나는 GUI를 실행하려면 둘 다 정의 $DISPLAY
해야 한다고 생각했지만 그런 일은 일어나지 않았습니다. $XAUTHORITY
무슨 일인지 아는 사람 있나요?
편집하다:
그러나 확인하고 사용하기 위해 의견에 제안된 값은 다음 DBUS_SESSION_ADDRESS_VALUE
과 같습니다.
$ echo $DBUS_SESSION_BUS_ADDRESS
unix:abstract=/tmp/dbus-ypE50rEtQu,guid=7e2bc970a8ca43af3f7bb01000000255
$ echo $DISPLAY
:0.0
$ sudo -s
# export DBUS_SESSION_BUS_ADDRESS="unix:abstract=/tmp/dbus-ypE50rEtQu,guid=7e2bc970a8ca43af3f7bb01000000255"
# echo $DISPLAY
:0.0
# echo $DBUS_SESSION_BUS_ADDRESS
unix:abstract=/tmp/dbus-ypE50rEtQu,guid=7e2bc970a8ca43af3f7bb01000000255
# zenity --error --text "..........."
No protocol specified
(zenity:16931): Gtk-WARNING **: cannot open display: :0.0
답변1
이것엑스(7) 개요 매뉴얼 페이지(전체 기사를 읽어볼 것을 권장함)에서는 다음과 같이 설명합니다.
Xlib가 인증 데이터를 추출하는 파일은 환경 변수 XAUTHORITY를 사용하여 지정할 수 있으며 기본값은 홈 디렉터리의 .Xauthority 파일입니다.
따라서 인증 파일이 공통 위치에 있는 경우 XAUTHORITY는 필수가 아닙니다. X 클라이언트가 그것 없이도 작동하는 것은 완벽하게 괜찮습니다. 사용자를 전환하면 홈 디렉터리가 다르기 때문에 문제가 발생할 수 있습니다. 이 경우 환경 변수를 설정하는 것이 도움이 됩니다.