GUI는 $XAUTHORITY가 정의되지 않은 상태에서 실행되지만 루트에서는 실행되지 않습니다.

GUI는 $XAUTHORITY가 정의되지 않은 상태에서 실행되지만 루트에서는 실행되지 않습니다.

저는 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 클라이언트가 그것 없이도 작동하는 것은 완벽하게 괜찮습니다. 사용자를 전환하면 홈 디렉터리가 다르기 때문에 문제가 발생할 수 있습니다. 이 경우 환경 변수를 설정하는 것이 도움이 됩니다.

관련 정보