В работе системного администратора иногда возникает необходимость выполнения команды от имени другого пользователя. Если доступна консольная версия команды, то проблем обычно не возникает, помогает команда su, но если консольной версии программы нет, возникают некоторые проблемы с невозможностью вывести графическое содержимое на удалённом компьютере. Можно использовать тот же VNC для подключения к удалённому рабочему столу, но если не хочется прерывать работы пользователя на помощь может придти X-forwarding.Данная технология позволяет перенаправить вывод X-сервера (или отдельной программы) через тоннель (например SSH) на удалённый компьютер.
Итак, перед нами стоит задача запустить определённую программу от имени другого пользователя на удалённом компьютере. На самом деле проблема всего одна. X-сервер не может авторизоваться из-за неверного ключа другого пользователя. Соответственно наша задача сводится к добавлению этого ключа.
Добавляем свой ключ к пользователю от которого хотим выполнить приложение:
sudo sh -c "cat /home/user/.Xauthority >> /home/user2/.Xauthority"
Теперь осталось просто выполнить команду от имени другого пользователя. В качестве примера, запустим утилиту настройки встроенного в среду GNOME VNC-клиента Vino:
sudo -u user2 vino-preferences
Осталось добавить только то, что user - это наш пользователь, а user2 - пользователь от которого необходимо выполнить программу.
Если пароль пользователя известен, но все гораздо проще, для запуска достаточно выполнить:
ssh -X user2@host2 vino-preferences
URL: http://xand.net.ru/linux/stati-linux/x-forwarding-prilozheni.../
Обсуждается: http://www.opennet.dev/tips/info/2352.shtml