다른 사용자로 xterm을 열려고 합니다:
$ su - michel
$ xterm
No protocol specified
xterm: Xt error: Can't open display: :0
$ exit
$ sudo su - michel
$ xterm
No protocol specified
xterm: Xt error: Can't open display: :0
답변1
다음을 수행할 때su
, 폐기됩니다DISPLAY
환경 변수(터미널에 창을 표시할 위치를 알려주는 데 사용됨) 설정하면DISPLAY
, 다른 문제에 직면하게 될 것입니다(본질적으로권한)는 여러 번 요청되었습니다.X DISPLAY 변수가 올바른 경우 "디스플레이를 열 수 없습니다: :0"(이 중 하나가 다른 관련 질문의 중복으로 잘못 표시되었습니다.)
답변2
힐 자체를 사용할 수 있다면 힐을 사용해도 sudo
아무런 의미가 없습니다 .su
su
문제는 다른 사용자가 이를 사용할 수 없다는 것입니다 $DISPLAY
. 임의의 사용자가 모니터에 연결하는 것을 원하지 않습니다. 다른 사용자가 귀하의 모니터에 연결하도록 허용하려면 해당 사용자에게 귀하의 $XAUTHORITY
파일에 대한 액세스 권한도 부여해야 합니다. 일반적으로 $XAUTHORITY
파일에는 다중 모니터에 대한 정보가 포함되어 있지 않으므로 대상 사용자가 파일 내용에 액세스할 수 있도록 설정하거나 파일을 복사하기만 하면 됩니다.
$XAUTHORITY
또한 정보를 추출하여 대상 사용자를 위한 파일 로 병합할 수도 있습니다 . @mosvy의 의견은 다음과 같이 제안 ssh
하지만 su
작동합니다.
xauth extract - $DISPLAY | su sebastien -c 'xauth merge - <&7' 7<&0 </dev/tty
답변3
마침내 이 명령을 발견했고 이제는 작동합니다.
$ xhost local:$USER
non-network local connections being added to access control list
$ sudo su - michel -c "xterm -e 'sleep 1'"
$
답변4
나는 유사한 모든 문제에 대해 거의 모든 해결책을 시도했습니다. 그들 중 누구도 작동하지 않습니다. 그런데 해결책을 찾았어요여기(중국어) 해결되었습니다.
~/.Xauthority
간단히 쉘을 삭제하고 다시 시작할 수 있습니다 .
다시 로그인하면 모든 것이 정상입니다.