Xhost
X는 기본적으로는 X 서버와 같은 단말기에서 동작하는 X 애플리케이션 표시만을 허가한다. 다른 단말기에서의 접속을 허가하려면 xhost를 이용한다.
현재 호스트 시스템에서 Enhanced X-Windows에 액세스하는 사람을 제어합니다.
Usage
Description
xhost 명령은 X 서버가 연결을 허용하는 시스템 목록에 호스트 이름을 추가하거나 삭제합니다.
이 명령은 디스플레이 연결이 있는 시스템에서 실행되어야 합니다. -Host
매개변수를 사용하여 액세스 목록에서 이름을 제거할 수 있습니다. 액세스 목록에서 현재 이름을 제거하지 마십시오. 그렇다면 수정하기 전에 시스템에서 로그오프하십시오.
변수 없이 xhost 명령을 입력하면 X 서버에 액세스할 수 있는 현재 호스트 이름과 액세스 활성화 여부를 나타내는 메시지가 표시됩니다.
보안을 위해 액세스 제어에 영향을 미치는 옵션은 제어 호스트에서만 실행할 수 있습니다. 워크스테이션의 경우 이는 서버와 동일한 시스템입니다. X 터미널의 경우 로그인 호스트입니다.
기본 원격 이름을 활성화하려면 /etc/X?.hosts
파일에 이름을 정의하면 됩니다. 여기에서 ?
는 액세스를 활성화 하려는 디스플레이 번호입니다.
예를 들어, jeanne:0
디스플레이는 jeanne
이라는 기본 호스트 이름을 사용하는 시스템의 /etc/X0.hosts
파일에 정의된 시스템에서 액세스할 수 있습니다. 표시 이름과 파일 이름 모두에서 0은 정의된 원격 시스템이 향상된 X-Windows를 통해 액세스할 수 있는 표시 번호를 나타냅니다.
Flags
-
+Name
- X 서버 액세스 목록에 추가할 호스트 이름(더하기 기호는 선택 사항)을 정의합니다.
-
-Name
- X 서버 액세스 목록에서 제거할 호스트 이름을 정의합니다.
- 기존 연결은 끊어지지 않지만 새로운 연결 시도는 거부됩니다. 현재 시스템을 제거할 수 있습니다. 그러나 추가 연결(다시 추가하려는 시도 포함)은 허용되지 않습니다.
- 로컬 연결을 다시 허용하는 유일한 방법은 서버 리셋 입니다. (이로 인해 모든 연결이 끊어집니다.)
-
+
- 액세스가 무제한임을 지정합니다. Access control is turned off.
-
-
- Turns access control on.
Name
은 family:name
포맷을 사용한다:
-
inet
- Internet host -
local
- Contains only one name, the empty string
NOTE |
"family" 는 대소문자를 구분한다. "name"의 포맷은 "family"에 따라 다릅니다. |
통신 소켓 위치
유닉스 계열의 경우: /tmp/.X11-unix
Examples
로컬 유저 접속 가능하게
잘 모르겠고 X 서버에 접근 가능하게 하고싶다면:
접속 가능 서버 명시
다음 예시는 192.168.11.12
의 X 애플리케이션을 자신이 이용하는 X 서버에 표시한다.
xeyes로 제대로 실행이 되는지 확인할 수 있다.
Display syntax
X 서버를 지정하는 형식은 다음과 같다.
- X서버명: IP주소나 이름 분석(name resolution)이 가능한 호스트 이름이다.
- 디스플레이번호: X 세션의 번호로,
-display
에서는 필수 지정 항목이다. - 스크린번호: X 서버가 이용하는 디스플레이 확인을 위한 것이다. 이를 생략할 경우 기본값은
0
이다.
xhost를 사용해 접속을 허가할 X 클라이언트 실행 호스트만을 추가하는 것이라면 +
는 생략하고 IP주소만 지정해도 된다. 단, +
만 적고 대상 IP주소를 지정하지 않는 경우 TCP/IP로 접속 가능한 모든 호스트가 X 서버에 액세스할 수 있게 되므로 주의해야한다.
그리고 사용자명으로도 지정할 수 있다. 다음은 localhost
의 사용자 rino
의 접속을 허가하는 예제이다.
현재 액세스 제어 상태 확인
옵션 없이 xhost을 실행하면 된다.
그럼 다음과 같이 출력된다:
Docker 에서 실행
- Docker GUI 연동하는 법
- Running Pygame in a Docker container (MacOS)
- docker 내부에서 GUI, GL 프로그램 실행 – ahnbk.dev
먼저 host 머신에서 docker
이름의 사용자가 실행하는 모든 프로그램을 X윈도우에 접근 가능하도록 권한을 설정합니다:
DISPLAY 환경 변수 확인:
Docker 실행:
그리고 게스트(컨테이너 내부)에서:
apt update
apt install x11-apps
xeyes
## 또는 OpenGL 테스트를 하고싶다면:
apt update
apt install mesa-utils
glxgears
X윈도우 접근 권한을 원상복구하려면:
docker user 외에도 아래처럼 X windows를 로그인한 user로 설정해도 된다.