OpenVPN中的“ --up”选项通常用于路由等。因此,在OpenVPN放弃root特权以无人运行的情况下进行处理。但是,我正在调用需要以非特权用户身份运行的shell脚本。
我怎么做?我研究了Drop Process Privileges,特别是多项式和tylerl的答案,但是我不知道如何实现。我在Centos 6.5中工作,并且suid被阻止为“ chmod u + s”和“ setuid()”。
有一个OpenVPN插件(“ openvpn-down-root.so”),该插件使“ --down”选项调用的脚本能够以root用户身份运行。可能存在等效项,例如“ openvpn-up-user.so”,但我没有找到它。
编辑0
根据Nikola Kotur的回答,我已经安装了Ian Meyer的runit-rpm。尽管chpst命令在终端中有效,但在up脚本中,它失败并显示“找不到命令”。起作用的是“ sudo chpst”以及设置适当的显示和语言。请参阅为什么我的终端无法正确输出unicode字符?鉴于此,up脚本需要以下四行:
LANG="en_US.UTF-8"; export LANG
GDM_LANG="en_US.UTF-8"; export GDM_LANG
DISPLAY=:0; export DISPLAY
sudo chpst -u user -U user /home/user/unprivileged.sh &
编辑1
根据0xC0000022L的评论,我发现“ sudo -u用户”和“ sudo chpst -u用户-U用户”一样有效:
LANG="en_US.UTF-8"; export LANG
GDM_LANG="en_US.UTF-8"; export GDM_LANG
DISPLAY=:0; export DISPLAY
sudo -u user /home/user/unprivileged.sh &
我将研究man sudoers并更新是否/当我独自一个人工作时更新。