我的机器上运行着一个 X.org 服务器(没有 PAM、PolicyKit 等的 Gentoo Linux),使用 -nolisten tcp 禁用了传入的 TCP 连接。
是否可以建立一个白名单,指定哪些本地用户可以在该 X11 显示器上打开窗口?
编辑:我使用这个 systemd 单元启动我的 X 服务器:
[Unit]
Description=X Window System
Requires=systemd-user-sessions.service
After=systemd-user-sessions.service
[Service]
ExecStart=/usr/bin/xinit ${HOME}/.xinitrc -- -nolisten tcp vt09
User=myuser
Environment=SHELL=/bin/bash
[Install]
Alias=display-manager.service
编辑2:我已将其修改为此...
ExecStart=/usr/bin/xinit ${HOME}/.xinitrc -- -auth ${HOME}/.Xauthority -nolisten tcp vt09
...创建了${HOME}/.Xauthority...
mcookie | sed -e 's/^/add :0 . /' | xauth -q
... 并重新启动 X 服务器。瞧,授权现在是默认拒绝。为了授予特定用户访问权限,我已将 .Xauthority 复制到他们的主目录。
未使用 xhost 命令。
答案1
使用 Xorg – 是的,通过使用一种特殊的“服务器解释”地址:
xhost +SI:localuser:root
xhost +SI:localuser:jim
或者,您可以为每个用户提供一份用于的 Xauthority 文件的副本Xorg -auth …
。
但是,X11 不是为多个用户访问同一显示器而设计的,每个客户端基本上都具有完全访问权限,因此这样做会引入一个巨大的安全漏洞——任何用户都可以监视整个屏幕、运行键盘记录器、授予其他任何人访问权限或撤销现有用户的访问权限。
答案2
您还可以使用以下命令禁用 xhost 安全性:
xhost +