这个“xhost ...”命令有什么作用?

这个“xhost ...”命令有什么作用?

请帮助我理解这一行命令:

xhost +SI:localuser:lightdm

参考这篇文章的答案并建议是否有更好的方法以及为什么需要这样做。我无法从手册页中获得太多信息,因此我希望有一些更详细的答案以使其变得简单。 (我应该用我的用户名替换 localuser 吗?这是否类似于添加到组中?我知道 + 是用于添加,但不明白 SI 或 si !)

另请说明如何将用户添加到“允许建立连接的列表”以及这意味着什么。另外,如何查看当前列表?

答案1

xhost +SI:localuser:lightdm允许lightdm用户访问正在运行的 X 服务器。当前的 X 服务器由环境变量指示DISPLAY


联机帮助页有相当好的解释:

   [+]name The given name (the plus sign is optional) is added to the list
           allowed to connect to the X server.  The name  can  be  a  host
           name or a complete name (See NAMES for more details).
...
NAMES
   A complete name has the syntax ``family:name'' where the  families  are
   as follows:
...
   si        Server Interpreted
...
   the server interpreted address "si:localuser:username" can be  used  to
   specify a single local user. (See the Xsecurity(7) manual page for more
   details.)

还有Xsecurity联机帮助页说:

SERVER INTERPRETED ACCESS TYPES
   The  sample  implementation   includes   several   Server   Interpreted
   mechanisms:
       IPv6                          IPv6 literal addresses
       hostname                      Network host name
       localuser                     Local connection user id
       localgroup                    Local connection group id

稍微了解一下上下文:有两种常用的方法来允许访问 X 服务器。一种是通过Xauthority文件,由客户端共享,不需要进一步的服务器端配置。另一种是通过xhost列表,在服务器上完成配置运行(所以这不是永久性的改变)。

因此,localuser是一个要按原样保留的关键字(lightdm这里是用户名,LightDM 运行时使用的用户名)。这有点像添加到组,因为组是服务器对授权的理解。但是,系统组或用户不会受到影响。仅更改 X 服务器的运行时配置。

不带参数运行时的默认行为xhost是打印列表,如联机帮助页所述:

nothing If no command line arguments are given,  a  message  indicating
        whether  or not access control is currently enabled is printed,
        followed by the list of those allowed to connect.  

例如:

$ xhost
access control enabled, only authorized clients can connect
SI:localuser:muru

我们可能需要检查代码来确定如何用户被添加到列表中,以及 X 如何使用该列表。


这样做的原因是使用gsettings,它使用dbus,而这通常需要运行一个 X 服务器。然而,这不是必需的,你可以看到这个 AskUbuntu 答案

相关内容