追加読書

追加読書

OpenVPNの「--up」オプションは通常、ルーティングなどに使用されます。したがって、OpenVPNはroot権限を放棄し、誰も実行しない前に処理されます。ただし、権限のないユーザーとして実行する必要があるシェルスクリプトを呼び出しています。

どうすればいいですか?私は学んだプロセス権限の削除、特に多項式とTherelの答えがありますが、実装方法を理解していません。私はCentos 6.5で作業しており、「chmod u + s」と「setuid()」でsuidがブロックされました。

「--down」オプションで呼び出されたスクリプトをrootとして実行できるようにするOpenVPNプラグイン(「openvpn-down-root.so」)があります。 "openvpn-up-user.so"などの対応するエントリがある可能性がありますが、まだ見つかりませんでした。

編集0

Nikola Koturの回答に基づいてインストールしました。Ian Meyerのrunit-rpm。 chpstコマンドは端末で動作しますが、upスクリプトでは「コマンドが見つかりません」というメッセージで失敗します。うまくいくのは「sudo chpst」と正しい表示と言語設定です。より私の端末がUnicode文字を正しく出力しないのはなぜですか?このため、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 &

私はman sudoersを調べ、sudoが単独で動作するようになったら更新します。

ベストアンサー1

runitとsudoを扱うだけでは、多くを見逃すことができます。実際には runit のような一連のツールがあります。

  • Daniel J. Bernsteinのdaemontoolssetuidgid:
    設定値ユーザー/家/ユーザー/unprivileged.sh
  • util-linux (最新の Debian にはデフォルトでインストールされています)setpriv:
    setpriv --reuid=ユーザー--regid=グループ--init-groups --inh-caps=-all /home/ユーザー/unprivileged.sh
  • Adam Sampsonのfreedtには以下が含まれますsetuidgid
    設定値ユーザー/家/ユーザー/unprivileged.sh
  • Bruce Guenterのdaemontools-encoreはsetuidgid:
    設定値ユーザー/家/ユーザー/unprivileged.sh
  • Gerrit Papeのrunitは次のとおりです。chpst:
    chpst-uユーザー/家/ユーザー/unprivileged.sh
  • ウェイン・マーシャルの囚人たちrunuid:
    実行中のユーザーIDユーザー/家/ユーザー/unprivileged.sh
  • ローランベルコのs6はs6-setuidgid:
    s6-setuidgidユーザー/家/ユーザー/unprivileged.sh
  • おやつがあります。setuidgid:
    設定値ユーザー/家/ユーザー/unprivileged.sh

彼らは混ざらないその他仕事次へ追加特典を享受し、インタラクティブモードに閉じ込められません。

ちなみに、あなたが添付した問題は、あなたが忘れたものとあなたの問題に過ぎませsbinbinPATH

追加読書

おすすめ記事