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 套接字相同,并且具有与 UNIX 套接字类似的路径名,但路径名以 NUL 字符开头。请参阅“抽象”的文档UNIX(7)联机帮助页。抽象套接字有效地存在于所有文件系统名称空间和 chroot 中;您无需将任何内容链接到 chroot 或命名空间即可使用它。

也许X服务器和客户端都使用抽象套接字进行通信?使用标准 X 客户端库的 X 客户端将自动尝试使用抽象套接字,他们尝试使用默认的 UNIX 套接字。在 libxcb 中,请参阅_xcb_open_xcb_open_abstractsrc/xcb_util.c

相关内容