La opción "--up" en OpenVPN se usa normalmente para enrutamiento, etc. Y, por lo tanto, se procesa antes de que OpenVPN elimine los privilegios de root para ejecutarse como nadie. Sin embargo, estoy invocando scripts de shell que deben ejecutarse como un usuario sin privilegios.
¿Cómo puedo hacer eso? He estudiado los privilegios del proceso de caída , especialmente las respuestas de polinomios y tylerl, pero no entiendo cómo implementarlas. Estoy trabajando en Centos 6.5, y suid está bloqueado, tanto como "chmod u + s" como "setuid ()".
Hay un complemento OpenVPN ("openvpn-down-root.so") que permite que los scripts invocados por la opción "--down" se ejecuten como root. Podría haber un equivalente, como "openvpn-up-user.so", pero no lo he encontrado.
Editar0
Según la respuesta de Nikola Kotur, he instalado las runit-rpm de Ian Meyer . Aunque el comando chpst funciona en la terminal, en el script up falla con "comando no encontrado". Lo que funciona es "sudo chpst" además de configurar la pantalla y el idioma adecuados. Consulte ¿ Por qué mi terminal no genera caracteres Unicode correctamente? Dado eso, el script up necesita estas cuatro líneas:
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 &
Editar1
Según el comentario de 0xC0000022L, encuentro que "sudo -u user" funciona tan bien como "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 &
Estudiaré sudoers de hombre y actualizaré si / cuando consigo sudo solo para trabajar.