使用 sudo 运行应用程序时无法连接到 X 服务器

Apu*_*rba 35 display sudo xserver

当我使用sudo命令运行某些软件时,它显示如下错误

cannot connect to X server
Run Code Online (Sandbox Code Playgroud)

例如,如果我运行以下命令:

$ sudo gedit /etc/profile
Run Code Online (Sandbox Code Playgroud)

我收到以下命令

(gedit:6758): WARNING **: Command line `dbus-launch --autolaunch=84b871d735f31ffe014dc9ba00000009 --binary-syntax --close-stderr' 
exited with non-zero exit status 1: 
Autolaunch error: X11 initialization failed. 
Cannot open display:
Run 'gedit --help' to see a full list of available command line options.
Run Code Online (Sandbox Code Playgroud)

或者,如果我正在运行,则会super-boot-manager出现以下错误

buc: cannot connect to X server
Run Code Online (Sandbox Code Playgroud)

请帮忙。

Tho*_*hor 50

您需要允许 root 用户访问 X 服务器:

xhost local:root
Run Code Online (Sandbox Code Playgroud)

并将命令指向右侧DISPLAY

sudo DISPLAY=$DISPLAY gedit /etc/profile
Run Code Online (Sandbox Code Playgroud)


Apu*_*rba 18

终于问题解决了。我刚刚添加了以下行:

默认值 env_keep="DISPLAY XAUTHORITY"

visudo.

要做到这一点,你必须运行

须藤

它将打开文件,然后在最后添加上面的行。

感谢所有人,特别是@Thor 的帮助

  • 默认值 env_keep="DISPLAY" 对我有用。 (2认同)

小智 5

补充@Thor 的回答:

xhost local:root之前运行sudo gedit。要使其永久化,请添加行

xhost local:root
Run Code Online (Sandbox Code Playgroud)

到文件 ~/.xinitrc 1。如果文件不存在,则创建该文件。


[1] https://askubuntu.com/a/720120/452398