Не вдалося підключитися до Mir: Не вдалося підключитися до серверної розетки: Немає такого файлу чи каталогу


18

Як увійти як інший користувач, як запустити програми GUI?

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працював на мене. Переконайтеся, що ви виконуєте команду в системі підключення, а не в системі, до якої ви підключаєтесь!


2
На машині, яку я використовував для підключення, а не на машині, до якої ви підключаєтесь.
користувач2938093

ах, це на тій же коробці. різні рахунки.
Туфір

1
Не вплинуло на мій комп'ютер
ComputerScientist

не працює для мене. Я не знаю, чому це відбувається зі мною.
Чан Кім

6

Ця відповідь працює на моїх Ubuntu 16.04 та Mir (з незначними адаптаціями):

Запустіть команду x як інший користувач, використовуючи xauth

Сценарій башмаку Wrapper:

Для зручності я створив скрипт bash bash , який, можливо, захочете завантажити /usr/local/bin/xsudoта позначити виконуваним файлом ( chmod +x /usr/local/bin/xsudo).

Потім просто запустіть:

xsudo hawat firefox

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

  • Як набагато простішу альтернативу, ви можете розглянути pam_xauth(с. Цю відповідь ), однак це чомусь не працює для мене. (Я все ще отримую помилку про те, що Firefox не може підключитися до дисплея за адресою: 0)
  • У багатьох форумах ви можете побачити команду xhost +local:або аналогічної, який буде робити gksudo -u hawat firefoxроботу без обгортки сценарію. Однак майте на увазі, що це відкриває лазівку безпеки : будь-який активний користувач у вашому локальному хості зможе отримати доступ до вашої клавіатури, миші, екрана тощо.
  • Раніше був sux , який з певних причин було припинено - ви все ще можете завантажити та використовувати його. Наскільки я можу сказати, він зробив щось подібне до мого сценарію лише набагато більше. На жаль, я не зміг дізнатися, чому це більше не підтримується. (Можливо, тому, що тепер нам слід використовувати пам_xauth - першу альтернативу)

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 з "=", змініть їх на "+ =", оскільки використання "=" замінить інші значення.


FYI: майте на увазі, що ви не повинні редагувати файл sudoers безпосередньо, а використовуючи visudoобгортку, яка забезпечує певну перевірку здоровості перед тим, як писати новий файл sudoers.
Габріель Ярмарок
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.