Программе 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
export $(dbus-launch)
или использовать,xhost [+]
чтобы иметь возможность запускать программы с использованием X и вашей учетной записи суперпользователя.