나는 다음과 동등한 작업을 수행하려고합니다.
$ sudo -u myuser DISPLAY=:1 xterm
그러나 다음과 같은 오류가 발생합니다.
Client is not authorized to connect to Server
반면에 저는 이것을 잘 할 수 있습니다:
$ sudo -u -i myuser
$ DISPLAY=:1 xterm
X 서버에서 X11 기반 응용 프로그램을 다른 사용자로 직접 실행하는 것을 허용하지 않는 이유는 무엇이며 이를 명시적으로 허용할 수 있는 방법이 있습니까?
답변1
다른 사용자가 귀하의 X 서버에 연결하도록 허용한다는 것은 그 사람이 귀하의 화면을 볼 수 있고 귀하가 입력하는 내용(예: 비밀번호)을 볼 수 있으며 귀하의 응용 프로그램을 종료할 수 있음을 의미합니다(귀하의 응용 프로그램에 대한 연결을 종료하면 귀하는 로그아웃됩니다. 가짜 창으로 유혹하는 창 관리자... 이를 염두에 두면 기본적으로 허용되지 않는 이유를 쉽게 이해할 수 있습니다.
다른 사용자가 X 서버에 액세스하도록 허용하려면 해당 사용자에게 서버 액세스 코드를 제공할 수 있습니다(출력을 참조 xauth list "$DISPLAY"
하거나 다른 사용자가 로컬인 경우 다음을 실행하십시오).xhost +si:localuser:myuser
답변2
myuser의 비밀번호나 myuser의 ~/.ssh/authorized_keys에 키가 있고 시스템이 해당 xhost +si:localuser
구문을 지원하지 않는 경우 시도해 볼 수 있습니다.ssh -X myuser@localhost xterm
-X
이 SSH 연결을 통한 X 전달을 활성화하고 새 연결을 만듭니다.가상다른 사용자만 액세스할 수 있는 X 서버는 시스템의 모든 사용자가 실행하는 프로세스에 요청을 열지 않고 X 서버에 요청을 전달합니다. 이는 일반적으로 xhost
긴급한 요구 사항을 충족하거나 게으름 또는 ICBFRTFM으로 인해 발생합니다 xhost +localhost
.
이 방법은 사용자가 원격 시스템에 있을 때에도 작동하며 그 잠재력을 최대한 보여줍니다.
전달과 관련된 약간의 오버헤드가 있습니다. -o Ciphers=arcfour
해당 옵션을 ssh에 추가하면 성능이 향상될 수 있습니다.
(그런데 저는 이와 같은 연결을 통해 집 LAN에 있는 다른 컴퓨터에 Second Life 클라이언트와 같은 3D 프로그램을 실행했습니다 ssh -X
. 좋지는 않지만 테스트 목적으로는 충분히 잘 작동합니다.)