3

Я не мог получить программу, требующую x11 (например, gedit, nautilus) для работы с sudo. Использование gksudo будет просто молча, в то время как на терминале я получил следующую ошибку:

sudo nautilus

** (nautilus:4160): WARNING **: Command line `dbus-launch --autolaunch=cced40b4aa1d252bc89d3a6a0000000a --binary-syntax --close-stderr' exited with non-zero exit status 1: Autolaunch error: X11 initialization failed.\n
Could not parse arguments: Cannot open display: 

С помощью друга мне удалось найти обходной путь: если я запускаю xhost + как непривилегированный пользователь и затем export DISPLAY=:0 как root после sudo su , он, наконец, работает (без шага xhost я получил бы неопределенный ошибка протокола). Однако я не понимаю, почему у меня эта проблема, во-первых, и это трудоемкий обходной путь - я подумал о добавлении `export DISPLAY =: 0" в корневой каталог .bashrc, но это вызывается только если я подаю в суд, если я просто sudo.

Есть идеи как правильно решить эту проблему?

2 ответа2

1

В общем, не забудьте указать свою ОС (я думаю, вы работаете в Linux) и дистрибутив.

По умолчанию X-сервер не позволяет другим пользователям (например, root в вашем случае) подключаться к существующему X-экземпляру. Это может быть отменено с помощью команды xhost + , после чего root может подключиться к существующему сеансу X.

Экспорт DISPLAY не должен быть необходим, вы уверены, что это было? Вы должны быть в порядке, просто запустив xhost + а затем sudo gedit или что-то еще. Если это так (и вы не возражаете против небольшого риска для безопасности), вы можете добавить xhost + в ~/.bashrc .


В качестве ужасного обходного пути вы можете запустить sudo указав переменную $DISPLAY :

sudo DISPLAY=:0 gedit

Для автоматизации вы можете добавить эти строки в ваш ~/.bashrc:

xhost + 
alias sudo='sudo DISPLAY=:0'

Хотя это ужасный хак, и я хотел бы знать, как вам удалось попасть в ситуацию, когда это необходимо :). Как я уже говорил в моем комментарии выше, это действительно должно работать из коробки на Ubuntu (и на большинстве других современных настольных Linux-систем). Мне в последний раз приходилось возиться с xhost и DISPLAY, когда я работал с RedHat около 10 лет назад ...

0

Вместо этого я использую gksu , он заботится о безопасной пересылке xauth

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .