每次客户端连接时,我都试图在openvpn服务器上执行命令。我有一个用户openvpn,它是通过
adduser --system --shell /usr/sbin/nologin --no-create-home openvpn
groupadd openvpn
usermod -g openvpn openvpn此用户用于我的服务器配置(您还可以看到我希望在每个客户端连接上执行的命令):
...
user openvpn
group openvpn
client-connect '/bin/bash -c "sudo /usr/local/psa/bin/dns -a my.domain -a $common_name -ip $ifconfig_pool_remote_ip"'
script-security 2我还通过visudo (openvpn ALL=NOPASSWD: /usr/local/psa/bin/dns)添加了一个条目,使openvpn的脚本与sudo一起可执行。服务器启动时没有错误,但如果客户端(在此日志中名称为server03)连接,则脚本将失败,并使用以下日志:
sudo[31369]: openvpn : TTY=unknown ; PWD=/etc/openvpn ; USER=root ; COMMAND=/usr/local/psa/bin/dns -a my.domain -a server03 -ip 10.9.0.2
sudo[31369]: pam_unix(sudo:session): session opened for user root by (uid=0)
sudo[31369]: pam_unix(sudo:session): session closed for user root
ovpn-user-server[31357]: server03/87.XXX.XXX.4:40594 WARNING: Failed running command (--client-connect): external program exited with error status: 1正如您在日志中看到的那样,命令是用正确的变量执行的,但不知为何失败了。但是,如果我从CMD执行命令(作为root),它将成功终止,如果我登录到openvpn-user通过
su -s /bin/bash openvpn脚本也会成功终止。日志:
openvpn@...:/etc/openvpn$ sudo /usr/local/psa/bin/dns -a my.domain -a server03 -ip 10.9.0.2
SUCCESS: Creation of DNS record in Domain 'my.domain' complete.我做错了什么?
发布于 2018-11-27 00:21:44
Sudo作为默认条件需要TTY。手动运行脚本后,TTY就可用了。一旦它在cron或(我猜也是)通过openvpn (称为脚本)运行,就没有TTY可用了。
我认为有两种选择:
https://serverfault.com/questions/941665
复制相似问题