A opção "--up" no OpenVPN é normalmente usada para roteamento etc. E, portanto, é processada antes que o OpenVPN descarte os privilégios de root para executar como ninguém. No entanto, estou invocando scripts de shell que precisam executar como um usuário não privilegiado.
Como faço isso? Estudei privilégios de processo de entrega, especialmente as respostas de polinômios e de tylerl, mas não entendo como implementar. Estou trabalhando no Centos 6.5 e suid está bloqueado, como "chmod u + s" e como "setuid ()".
Existe um plugin OpenVPN ("openvpn-down-root.so") que permite que scripts chamados pela opção "--down" sejam executados como raiz. Pode haver um equivalente, como "openvpn-up-user.so", mas eu não o encontrei.
Editar0
De acordo com a resposta de Nikola Kotur, instalei o runit-rpm de Ian Meyer . Embora o comando chpst funcione no terminal, no script up ele falha com "comando não encontrado". O que funciona é "sudo chpst" mais a configuração da tela e do idioma adequados. Consulte Por que meu terminal não gera caracteres unicode corretamente? Dado isso, o script up precisa dessas quatro linhas:
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
Pelo comentário de 0xC0000022L, acho que "sudo -u user" funciona tão bem quanto "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 &
Vou estudar sudoers para homens e atualizar se / quando eu tiver o sudo sozinho para trabalhar.