我感兴趣的是一个深入的答案,解释X11授权是如何运作的,特别是MIT Magic Cookies。
我理解它实际上做的是禁止访问除登录用户以外的所有其他人,还有一些控制机制可以控制客户端应用程序是否可以连接到Xdisplay服务器。
我还发现有五种标准的访问控制机制,它们可以分为三大类:
但是从这一点开始,我并不真正理解这些工作的方式以及他们为了进行授权而使用的方式。
答案 0 :(得分:7)
好吧,首先在机器上有一个文件〜/ .Xauthority。 请注意(通常在具有GUI的计算机上)此文件的错误权限,可能导致登录屏幕循环...(花了我几个小时才明白)。
正如您所提到的,有5种机制:
主机访问:服务器具有主机访问列表(如果此列表中存在网络地址,则允许连接)。使用xhost
命令管理列表。注意:这不允许同时进行多个连接。我不太了解这种方法,因为我并没有真正使用它。但是你可以看到man Xserver
授予访问部分:)
MIT-magic-cookie-1:生成128位密钥(" cookie"),将其存储在〜/ .Xauthority(或XAUTHORITY envvar指向的位置)。客户端将其发送到服务器 plain !服务器检查它是否有这个" cookie"的副本。如果是,则允许连接。密钥由DMX生成。
XDM-authorization-1:同样,有一个密钥存储在〜/ .Xauthority中。该密钥由2部分组成 - 56位DES加密密钥和64位随机数据用作认证者。 当您连接到服务器时,客户端生成192位数据:ctime与48位标识符相结合(对于tcp / ip:ip地址+端口,对于本地连接,它是PID和32位唯一ID)。 DES密钥用于加密数据,然后将其发送到服务器。服务器通过解密然后验证64位验证器和其他数据来验证用户。
sun-des-1:它使用非对称加密,服务器有一个公钥用于解密请求。它还使用"主机列表"。这需要网络中的一些额外机制,我再也没有这样的网络,我不太了解这种机制。
服务器解释:它可以用很多方式实现......但一般来说,客户端向服务器发送2个字符串。第二个字符串是用户条目(例如用户名),第一个字符串是条目类型(例如localuser)。
注意:第2,第3和第4机制将密钥存储在〜/ .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>