Не удается подключиться к X-серверу: 0.0 как суперпользователь

10

Когда я в сети, я получаю следующую ошибку, и инструмент не запускается:

[root@dhcppc9 lin64]# ./ise
No protocol specified
_pn: cannot connect to X server :0.0

Но все в порядке, когда я не являюсь суперпользователем. Почему так?

редактировать

[root@dhcppc9 lin64]# export $(dbus-launch)
No protocol specified

любое предложение?

Также

[root@dhcppc9 lin64]# xhost [+]
No protocol specified
xhost:  unable to open display ":0.0"
МСЗ
источник
Это классика. Вы можете сделать export $(dbus-launch)или использовать, xhost [+]чтобы иметь возможность запускать программы с использованием X и вашей учетной записи суперпользователя.
41754
Сделал и то, и другое, см.
Правку
Это может быть, $ xhostчтобы увидеть текущий доступ и $ xhost +разрешить доступ с любого хоста. Вы часто делаете это с виртуального терминала, который, как вы знаете, может порождать программы с использованием X.
41754
@galegosimpatico: почему запуск сервера dbus решил эту проблему?
Bananguin
Когда вы не суперпользователь, что echo $DISPLAYпоказывает? К какому пользователю относится процесс xserver, который вы хотите использовать? (Вы можете узнать последнее, используя, например ps faux)
Bananguin

Ответы:

12

Программе X требуется две части информации для подключения к дисплею X.

  • Требуется адрес дисплея, который обычно отображается :0при локальном входе в систему или :10, :11и т. Д. При удаленном входе в систему (но число может меняться в зависимости от того, сколько активных X-соединений). Адрес дисплея обычно указывается в DISPLAYпеременной окружения.

  • Требуется пароль для отображения. Пароли X-дисплея называются волшебными куки . Магические куки не указываются напрямую: они всегда хранятся в X авторитетных файлах, которые представляют собой набор записей вида «на дисплее :42есть куки 123456». Файл полномочий X обычно указывается в XAUTHORITYпеременной среды. Если $XAUTHORITYне установлено, программы используют ~/.Xauthority.

См. Открытие окна на удаленном дисплее X (почему «Не удается открыть дисплей»)? Больше подробностей.

В вашем случае DISPLAYустановлено, но программы, очевидно, не могут найти файл cookie. Проверьте значение XAUTHORITYв вашей сессии и под su.

Если XAUTHORITYне установлен в сеансе и suустанавливает HOMEпеременные окружения в домашнем каталог суперпользователя, то вам нужно установить , XAUTHORITYчтобы /home/msz/.Xauthorityгде /home/mszваш домашний каталог.

Если suудалить XAUTHORITYиз среды, либо положить его обратно, либо настроить, suчтобы не делать этого.

Если ваш домашний каталог находится в некоторых файловых системах, таких как NFS, root может не прочитать его напрямую. В этом случае вы можете скопировать .Xauthorityфайл в другое место в файловой системе, отличной от NFS:

XAUTHORITY_COPY=$(umask 077; mktemp)
cat "${XAUTHORITY:-~/.Xauthority}" "$XAUTHORITY_COPY"
XAUTHORITY="$XAUTHORITY_COPY" su
rm "$XAUTHORITY_COPY"
unset XAUTHORITY_COPY
Жиль "ТАК - перестань быть злым"
источник
1
Я создал символическую ссылку, и это сработало. Вот оно:ln -s /home/otheruser/.Xauthority ~
Может Гелиш
XAUTHORITY для меня был задан как файл, которого больше не было:
pbhj
5

Вы запускаете xhost от имени root!

запустите xhost от имени обычного пользователя xhost +, затем войдите в систему как root и попробуйте снова.

Кстати, как отмечали другие, xhost +разрешает любому пользователю с любого хоста

X Тянь
источник
Многие современные системы настроены так, что xhostне работают. Если это так, то хотя бы беги xhost +localhost, нет xhost +!
Жиль "ТАК - перестать быть злым"
Поймите, это хороший момент. Спасибо за ваш совет.
X Tian
Это была моя проблема! Спасибо, все решено! Я просто запустил его без полномочий root.
Quidam
0

XAUTHORITY для меня был задан как файл, которого больше не было:

$ echo $XAUTHORITY

/tmp/xauth-1000-_0

Так я и сделал

unset XAUTHORITY

и затем смог подключиться к моему приложению как root с помощью kdesudo (в этом случае kdesudo bleachbit)

pbhj
источник
0

Запустите как обычный пользователь

xhost + localhost

затем включите супер пользователя с помощью

sudo su 

наконец перейти к примеру с сервером

cd /usr/local/Ampps

наконец запустить ./Ampps

спасибо мне в 2020

Мистер мэш
источник