У меня есть служба, работающая от имени пользователя root в системе linux, которая запускается через systemd. Этот сервис в какой-то момент может вызвать GUI в текущей среде входа пользователя (я получаю значения Display и Xauth из Logind через DBUS). Запуск графического интерфейса работает, но среда не работает.
В настоящее время графический интерфейс запускается через fork
и execvp
. Перед вызовом execvp
привилегии сбрасываются с помощью setuid
и setgid
.
Каким будет правильный способ запуска процесса с правильными переменными среды? В настоящее время при попытке использовать, например, policykit
из приложения, я получаю сообщение об ошибке, что текущий /dev/tty
не может быть найден и т. Д.
Уместно ли использовать su -l
? Или есть другие способы запустить процесс от имени другого пользователя?