- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我对解释 X11 授权的确切工作原理,尤其是 MIT Magic Cookies 的深入答案很感兴趣。
我知道它实际上做的是禁止除登录用户以外的任何人访问,还有一些控制机制可以控制客户端应用程序是否可以连接到 X 显示服务器。
我还发现有五种标准的访问控制机制,它们可以分为三大类:
但从现在开始,我并不真正理解它们的工作方式以及它们究竟使用什么方式来进行授权。
最佳答案
嗯,首先在机器上有一个文件 ~/.Xauthority。请注意(通常在具有 GUI 的机器上)此文件的错误权限,可能导致登录屏幕循环...(我花了几个小时才明白)。
正如您提到的,有 5 种机制:
主机访问:服务器有主机访问列表(如果此列表中存在网络地址,则允许连接)。该列表使用 xhost
命令进行管理。注意:这不允许同时有多个连接。我对这种方法了解不多,因为我并没有真正使用过它。但是你可以看到 man Xserver
GRANTING ACCESS 部分 :)
MIT-magic-cookie-1:生成 128 位 key (“cookie”),将其存储在 ~/.Xauthority(或 XAUTHORITY envvar 指向的位置)中。客户端将其发送到服务器 plain!服务器检查它是否有这个“cookie”的副本,如果有,则允许连接。 key 由 DMX 生成。
XDM-authorization-1:同样,~/.Xauthority 中存储了一个 key 。该 key 由两部分组成 - 56 位 DES 加密 key 和用作身份验证器的 64 位随机数据。当您连接到服务器时,客户端生成 192 位数据:ctime 结合 48 位标识符(对于 tcp/ip:ip 地址+端口,对于本地连接,它是 PID 和 32 位唯一 ID)。 DES key 用于加密数据,然后将其发送到服务器。服务器通过解密用户来验证用户,然后验证 64 位身份验证器和其他数据。
sun-des-1:它使用非对称加密,服务器有一个公钥,他用它来解密传入的请求。它还使用“主机列表”。这需要在网络中添加一些额外的机制,我又没有这样的网络,所以我不太了解这种机制。
服务器解释:它可以通过多种方式实现...但一般来说,客户端会向服务器发送 2 个字符串。第二个字符串是用户条目(例如用户名),第一个字符串是条目类型(例如localuser)。
注意:第二、第三和第四种机制将 key 存储在 ~/.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>
关于linux - X11 授权如何工作? (麻省理工学院魔法 cookies ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37157097/
我在Windows 10中使用一些简单的Powershell代码遇到了这个奇怪的问题,我认为这可能是我做错了,但我不是Powershell的天才。 我有这个: $ix = [System.Net.Dn
var urlsearch = "http://192.168.10.113:8080/collective-intellegence/StoreClicks?userid=" + userId +
我有一个非常奇怪的问题,过去两天一直让我抓狂。 我有一个我试图控制的串行设备(LS 100 光度计)。使用设置了正确参数的终端(白蚁),我可以发送命令(“MES”),然后是定界符(CR LF),然后我
我目前正试图让无需注册的 COM 使用 Excel 作为客户端,使用 .NET dll 作为服务器。目前,我只是试图让概念验证工作,但遇到了麻烦。 显然,当我使用 Excel 时,我不能简单地使用与可
我开发了简单的 REST API - https://github.com/pavelpetrcz/MandaysFigu - 我的问题是在本地主机上,WildFly 16 服务器的应用程序运行正常。
我遇到了奇怪的情况 - 从 Django shell 创建一些 Mongoengine 对象是成功的,但是从 Django View 创建相同的对象看起来成功,但 MongoDB 中没有出现任何数据。
我是 flask 的新手,只编写了一个相当简单的网络应用程序——没有数据库,只是一个航类搜索 API 的前端。一切正常,但为了提高我的技能,我正在尝试使用应用程序工厂和蓝图重构我的代码。让它与 pus
我的谷歌分析 JavaScript 事件在开发者控制台中运行得很好。 但是当从外部 js 文件包含在页面上时,它们根本不起作用。由于某种原因。 例如; 下面的内容将在包含在控制台中时运行。但当包含在单
这是一本名为“Node.js 8 the Right Way”的书中的任务。你可以在下面看到它: 这是我的解决方案: 'use strict'; const zmq = require('zeromq
我正在阅读文本行,并创建其独特单词的列表(在将它们小写之后)。我可以使它与 flatMap 一起工作,但不能使它与 map 的“子”流一起工作。 flatMap 看起来更简洁和“更好”,但为什么 di
我正在编写一些 PowerShell 脚本来进行一些构建自动化。我发现 here echo $? 根据前面的语句返回真或假。我刚刚发现 echo 是 Write-Output 的别名。 写主机 $?
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 4年前关闭。 Improve thi
我将一个工作 View Controller 类从另一个项目复制到一个新项目中。我无法在新项目中加载 View 。在旧项目中我使用了presentModalViewController。在新版本中,我
我对 javascript 很陌生,所以很难看出我哪里出错了。由于某种原因,我的功能无法正常工作。任何帮助,将不胜感激。我尝试在外部 js 文件、头部/主体中使用它们,但似乎没有任何效果。错误要么出在
我正在尝试学习Flutter中的复选框。 问题是,当我想在Scaffold(body :)中使用复选框时,它正在工作。但我想在不同的地方使用它,例如ListView中的项目。 return Cente
我们当前使用的是 sleuth 2.2.3.RELEASE,我们看不到在 http header 中传递的 userId 字段没有传播。下面是我们的代码。 BaggageField REQUEST_I
我有一个组合框,其中包含一个项目,比如“a”。我想调用该组合框的 Action 监听器,仅在手动选择项目“a”完成时才调用。我也尝试过 ItemStateChanged,但它的工作原理与 Action
你能看一下照片吗?现在,一步前我执行了 this.interrupt()。您可以看到 this.isInterrupted() 为 false。我仔细观察——“这个”没有改变。它具有相同的 ID (1
我们当前使用的是 sleuth 2.2.3.RELEASE,我们看不到在 http header 中传递的 userId 字段没有传播。下面是我们的代码。 BaggageField REQUEST_I
我正在尝试在我的网站上设置一个联系表单,当有人点击发送时,就会运行一个作业,并在该作业中向所有管理员用户发送通知。不过,我在失败的工作表中不断收到此错误: Illuminate\Database\El
我是一名优秀的程序员,十分优秀!