MIT-MAGIC-COOKIE-1:不允许我以 root 身份运行 GUI 命令。我该如何修复此问题?

MIT-MAGIC-COOKIE-1:不允许我以 root 身份运行 GUI 命令。我该如何修复此问题?

我使用 PureOS GNU/Linux 发行版(基于 Debian/Ubuntu)。我安装了 XDM 作为显示管理器。以 root 身份登录 X 会话后,我遇到了一个错误。我无法再在非 root X 会话中以 root 身份运行 GUI 命令。我收到错误消息,提示我的 MIT-MAGIC-COOKIE-1 错误。这似乎与 .Xauthority 文件或 $XAUTHORITY 变量有关。

我在互联网上的几个论坛上看到了解决这个问题的几种方法。xhost以非 root 身份运行并以各种形式运行其参数;但这会禁用系统的身份验证,从而导致安全漏洞;此外,每次 X 会话都必须执行此操作。运行sudo -sE;但这会保留非 root 环境。运行su-to-root -X -c [command] %U;它有效。运行ssh -YXC [user]@[machine-name] [command];它有效。但这些是无法解决原始问题的变通方法。

DISPLAY=:0 /usr/bin/xhost +local:没有用。都不起作用su - root -c [command]。都不起作用touch ~/.Xauthority; xauth generate $DISPLAY . trusted; xauth add ${HOST}$DISPLAY . $(xxd -l 16 -p /dev/urandom); xauth merge .Xauthority;它给了我错误unable to rename authority file /var/lib/xdm/authdir/authfiles/, use /var/lib/xdm/authdir/authfiles/-n

经过一番研究(x11vnc 包帮助了我),我发现包含正确 magic cookie 的文件是/var/lib/xdm/authdir/authfiles/A\:0-[whatever]。奇怪的是,第一次将其复制为新的 .Xauthority 文件根本不起作用,但第二次却起作用了。所以我做了一个,export XAUTHORITY="/var/lib/xdm/authdir/authfiles/A:0-[whatever]"这似乎解决了这个问题。但是,当我做了一个 时export XAUTHORITY="/var/lib/xdm/authdir/authfiles/*",它不起作用;但最奇怪的是,echo $XAUTHORITY显示了完整的文件路径。

此外,我删除了非 root 用户的 .Xauthority 文件和 $XAUTHORITY 变量,并重新启动了设备,以查看它是否会对该帐户产生任何副作用。奇怪的是,在重新启动之前,非 root 用户即使没有它们也可以运行 GUI 命令。重新启动后,非 root 用户的 $XAUTHORITY 变量指向/tmp/.Xauth[whatever]

另外,我发现每次我重新启动计算机时,非 root 用户都会收到一个新的魔术 cookie,该 cookie 与 A:0-[whatever] 文件匹配(十六进制转储显示它们包含匹配的十六进制字符串)。

这引发了一系列问题:为什么 root 用户停止从系统接收随机魔法 cookie?哪个进程生成并传递这些魔法 cookie?是否有命令让 root 生成正确的 cookie?

相关内容