GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo eliminar los privilegios de raíz en los scripts de Shell?

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

Linux
  1. Cómo personalizar los entornos de usuario de Linux

  2. Cómo deshabilitar el inicio de sesión del usuario raíz a través de SSH

  3. ¿Cómo probar el cumplimiento de Posix de los scripts de Shell?

  4. Cómo ejecutar scripts de Python desde shell

  5. Cómo hacer eco de una nueva línea en Bash Shell Scripts

Cómo enumerar todos los usuarios en Linux

Cómo verificar los privilegios de usuario de MySQL en Linux

¿Cómo iniciar sesión como raíz en Mysql?

¿Cómo usar if-else en Shell Scripts?

Cómo limitar el usuario root en CentOS

¿Cómo habilitar el usuario raíz en Ubuntu Server?