无法连接到 Mir:无法连接到服务器套接字:没有此类文件或目录

Thu*_*fir 18 gui sudo users user-management mir

以其他用户身份登录后,如何运行 GUI 程序?

thufir@doge:~$ 
thufir@doge:~$ sudo -u hawat -i
hawat@doge:~$ 
hawat@doge:~$ whoami
hawat
hawat@doge:~$ 
hawat@doge:~$ pwd
/home/hawat
hawat@doge:~$ 
hawat@doge:~$ echo $HOME
/home/hawat
hawat@doge:~$ 
hawat@doge:~$ firefox
No protocol specified
Failed to connect to Mir: Failed to connect to server socket: No such file or directory
Unable to init server: Could not connect: Connection refused
Error: cannot open display: :0
hawat@doge:~$ 
Run Code Online (Sandbox Code Playgroud)

bga*_*498 14

export DISPLAY=:0为我工作。确保您在连接的系统上执行命令,而不是在您要连接的系统上!

  • 在我用来连接的机器上,而不是您要连接的机器上。 (2认同)

小智 6

这个答案适用于我的 Ubuntu 16.04 和 Mir(稍作修改):

使用 xauth 以另一个用户身份运行 x 命令

包装 bash 脚本:

为方便起见,我创建了一个包装 bash 脚本,您可能希望将其下载/usr/local/bin/xsudo并标记为可执行文件 ( chmod +x /usr/local/bin/xsudo)。

然后只需运行:

xsudo hawat firefox
Run Code Online (Sandbox Code Playgroud)

潜在的选择:

  • 作为一个更简单的替代方案,您可能会研究pam_xauth(s. this answer)但是由于某种原因这对我不起作用。(我仍然收到有关 Firefox 无法连接到显示器的错误:0)
  • 在很多论坛上,你可能会看到命令xhost +local:或类似的,这使得gksudo -u hawat firefox工作没有任何包装脚本。但是请注意,这会打开一个安全漏洞:本地主机上的任何活动用户都可以访问您的键盘、鼠标、屏幕等。
  • 曾经有sux,由于某种原因已停止使用 - 不过您可能仍然可以下载和使用它。据我所知,它和我的脚本做了很多类似的事情。不幸的是,我找不到,为什么不再维护它。(也许是因为我们现在应该改用 pam_xauth - s. 第一个选择)