2

Я использую опцию 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 ответ1

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 вы, вероятно, не используете директиву --user или --group .

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .