OpenVPNの「--up」オプションは、通常、ルーティングなどに使用されます。したがって、OpenVPNがルート権限を削除して誰としても実行されない前に処理されます。ただし、非特権ユーザーとして実行する必要があるシェルスクリプトを呼び出しています。
それ、どうやったら出来るの?私が研究しているドロッププロセス特権、特に多項式のとtylerlの答えを、私は実装する方法を理解していません。私はCentos 6.5で作業していますが、「chmod u + s」と「setuid()」の両方として、suidがブロックされています。
OpenVPNプラグイン( "openvpn-down-root.so")があります。これにより、 "-down"オプションによって呼び出されたスクリプトをrootとして実行できます。「openvpn-up-user.so」などの同等のものがありますが、見つかりませんでした。
編集0
Nikola Koturの答えに従って、Ian Meyerのrunit-rpmをインストールしました。chpstコマンドは端末で機能しますが、アップスクリプトでは「command not found」で失敗します。動作するのは、「sudo chpst」に加えて、適切な表示と言語の設定です。端末がユニコード文字を正しく出力しないのはなぜですか?をご覧ください。そのため、upスクリプトには次の4行が必要です。
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 user」は「sudo chpst -u user -U user」と同様に機能することがわかりました。
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 &
私は男のスーダーを研究し、sudoを単独で使用する場合は更新します。