La opción “–up” en OpenVPN se usa normalmente para el enrutamiento, etc. Y, por lo tanto, se procesa antes de que OpenVPN elimine los privilegios de root para ejecutarse como nadie. Sin embargo, invoco secuencias de comandos de shell que deben ejecutarse como un usuario sin privilegios.
¿Cómo puedo hacer eso? He estudiado los privilegios del proceso de eliminación, especialmente las respuestas de polinomio y tylerl, pero no entiendo cómo implementar. Estoy trabajando en Centos 6.5 y suid está bloqueado, tanto como "chmod u+s" como "setuid()".
Hay un complemento de 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, instalé 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 correctamente los caracteres Unicode? 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é a man sudoers y actualizaré si/cuando consigo sudo solo para trabajar.
Respuesta aceptada:
Yo uso chpst
de runit herramienta para tareas como esta. Por ejemplo, desde la secuencia de comandos superior llame a su secuencia de comandos sin privilegios:
chpst -u nobody /path/to/script