Я пытаюсь запустить nautilus от имени пользователя root, но когда я запускаю «sudo nautilus» из терминала, я получаю следующую ошибку:
ошибка: XDG_RUNTIME_DIR не установлена в среде.
(nautilus: 9341): Gtk-WARNING **: невозможно открыть дисплей:
Проблема не возникает, когда я пытаюсь запустить nautilus без полномочий root. Я использую Ubuntu 14.04. Кто-нибудь знает, как я могу это исправить?
Когда вы запускаете программное обеспечение от имени другого пользователя, вы фактически запускаете новую минимальную и изолированную среду, которая не поддерживает некоторые "избыточные" переменные (среди прочих файлы, отвечающие за внедрение библиотек или установку определенных привилегий). Замените ваш вызов sudo nautilus
следующим - он сохранит пользовательские настройки x-сервера из текущего сеанса:
pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY nautilus
Это одноразовое низкоуровневое решение, но оно будет работать на неправильно настроенной машине. Если вы хотите навсегда «исправить ваше sudo
», вам необходимо найти проблему с конфигурацией вашей среды и исправить ее, как описано в других ответах.
У меня также была такая же проблема в Ubuntu 14.04. Откройте терминал, нажав,
Ctrl + Alt + T
затем sudo visudo
изменить строку
По умолчанию env_keep = "https_proxy"
на
Значения по умолчанию env_keep + = "https_proxy"
Это сработало отлично.
Чтобы упростить - подробнее объясняется новая загрузка моей системы.
После всех объяснений я пришел к результату - и "env" в терминале уже сказал, что подходит для этих сеанс:
Эти две строки для использования переменной среды:
для поведения tmp, которое я выбрал:
mkdir -pv ~ / .cache / xdgr
Для установки переменной среды:
экспорт XDG_RUNTIME_DIR = $ PATH: ~ / .cache / xdgr
После закрытия терминала и нового открытия для отзыва env они сообщают:
XDG_RUNTIME_DIR = / run / user / 1001
примечание: это нормально для пользователю под ubuntu, root нужно больше (последняя информация по сроку - с разрешениями 0700)
Если вы получаете эту ошибку в Docker; это то, что я делаю
# sudo xhost +
access control disabled, clients can connect from any host
# export DISPLAY=:0.0
# docker run -it --env DISPLAY=unix$DISPLAY --privileged --volume /tmp/.X11-unix:/tmp/.X11-unix .. rest of your Docker arugments