В обычной среде 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 и т.д.).