当我在线时,出现以下错误并且该工具无法启动:
[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 :42
has 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)
您正在以 root 身份运行 xhost!
以普通用户身份运行 xhost xhost +
,然后成为 root 然后再试一次。
顺便说一句,正如其他人指出的那样xhost +
允许来自任何主机的任何用户