使用 `su` 切换到另一个用户后无法从命令行打开 gedit(或 Firefox 等):“错误:无法打开显示::0.0”

使用 `su` 切换到另一个用户后无法从命令行打开 gedit(或 Firefox 等):“错误:无法打开显示::0.0”

刚刚从笔记本电脑上的 Ubuntu 用户管理窗口创建了一个用户。确认/home/newuser目录已创建。

于是我打开一个终端窗口,su进入新的用户帐户,一切正常。当我尝试打开 pluma、gedit、firefox 或任何 X 应用程序时,我得到:

Error: cannot open display: :0.0

同一台笔记本电脑上的其他用户帐户可以通过命令行打开这些相同的应用程序。但这个新创建的帐户不行(从用户管理 GUI 使用默认值)。

是什么赋予了?

答案1

背景

“su'd 用户”的图形无法工作,因为其他用户无权在您的桌面环境中写入(打开窗口)。如果您注销并以该用户身份登录,或者使用某种特殊工具(如steeldriver 建议的),图形就可以工作。

轻量级解决方案是使用xhostgksu,但可能仍然存在一些问题,因为您[尝试]在您不应该写的地方写入。

在同一台计算机中使用 ssh 服务器ssh -X是“过度的”,并且会增加不必要的开销,但是如果您想偶尔这样运行,则可以使用它(特别是如果您已经为其他目的安装了 ssh 服务器)。它ssh -X可以非常可靠地与大多数 GUI 程序一起工作。

xhost 和 gksu

可以使用 和 以另一个用户的身份运行图形程序xhostgksu使用 非常重要,gksu以避免用其他用户的配置文件覆盖您的配置文件。这会给您以自己的用户身份运行相同的 GUI 程序带来问题,就像您使用 运行 GUI 程序时遇到的问题一样sudo。换句话说,使用gksugksudo运行 GUI 程序。

该字符后的文本#是注释,未使用。

在标准 Ubuntu 的新版本中,你必须安装gksu

sudo add-apt repository universe  # at least in live and persistent live systems
sudo apt-get update
sudo apt-get install gksu

准备xhost

xhost local:other-user           # general
xhost local:sudodus              # example, use the actual user ID

现在它应该可以以gksu其他用户身份运行程序了

gksu -w -u other-user gedit file-to-edit   # general
pwd > i-am-here                            # only to show 'where you are'
gksu -w -u sudodus gedit i-am-here         # example

我注意到的当前目录gedit将是原始用户的目录。而其他用户不应该在那里写入。换句话说,最好使用要编辑的文件的完整路径,或者使用例如

gksu -w -u sudodus gedit /home/sudodus/file-to-edit  # example

当你进行简单文本模式时su

su - other-user                  # general
su - sudodus                     # example

当前目录将成为另一个用户的主目录。

更多详细信息请参阅 Eliah Kagan 在此链接处的回答

askubuntu.com/questions/168815/how-to-get-graphical-display-when-executing-commands-as-another-user...

寻找以其他用户身份直接运行图形命令

SSH-X

ssh(仅限文本)和ssh -X(也包括图形)用于登录到另一台计算机,但是如果您安装了 ssh 服务器,也可以在本地使用,例如

sudo apt-get install openssh-server

我可以这样登录

$ ssh -X [email protected]
The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established.
ECDSA key fingerprint is SHA256:XZBdC58tpt8ud63Z7DfZRX9DYp4xPq6uh0aI07fLlqg.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '127.0.0.1' (ECDSA) to the list of known hosts.
[email protected]'s password: 
Welcome to Ubuntu 16.04.2 LTS (GNU/Linux 4.4.0-64-generic i686)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

9 paket kan uppdateras.
0 uppdateringar är säkerhetsuppdateringar.

Last login: Tue Feb 14 13:51:52 2017 from 192.168.0.2
sudodus@xenial32 ~ $ 

现在,如果我启动firefox,它就会工作。一些图形程序可能无法工作,但大多数程序都是这样工作的。请参阅以下链接

help.ubuntu.com/14.04/serverguide/openssh-server.html

askubuntu.com/questions/886313/what-is-the-simplest-way-to-have-remote-gui-access ...

相关内容