Не удалось подключиться к Mir: Не удалось подключиться к сокету сервера: Нет такого файла или каталога

18

После входа в систему как другой пользователь, как я могу запускать программы с графическим интерфейсом?

thufir@doge:~$ 
thufir@doge:~$ sudo -u hawat -i
hawat@doge:~$ 
hawat@doge:~$ whoami
hawat
hawat@doge:~$ 
hawat@doge:~$ pwd
/home/hawat
hawat@doge:~$ 
hawat@doge:~$ echo $HOME
/home/hawat
hawat@doge:~$ 
hawat@doge:~$ firefox
No protocol specified
Failed to connect to Mir: Failed to connect to server socket: No such file or directory
Unable to init server: Could not connect: Connection refused
Error: cannot open display: :0
hawat@doge:~$ 
Суфир
источник

Ответы:

13

export DISPLAY=:0работал на меня. Убедитесь, что вы выполняете команду в системе подключения, а не в системе, к которой вы подключаетесь!

user2938093
источник
2
На машине, которую я использовал для подключения, а не на машине, к которой вы подключаетесь.
user2938093
аааа, это на одной коробке. разные счета.
Thufir
1
Не оказал никакого влияния на мой компьютер
ComputerScientist
не работа для меня. Я не знаю, почему это происходит со мной.
Чан Ким
6

Этот ответ работает на моих Ubuntu 16.04 и Mir (с небольшими изменениями):

Запустите команду x как другой пользователь, используя xauth

Скрипт оболочки для оболочки:

Для удобства я создал сценарий оболочки-оболочки , который вы можете загрузить /usr/local/bin/xsudoи пометить как исполняемый ( chmod +x /usr/local/bin/xsudo).

Тогда просто запустите:

xsudo hawat firefox

Потенциальные альтернативы:

  • Как гораздо более простая альтернатива, вы можете посмотреть pam_xauth(s. Этот ответ ), однако это почему-то не работает для меня. (Я все еще получаю сообщение об ошибке, что Firefox не может подключиться к дисплею по адресу: 0)
  • Во многих форумах вы можете увидеть команду xhost +local:или аналогичной, который будет делать gksudo -u hawat firefoxработу без обертки сценария. Однако имейте в виду, что это открывает лазейку в безопасности : любой активный пользователь на вашем локальном хосте сможет получить доступ к вашей клавиатуре, мыши, экрану и т. Д.
  • Раньше был sux , который по какой-то причине был прекращен - вы все равно можете его скачать и использовать. Насколько я могу судить, он сделал что-то похожее на мой сценарий только намного больше. К сожалению, я не смог выяснить, почему это больше не поддерживается. (Возможно, потому что теперь мы должны использовать вместо него pam_xauth - первый вариант)
lentschi
источник
3

Потратив слишком много времени на это, я обнаружил, что с Gnome в Ubuntu 16.04 правильное значение DISPLAY=:1не так, DISPLAY=:0как было с незапамятных времен.

Петр В. Мёрч
источник
1

export DISPLAY =: 0 работает нормально, но это временное решение, так как вам нужно вводить его каждый раз, когда вы открываете терминал.

Постоянное решение: проблема может быть связана с переменной env_keep в / etc / sudoers. Добавьте следующую строку в конец / etc / sudoers, используя gedit или sudo visudo.

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

Примечание. Не забывайте всегда использовать «+ =» при добавлении в env_keep. В случае, если есть какие-либо другие env_keep с "=", измените их на "+ =", потому что использование "=" переопределит другие значения.

Махеш Кумар
источник
К вашему сведению: имейте в виду, что вы не должны редактировать файл sudoers напрямую, а используете visudoоболочку, которая обеспечивает некоторую проверку работоспособности перед записью нового файла sudoers.
Габриэль Ярмарка