X11授权是如何工作的?(麻省理工学院魔法饼干)



我有兴趣得到一个深入的答案,解释X11授权是如何工作的,尤其是MIT Magic Cookies。

我知道它实际上是禁止除登录用户之外的所有人访问,还有一些控制机制可以控制客户端应用程序是否可以连接到X显示服务器。

我还发现有五种标准的访问控制机制,它们可以分为三大类:

  1. 基于主机的访问
  2. 基于cookie的访问
  3. 基于用户的访问

但从这一点开始,我真的不了解这些功能的工作方式,以及它们到底使用了什么方式来进行授权。

首先,机器上有一个~/.Xauthority文件。请注意(通常在带有GUI的机器上)该文件的错误权限,可能会导致登录屏幕循环。。。(我花了几个小时才明白)。

正如你提到的,有5种机制:

  1. 主机访问:服务器有主机访问列表(如果该列表中存在网络地址,则允许连接)。使用CCD_ 1命令来管理该列表。注意:这不允许同时进行多个连接。我对这个方法不太了解,因为我并没有真正使用过它。但你可以看到man Xserver GRANTING ACCESS部分:)

  2. MIT-magic-cookie-1:生成128位密钥("cookie"),将其存储在~/.Xauthority(或Xauthority envvar指向的位置)中。客户端将其发送到服务器plain!服务器检查它是否有这个"cookie"的副本,如果有,则允许连接。密钥由DMX生成。

  3. XDM-authorization-1:同样,有一个密钥存储在~/.Xauthority中。该密钥由两部分组成——56位DES加密密钥和64位随机数据用作验证器。当你连接到服务器时,客户端会生成192位的数据:ctime和48位的标识符(对于tcp/ip:ip地址+端口,对于本地连接,它是PID和32位的唯一id)。DES密钥用于加密数据,然后将其发送到服务器。服务器通过解密用户然后验证64位验证器和附加数据来验证用户。

  4. sun-des-1:它使用非对称加密,服务器有一个公钥,他用它来解密不匹配的请求。它还使用"主机列表"。这需要网络中的一些额外机制,我没有这样的网络,所以我对这个机制不太了解。

  5. 服务器解释:它可以通过多种方式实现。。。但一般情况下,客户端向服务器发送2个字符串。第二个字符串是用户条目(如username),第一个字符串是条目类型(如localuser)。

注意:第二、第三和第四机制将密钥存储在~/.Xauthority中,因此任何有权访问此文件的人都可以假装"你"连接到服务器。

xauth命令可以解析Xauthority文件并提取感兴趣的值。

$ xauth 
Using authority file /home/ME/.Xauthority
xauth> list        
ME/unix:10  MIT-MAGIC-COOKIE-1  5e443c146376d0bdadfd712bfe7654be
ME/unix:0  MIT-MAGIC-COOKIE-1  c48ddba801384dce3aaaa9d442931ea12
xauth> info
Authority file:       /home/ME/.Xauthority
File new:             no
File locked:          no
Number of entries:    2
Changes honored:      yes
Changes made:         no
Current input:        (stdin):2
xauth> 
  • 数据已更改

最新更新