xhost 명령에 대해서
xhost 명령은 X서버가 호스트 접근 제어를 하기 위해 사용하는 명령어입니다.
X 윈도우에서 xterm과 같은 X응용프로그램은 X 서버에게 자신을 표현해 줄 디스플레이를 요청합니다.
이러한 요청에 대해 허용할지 말지를 호스트 단위로 제어할 수 있습니다.
유닉스/리눅스의 콘솔 X 서버는 기본적으로 호스트 접근 제어를 하고 있고 로컬의 연결에 대해서만 허용하고 있습니다.
그래픽 상태로 구동 중인 어떤 서버 A의 IP 주소가 192.168.1.100이라면, 네트워크 연결이 가능한 상태인 또 다른 서버 B에서 다음과 같은 명령을 실행하여 봅니다.
$ xclock -display 192.168.1.100:0&
이 명령은 B 서버의 xclock 프로그램을 A 서버로 띄우겠다는 의미입니다.
다음과 같은 에러 메시지가 나온다면 A 서버는 호스트 접근 제어를 하고 있는 상태입니다.
Xlib: connection to "192.168.1.251:0.0" refused by server Xlib: No protocol specified Error: Can't open display: 192.168.1.251:0
xhost + 의 의미
$ xhost + access control disabled, clients can connect from any host
위의 A 서버에서 xhost + 명령을 내린 후에 B 서버에 접속한 후 xclock을 띄우기 위해 동일함 명령을 내려 봅니다.
A 서버에 xclock 프로그램이 구동하는 것을 확인할 수 있습니다.
반대로 xhost -는 모든 호스트에 대해 접근을 차단하겠다는 의미며, 호스트 접근 제어를 하겠다(enable)는 의미입니다. 이 경우라 하더라도 로컬의 프로그램에 대해서는 허용합니다.
xhost는 +나 - 뒤에 호스트 이름이나 IP 주소를 입력하여 해당 머신에 대해서만 접근 제어를 할 수 있습니다.
xhost + 192.168.1.101 xhost - 192.168.1.101
Xmanager도 호스트 접근 제어를 할 수 있습니다. 기본값으로 모든 호스트의 접근에 대해 허용합니다. 그러므로 모든 호스트는 Xmanager가 구동 중인 PC의 Xmanager에 그래픽 처리를 요청하여 구동될 수 있습니다.
따라서 Xmanager를 이용하여 원격의 유닉스/리눅스에 접속한 후 내린 xhost +는 무의미한 명령입니다. 이 명령은 접근 제어를 기본값으로 하고 있지 않는 Xmanager를 상대로 하는 명령이기 때문입니다.
Xmanager로 접속한 유닉스/리눅스의 터미널 프로그램에서 xhost 명령을 실행하면 다음과 같습니다.
$ xhost access control disabled, clients can connect from any host $ xhost - access control enabled, only authorized clients can connect $ xhost + access control disabled, clients can connect from any host