У меня на сервере настроен ssh, и иногда мне приходится запускать на нем какое-нибудь графическое приложение. Он отлично работает, когда я подключаюсь к -X
вариант. Я могу бегать, например google-chrome
. Однако, если я сменил пользователя на sudo -i -u other_user
, Я не могу запускать приложения с графическим интерфейсом от имени этого пользователя.
Я предполагаю, что это что-то с окружением и ДИСПЛЕЕМ, но не знаю, что делать. Я пытался добавить -E
, но затем я получил сообщение об ошибке, в котором говорилось, что я не могу использовать его с -i
. Как я могу запускать приложения с графическим интерфейсом через ssh от имени другого пользователя?
Самый простой способ - использовать ssh -X
для выполнения команд от имени другого пользователя. Но из-за этого приложения работают заметно медленнее, даже локально.
В -i
опция говорит sudo
для повторной инициализации среды. X приложениям требуется $DISPLAY
и (на некоторых настройках) $XAUTHORITY
, и может использовать другие переменные среды, такие как настройки локали. Попробуй без -i
, или если вы должны использовать -i
, бегать
sudo -i -u other_user \
env DISPLAY="$DISPLAY" XAUTHORITY="${XAUTHORITY-$HOME/.Xauthority}" \
xapplication
Даже если ты избавишься от -i
, возможно, вам придется поставить XAUTHORITY
явно: по умолчанию (если переменная не установлена) .Xauthority
в домашнем каталоге.
До сих пор я предполагал, что другой пользователь может прочитать ваш $XAUTHORITY
. Но этого не произойдет, если вы не сделаете это так (например, с setfacl -m user:other_user:r $XAUTHORITY
).
В качестве альтернативы, вместо того, чтобы позволить другому пользователю читать ваш $XAUTHORITY
, вы можете скопировать правильный файл cookie в другой файл, который пользователь сможет прочитать.
xauth extract -f - "$DISPLAY" |
sudo -u other_user xauth -f ~other_user/.Xauthority merge -
Обратите внимание, что разрешение доступа другого пользователя к вашему дисплею позволяет ему делать с ним практически все, включая отправку ложных нажатий клавиш приложениям. Так что, если вы меняли пользователей для изоляции, вы мало что получите.