Невозможно выполнить команды root внутри скрипта openvpn

Невозможно выполнить команды root внутри скрипта openvpn

Я использую опцию openvpn client-connect для запуска скрипта при подключении клиента.

Скрипт работает нормально, когда я использую простые команды, но когда я добавляю команды, требующие прав root, он не работает, и клиенты не могут подключиться к VPN-серверу.

Например, вот некоторые команды, которые я пытаюсь выполнить:

bgpctl reload и

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

Команды проверены и работают корректно. Я использую freeBSD.

Есть идеи, как решить эту проблему?

Спасибо!

Обновлять

На самом деле не было никакой проблемы с привилегиями. Скрипт не мог выполнить команды bgpctl, routeпотому что не мог их распознать.

Я мог бы решить проблему, указав полный путь к командам:

/usr/local/sbin/bgpctl reload

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

Теперь это работает.

Спасибо, Роайма.

решение1

Скрипт --client-connectзапускается от имени непривилегированного пользователя OpenVPN, указанного параметром --user.

Вы можете убедиться в этом, добавив эти строки в начало файла --client-connectи просмотрев вывод, записанный /tmp/ov.logпосле успешного подключения.

#!/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

В моей системе при использовании директив --user nobodyи --group nogroupя получаю следующий вывод:

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
...

Поскольку вы получаете их как rootпользователя и wheelгруппу, вы, вероятно, не используете директиву --useror --group.

Также важно убедиться, что PATHсодержит необходимые каталоги для команд, которые вы хотите выполнить.

Связанный контент