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

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

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

cannot connect to X server

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

$ sudo gedit /etc/profile

我收到以下命令

(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.

或者如果我正在运行super-boot-manager我收到以下错误

buc: cannot connect to X server

请帮忙。

答案1

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

xhost local:root

并将命令指向右侧DISPLAY

sudo DISPLAY=$DISPLAY gedit /etc/profile

答案2

问题终于解决了。我刚刚添加了这一行:

Defaults env_keep="DISPLAY XAUTHORITY"

在......的最后visudo

为此,您必须运行:

sudo visudo

它将打开该文件,然后在末尾添加上述行。

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

答案3

补充@Thor 的回答, 跑步:

xhost local:root

之前sudo gedit。要使此设置永久生效,请添加以下行

xhost local:root

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


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

答案4

在运行脚本之前设置DISPLAYXAUTHORITY改变环境。例如在systemctl服务文件中:

[Unit]
Description=Start Clock

[Service]
Environment=DISPLAY=:0
Environment=XAUTHORITY=/home/pi/.Xauthority
ExecStart=/usr/bin/python3 /home/pi/clock.py
Restart=always
RestartSec=10s
KillMode=process
TimeoutSec=infinity

[Install]
WantedBy=graphical.target

相关内容