В обычной среде Linux X-сервер использует протокол MIT-MAGIC-COOKIE-1 для авторизации доступа к дисплею. Любой пользователь, который хочет получить доступ к дисплею, должен иметь правильный файл cookie (обычно хранится в ~/.Xauthority file). Обычно cookie генерируется диспетчером отображения (экран входа в систему). Если вы запускаете X-сервер из своих пользовательских сценариев, вы должны сами сгенерировать cookie-файл, сохранить его в авторитетном файле и сообщить серверу об этом файле.
Вы можете использовать команду mcookie
чтобы сгенерировать cookie и добавить его в файл полномочий с помощью xauth
:
# touch /home/staff/.Xauthority
# xauth -f /home/staff/.Xauthority add :0 . $(mcookie)
Prameter -f /home/staff/.Xauthority
указывает xauth
использовать файл авторизации штатного пользователя. :0
это отображаемое имя. Точка (.
) Указывает протокол MIT-MAGIC-COOKIE-1. mcookie
из пакета util-linux .
Теперь, если вы выполните:
# xauth -f /home/staff/.Xauthority list
вы должны увидеть что-то вроде:
server/unix:0 MIT-MAGIC-COOKIE-1 c61bdc0b88cf0cb376e1b29647a8c4d6
Когда вы входите в систему как штатный пользователь, вы должны увидеть тот же вывод без параметра -f:
$ xauth list
server/unix:0 MIT-MAGIC-COOKIE-1 c61bdc0b88cf0cb376e1b29647a8c4d6
Если нет, проверьте, что переменная среды XAUTHORITY
либо не определена, либо имеет значение "/home/staff/.Xauthority».
Запустите X-сервер с параметром -auth
:
# X -auth /home/staff/.Xauthority
Теперь пользователь может получить доступ персонала на :0
Осталось только установить переменную окружения DISPLAY
- это можно сделать с помощью параметра sudo
. Поэтому, когда вы подключаетесь к серверу по ssh и выполняете команду, которая показывает изображение как штатный пользователь, оно должно отображаться. Используя ImageMagick, как было предложено Л. Леврелом, команда будет выглядеть так:
# ssh server sudo -u staff DISPLAY=:0 display -window root /path/to/image.png
Обратите внимание, что вы не должны использовать персонал пользователя. Вы можете создать файл полномочий в общем месте (например, /var /tmp /xauthority) и установить переменную окружения XAUTHORITY
для Алисы и Боба по этому пути.
Другой альтернативой является "распространение" куки-файла в файлы авторизации Алисы и Боба (на самом деле это похоже на то, что делают менеджеры дисплея):
# xauth -f /var/tmp/xauthority extract - :0 | xauth -f /home/alice/.Xauthority merge
# xauth -f /var/tmp/xauthority extract - :0 | xauth -f /home/bob/.Xauthority merge
Таким образом, Алисе и Бобу не нужно использовать sudo staff
для доступа к дисплею.
Обратите внимание: если у вас запущено больше серверов X, вы должны использовать другое отображаемое имя, отличное от :0
в приведенных выше командах (например :1
:2
и т.д.).