Не удается подключиться к 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

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

Apurba
источник
Откуда ты бежишь 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 за добрую помощь

Apurba
источник
1
По умолчанию env_keep = "DISPLAY" работает для меня.
bagustris
Я искал все выше и ниже этот ответ навсегда. Хотелось бы, чтобы я несколько раз высказался за ваши ответы. Огромное спасибо! :)
Ев-
4

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

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

xhost local:root

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


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

adabru
источник
Спасибо за ответ на непостоянное решение.
2NinerRomeo