X.org가 chroot에서 소켓 없이 작동하나요?

X.org가 chroot에서 소켓 없이 작동하나요?

나는 chroot 설정을 갖고 있으며 아무런 문제 없이 그래픽 응용 프로그램을 실행해 왔습니다. 내가 만든 유일한 설정은 설정 DISPLAY=:0되어 작동하는 것뿐이었습니다. 그러나 나는 항상 Unix 도메인 소켓이 X11용이라고 생각했기 때문에 이것이 왜 작동하는지 이해할 수 없습니다. 좀 조사해 보니 내 말이 옳았다는 것이 밝혀졌습니다. 내 X.org 서버는 -nolisten tcp이 플래그로 시작되고 Unix 도메인 소켓이 있지만 /tmp/.X11-unix어떻게 든 내 chroot는 소켓 없이 X11 디스플레이에서 그래픽 응용 프로그램을 시작할 수 있습니다. 나는 소켓을 chroot에 하드 링크한 적이 없으며 실제로 동일한 파일 시스템에 있지도 않습니다. /tmp/.X11-unixchroot는 완전히 비어 있습니다. 내 chroot가 내 X11 모니터에서 그래픽 응용 프로그램을 시작하는 것이 어떻게 가능합니까?

답변1

X 서버는 또한 UNIX 소켓과 동일한 방식으로 작동하고 경로 이름이 NUL 문자로 시작한다는 점을 제외하면 UNIX 소켓과 유사한 경로 이름을 갖는 추상 소켓을 지원합니다. "추상"에 대한 문서를 참조하세요.유닉스(7)맨페이지. 추상 소켓은 모든 파일 시스템 네임스페이스와 chroot에 효과적으로 존재합니다. 이를 사용하기 위해 chroot나 네임스페이스에 연결할 필요가 없습니다.

아마도 X 서버와 클라이언트 모두 추상 소켓을 사용하여 통신할 수 있을까요? 표준 X 클라이언트 라이브러리를 사용하는 X 클라이언트는 자동으로 추상 소켓을 사용하려고 시도합니다.앞으로그들은 기본 UNIX 소켓을 사용하려고 합니다. libxcb에서 다음을 참조하세요 _xcb_open._xcb_open_abstractsrc/xcb_util.c.

관련 정보