Не удается подключиться к X-серверу при запуске приложения с помощью sudo


29

Когда я запускаю какое-то программное обеспечение с помощью 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

Пожалуйста помоги.


Откуда ты бежишь super-boot-manger?
Тор

Сначала я попытался бежать super-boot-manager напрямую из Unity Luncher, это не сработало. Тогда я попробовал это из терминала, затем я получил те ошибки массажа.
Апурба

Как в терминале в графической среде пользователя? Что echo $DISPLAYговорит? Вы должны запустить его без , sudoкак super-boot-managerпрогоныsudo внутренне.
Тор

echo $DISPLAY дает :0.0 . И я не бегаю super-boot-managerкак sudo. Я бегу, просто используя команду super-boot-managerиз терминала.
Апурба

1
Наконец проблема решена. Я только что добавил строку: Defaults env_keep="DISPLAY XAUTHORITY"в конце visudo. Спасибо всем, особенно @Thor за любезную помощь.
Апурба

Ответы:


39

Вам необходимо разрешить доступ пользователя root к X-серверу:

xhost local:root

И направьте команду справа DISPLAY:

sudo DISPLAY=$DISPLAY gedit /etc/profile

Это решило проблему с открытием geditкак sudo, но все еще не может обедать super-boot-manager. Это показывает ту же ошибку
Апурба

15

Наконец проблема решена. Я только что добавил строку:

По умолчанию env_keep = "DISPLAY XAUTHORITY"

в конце visudo.

Для этого нужно бежать

судо визудо

он откроет файл, а затем добавит строку выше в конце.

Спасибо всем, особенно @Thor за добрую помощь


1
По умолчанию env_keep = "DISPLAY" работает для меня.
bagustris

Я искал все выше и ниже этот ответ навсегда. Хотелось бы, чтобы я несколько раз высказался за ваши ответы. Огромное спасибо! :)
Ев-

4

Дополнение ответа Тора:

Беги xhost local:rootраньше sudo gedit. Чтобы сделать это постоянным, добавьте строку

xhost local:root

в файл ~ / .xinitrc 1 . Создайте файл, если он не существует.


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


Спасибо за ответ на непостоянное решение.
2NinerRomeo
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.