내 상황은 다음과 같습니다.
내 컴퓨터 중 하나에 두 명의 (sudo) 사용자가 있습니다.
userA
(머신에서 먼저 생성하세요.:0
모니터를 연결하는 곳이기도 합니다.)userB
(나중에 생성됨)
지금 userA
나는하고 있습니다 :
export DISPLAY=:0.0
xclock
DISPLAY:0
예상대로 시계가 열립니다.
이제 나는 같은 단계를 따르고 싶습니다 userB
. 그러나 불행히도 다음과 같이 표시됩니다.
No protocol specified
xhost: unable to open display ":0.0"
내가 시도한 것:
- 다음 을 사용하여 신뢰할 수 있는 xauth 키를 만듭니다.
xauth generate :0.0 . trusted
다시 표시unable to open display ":0.0"
/home/userA/.Xauthority
( 참고 : 작동하지만 xauth 목록에 디스플레이 :0과 관련된 키가 표시되지 않습니다/home/userB/.Xauthority
. )userA
:0
on에 대해 신뢰할 수 있는 xauth 키를 생성userA
하고 해당 키를 에 복사합니다userB
.
이들 중 어느 것도 작동하지 않습니다.
작동하는 것:
- 로그인했습니다
userA
.export DISPLAY=:0.0
그런 다음xhost +
모든 클라이언트에 대한 액세스를 활성화했습니다. - 나는 다시 로그인 했다
userB
.export DISPLAY=:0.0
xclock
userA
1단계를 없애고 싶습니다. 매번 로그인하고 싶지는 않습니다. 나는 시도했지만 xhost +
위에 userB
이미 표시된 오류가 표시되었습니다.
액세스 권한이 있다고 생각하면서 xhost +
어떻게 실행할 수 있나요 ?userB
DISPLAY:0
편집하다: @user414777이 언급했듯이 다음을 수행할 수 있었습니다.
# On userA
$ xhost +si:localuser:userB
# On userB
$ export DISPLAY=:0.0 ; xclock
그리고 작동시키세요. 그러나 이러한 변경 사항은 재부팅 후에도 유지되지 않습니다.
# After rebooting, on userB
$ export DISPLAY=:0.0 ; xclock
Invalid MIT-MAGIC-COOKIE-1 keyError: Can't open display: :0.0
저는 Ubuntu 18.04 LTS, 4.18.0-15-generic을 실행하고 있습니다.
해결됨
나는 결국 @user414777의 약간 안전하지 않고 수정된 제안을 받아들였습니다. ~/.xsession
또는 에 변경 사항을 추가하는 대신 모든 사용자에게 변경 사항을 적용하는 줄 Xsession.d
을 추가했습니다 ./etc/profile
답변1
대부분의 "최신" Linux 시스템에서는 다음을 수행할 수 있습니다.
xhost +si:localuser:userB
userA
다음 계정으로 실행(이미 모니터에 액세스할 수 있는 사람)하면 userB
연결할 수 있습니다(올바른 DISPLAY
환경 변수를 설정하거나 올바른 -display
명령 --display
줄 옵션을 사용하는 경우).
이것은 매우 안전하지 않지만 (적어도 Debian에서는) 지원되는 유일한 것입니다 Xwayland
.강제로심지어 일반 것들 Xorg
.
xauth(1)
매뉴얼 페이지와 여기 및 다른 곳에서 많은 답변에 이미 언급된 일반적인 접근 방식은 다음과 같습니다.
xauth extract - "$DISPLAY" | ssh userB@localhost xauth merge -
하지만 내 시스템에서는 이 기능이 에서만 작동 Xorg
하고 에서는 작동하지 않습니다 Xwayland
. 위 명령을 사용하면 su
또는 sudo
대신 을 사용 ssh
하거나 두 단계로 수행할 수 있습니다.