无法以其他用户身份打开 xterm : Xt 错误: 无法打开显示: :0

无法以其他用户身份打开 xterm : Xt 错误: 无法打开显示: :0

我正在尝试以另一个用户身份打开 xterm :

$ su - michel 
$ xterm
No protocol specified
xterm: Xt error: Can't open display: :0
$ exit
$ sudo su - michel 
$ xterm
No protocol specified
xterm: Xt error: Can't open display: :0

答案1

当您执行以下操作时su,它会丢弃DISPLAY环境变量(用于告诉终端在哪里显示其窗口)。如果你设置DISPLAY,你会遇到一个不同的问题(本质上权限)已被多次询问,例如,。X 当 DISPLAY 变量正确时“无法打开显示::0”(请注意,其中一个被错误地标记为另一个相关问题的重复项)。

答案2

如果您可以使用它本身,那么使用sudo后跟是没有意义的。susu

问题是其他使用者不允许使用$DISPLAY.您不希望任意用户连接到您的显示器。如果您确实希望允许其他用户连接到您的显示器,您还必须授予他们访问您的$XAUTHORITY文件的权限。通常,您的$XAUTHORITY文件不包含多个显示器的信息,因此您只需使目标用户可以访问文件内容或复制文件即可。

您还可以提取信息并将其合并到目标用户的$XAUTHORITY文件中。 @mosvy 的评论表明ssh,但su也有效。

xauth extract - $DISPLAY | su sebastien -c 'xauth merge - <&7' 7<&0 </dev/tty

答案3

我终于遇到了这个命令,现在它可以工作了:

$ xhost local:$USER
non-network local connections being added to access control list
$ sudo su - michel -c "xterm -e 'sleep 1'"
$

答案4

我几乎尝试了所有类似问题的所有解决方案。它们都不起作用。不过,我找到了一个解决方案这里(中文)解决了。

您只需删除~/.Xauthority并重新启动 shell 即可。

重新登录后一切正常。

相关内容