Параметр «--up» в OpenVPN обычно используется для маршрутизации и т. Д. И поэтому он обрабатывается до того, как OpenVPN отбрасывает привилегии root для запуска как никто. Тем не менее, я вызываю сценарии оболочки, которые должны запускаться как непривилегированный пользователь.
Как мне это сделать? Я изучил привилегии Drop Process , особенно ответы полинома и Тайлера, но я не понимаю, как это реализовать. Я работаю в Centos 6.5, и suid заблокирован как chmod u + s, так и setuid ().
Существует плагин OpenVPN ("openvpn-down-root.so"), который позволяет сценариям, вызываемым опцией "--down", запускаться от имени пользователя root. Может быть эквивалент, такой как "openvpn-up-user.so", но я не нашел его.
Edit0
Согласно ответу Николы Котура, я установил run-rpm Яна Мейера . Хотя команда chpst работает в терминале, в сценарии up она завершается с ошибкой «команда не найдена». Что работает, так это «sudo chpst» плюс установка правильного отображения и языка. Посмотрите, почему мой терминал не выводит символы Юникода должным образом? Учитывая это, сценарию up нужны эти четыре строки:
LANG="en_US.UTF-8"; export LANG
GDM_LANG="en_US.UTF-8"; export GDM_LANG
DISPLAY=:0; export DISPLAY
sudo chpst -u user -U user /home/user/unprivileged.sh &
Edit1
Согласно комментарию 0xC0000022L, я обнаружил, что «sudo -u user» работает так же, как «sudo chpst -u user -U user»:
LANG="en_US.UTF-8"; export LANG
GDM_LANG="en_US.UTF-8"; export GDM_LANG
DISPLAY=:0; export DISPLAY
sudo -u user /home/user/unprivileged.sh &
Я буду изучать человека sudoers и сообщу, если / когда я получу sudo на работу один.