No se pueden ejecutar comandos raíz dentro de un script openvpn

No se pueden ejecutar comandos raíz dentro de un script openvpn

Estoy usando la opción client-connect de openvpn para ejecutar un script cuando un cliente se conecta.

El script funciona bien cuando uso comandos simples, pero cuando agrego comandos que necesitan privilegios de root, no funciona y los clientes no pueden conectarse al servidor VPN.

Por ejemplo, aquí hay algunos comandos que intento ejecutar:

bgpctl reload y

route add -net $ifconfig_pool_remote_ip/30 -interface $dev -static.

Los comandos están probados y funcionan correctamente. Estoy usando freeBSD.

¿Alguna idea de cómo solucionar el problema?

¡Gracias!

Actualizar

En realidad no hubo ningún problema de privilegios. El script no pudo ejecutar los comandos bgpctly routeno pudo reconocerlos.

Podría solucionar el problema especificando la ruta completa a los comandos:

/usr/local/sbin/bgpctl reload

/sbin/route add -net $ifconfig_pool_remote_ip/30 -interface $dev -static

Ahora funciona.

Gracias roaima.

Respuesta1

El --client-connectscript se ejecuta como el usuario OpenVPN sin privilegios especificado por el --userparámetro.

Puede verificar esto agregando estas líneas en la parte superior de su --client-connectarchivo y revisando el resultado escrito /tmp/ov.logdespués de una conexión exitosa.

#!/bin/bash
exec >>/tmp/ov.log 2>&1
chmod 666 /tmp/ov.log 2>/dev/null
echo
date
id
echo "PATH=$PATH"

# Payload
bgpctl reload
route add -net "$ifconfig_pool_remote_ip/30" -interface "$dev" -static

# All done
true

En mi sistema, usando las directivas --user nobodyy --group nogroupobtengo este resultado:

Tue Jun  9 15:00:45 BST 2015
uid=65534(nobody) gid=65534(nogroup) groups=65534(nogroup)
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
...

Dado que los obtiene como rootusuario y wheelgrupo, probablemente no esté utilizando la directiva --useror --group.

También es importante verificar que PATHcontenga los directorios necesarios para los comandos que desea ejecutar.

información relacionada