我希望 OpenVPN 在客户端连接时运行脚本,但它似乎忽略了我的客户端连接指令。
我在 Raspbian 上运行 OpenVPN 2.4.0。在我的 server.conf 中,我有
...
script-security 3
# this is the "up" directive but the issue is the same as with client-connect
up /etc/openvpn/up.sh
...
/etc/openvpn/up.sh 由 world-executable ( ) 的 root 拥有rwxr-xr-x
,它很简单
#!/bin/sh
whoami >> /tmp/connect.txt
exit 0
我可以成功连接到我的服务器,/var/log/daemon.log
即使
ovpn-server[2050]: /etc/openvpn/up.sh tun0 1500 1621 10.100.0.1 10.100.0.2 init
没有指出任何错误,但 /tmp 上什么也没有出现,就好像我的脚本没有被调用一样。
出了什么问题?
答案1
我终于回复自己了。
OpenVPN 作为 systemd 服务(目标?)启动,其配置文件声明为PrivateTmp=true
.所以做过工作并且脚本实际运行,但它没有写入实际的 /tmp 文件夹中。
顺便说一句,还应该使用二进制文件的完整路径(例如/usr/bin/whoami
),因为$PATH
执行的脚本的路径可能与常规 shell 的路径不同。