首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Openvpn在与受限用户连接的客户端上执行脚本

问Openvpn在与受限用户连接的客户端上执行脚本
EN

Server Fault用户
提问于 2018-11-26 14:09:44
回答 1查看 1.3K关注 0票数 0

每次客户端连接时,我都试图在openvpn服务器上执行命令。我有一个用户openvpn,它是通过

代码语言:javascript
复制
adduser --system --shell /usr/sbin/nologin --no-create-home openvpn
groupadd openvpn
usermod -g openvpn openvpn

此用户用于我的服务器配置(您还可以看到我希望在每个客户端连接上执行的命令):

代码语言:javascript
复制
... 
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)连接,则脚本将失败,并使用以下日志:

代码语言:javascript
复制
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通过

代码语言:javascript
复制
su -s /bin/bash openvpn

脚本也会成功终止。日志:

代码语言:javascript
复制
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.

我做错了什么?

EN

回答 1

Server Fault用户

发布于 2018-11-27 00:21:44

Sudo作为默认条件需要TTY。手动运行脚本后,TTY就可用了。一旦它在cron或(我猜也是)通过openvpn (称为脚本)运行,就没有TTY可用了。

我认为有两种选择:

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/941665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档