Для X программ нужны два сведения для соединения с X дисплеями.
Этому нужен адрес дисплея, который обычно является :0
когда Вы зарегистрированы локально или :10
, :11
, и т.д., когда Вы зарегистрированы удаленно (но число может измениться в зависимости от того, сколько X соединений активны). Адрес дисплея обычно обозначается в DISPLAY
переменная среды.
Этому нужен пароль для дисплея. X паролей дисплея называют волшебными cookie. Волшебные cookie не указаны непосредственно: они всегда хранятся в X авторитетных файлах, которые являются набором записей формы “дисплей :42
имеет cookie 123456
”. X авторитетных файлов обычно обозначаются в XAUTHORITY
переменная среды. Если $XAUTHORITY
не установлен, использование программ ~/.Xauthority
.
Посмотрите Открытый окно на удаленном X дисплеев (почему "Не может открыть дисплей")? для получения дополнительной информации.
В Вашем случае, DISPLAY
установлен, но программы очевидно не могут найти файл cookie. Проверьте значение XAUTHORITY
на Вашей сессии и под su
.
Если XAUTHORITY
не установлен на Вашей сессии и su
наборы HOME
переменная среды к корневому каталогу корня, затем необходимо установить XAUTHORITY
кому: /home/msz/.Xauthority
где /home/msz
Ваш корневой каталог.
Если su
удаляет XAUTHORITY
от среды, или отложенной это, или, настраивают su
не сделать это.
Если Ваш корневой каталог находится в некоторых файловых системах как NFS, корень не может читать его непосредственно. В этом случае можно скопировать .Xauthority
файл к другому местоположению в файловой системе не-NFS:
XAUTHORITY_COPY=$(umask 077; mktemp)
cat "${XAUTHORITY:-~/.Xauthority}" "$XAUTHORITY_COPY"
XAUTHORITY="$XAUTHORITY_COPY" su
rm "$XAUTHORITY_COPY"
unset XAUTHORITY_COPY
Вы можете использовать Inventory_HostName
Волшебные переменные в этом случае.
{
"atlanta" : {
"hosts" : [ "host1", "host4", "host5" ],
"vars" : {
"ansible_ssh_host" : "{{inventory_hostname}}.example.com",
"b" : false
}
}