我正在尝试使用 x11vnc 来允许用户远程控制某些计算机。一般来说,这工作得很好,但有一个方面我在实施时遇到了困难。我想限制对特定用户帐户的访问,但 X11 会话所属的用户是不同的用户。
所以情况是:
- 用户A已登录计算机
- 用户 B 从 shell 手动启动 x11vnc
- VNC-client V 从某处连接到它
问题是我只能以 root 或当前登录的用户身份启动 x11vnc,它不能像任何其他用户一样工作。有什么方法可以允许特定用户访问我的 X11 会话吗?
答案1
X 显示器受“密钥”保护,您需要提供该“密钥”才能连接。该密钥通常存储在用户的~/.Xauthority
文件中。
为了允许其他人的应用程序(如 x11vnc)连接到他的 DISPLAY,用户必须向他提供该密钥或授予他访问其~/.Xauthority
文件的权限。您可以通过执行以下操作来检索显示器的密钥。
xauth list "$DISPLAY"
~/.Xauthority
您可以通过更改权限(组所有权或 ACL)来授予您的访问权限。
其他用户可以指定哪个权威文件通过环境变量使用XAUTHORITY
,或者将特定显示的键添加到他自己的~/.Xauthority
使用中xauth add
。
答案2
如果您的问题是x11vnc
由于无权访问 X 会话而无法启动,则您需要在以其他用户身份xhost +SI:localuser:other_username
启动之前向其他用户授予访问权限x11vnc
。
不过,问题的标题听起来像是您想要限制对 VNC 服务器的访问。