无法以超级用户身份连接到 X 服务器:0.0

msz*_*msz 11 su x11 xauth

当我在线时,出现以下错误并且该工具无法启动:

[root@dhcppc9 lin64]# ./ise
No protocol specified
_pn: cannot connect to X server :0.0
Run Code Online (Sandbox Code Playgroud)

但是当我不是超级用户时,一切都很好。为什么?

编辑

[root@dhcppc9 lin64]# export $(dbus-launch)
No protocol specified
Run Code Online (Sandbox Code Playgroud)

有什么建议吗?

[root@dhcppc9 lin64]# xhost [+]
No protocol specified
xhost:  unable to open display ":0.0"
Run Code Online (Sandbox Code Playgroud)

Gil*_*il' 13

X 程序需要两条信息才能连接到 X 显示器。

  • 它需要显示的地址,通常是:0在您本地登录时或:10,:11等远程登录时(但数字可能会根据活动的 X 连接数而变化)。显示器的地址通常在DISPLAY环境变量中指示。

  • 它需要显示密码。X 显示密码称为魔术饼干。Magic cookie 没有直接指定:它们总是存储在 X 权限文件中,这些文件是“display :42has cookie 123456”形式的记录集合。X 权限文件通常在XAUTHORITY环境变量中指示。如果$XAUTHORITY未设置,程序将使用~/.Xauthority.

请参阅在远程 X 显示器上打开一个窗口(为什么“无法打开显示器”)?更多细节。

在您的情况下,DISPLAY已设置,但程序显然找不到 cookie 文件。检查XAUTHORITY会话中和下的值su

如果XAUTHORITY在您的会话没有设置和su设置HOME环境变量,以root用户的主目录,那么你需要设置XAUTHORITY/home/msz/.Xauthority哪里/home/msz是你的主目录。

如果从环境中su移除XAUTHORITY,要么将其放回原处,要么配置su为不执行此操作。

如果您的主目录位于某些文件系统(如 NFS)上,则 root 用户可能无法直接读取它。在这种情况下,您可以将.Xauthority文件复制到非 NFS 文件系统上的不同位置:

XAUTHORITY_COPY=$(umask 077; mktemp)
cat "${XAUTHORITY:-~/.Xauthority}" "$XAUTHORITY_COPY"
XAUTHORITY="$XAUTHORITY_COPY" su
rm "$XAUTHORITY_COPY"
unset XAUTHORITY_COPY
Run Code Online (Sandbox Code Playgroud)


X T*_*ian 6

您正在以 root 身份运行 xhost!

以普通用户身份运行 xhost xhost +,然后成为 root 然后再试一次。

顺便说一句,正如其他人指出的那样xhost +允许来自任何主机的任何用户