GNU/Linux >> Linux の 問題 >  >> Linux

シェルスクリプトでルート権限を削除する方法は?

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

それ、どうやったら出来るの?ドロッププロセス特権、特に多項式とタイラーの答えを研究しましたが、実装方法がわかりません。私はCentos6.5で作業していますが、suidは「chmodu + s」と「setuid()」の両方としてブロックされています。

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

Edit0

Nikola Koturの回答によると、IanMeyerの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-uuser」は「sudochpst-uuser -Uuser」と同様に機能することがわかりました:

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 &

私は男のsudoersを研究し、sudoが一人で機能するようになるかどうか/いつ更新するかを更新します。

承認された回答:

runitのchpstを使用しています このようなタスクのためのツール。たとえば、アップスクリプトから、非特権スクリプトを呼び出します。

chpst -u nobody /path/to/script

Linux
  1. Linuxユーザー環境をカスタマイズする方法

  2. ルートユーザーからNologinシェルを持つ別のユーザーに切り替える方法は?

  3. root 権限なしでシェルから KDE セッションを適切に終了する方法

  1. LinuxでユーザーのSudo権限を設定する方法

  2. SSH経由でrootユーザーのログインを無効にする方法

  3. シェルスクリプトのPosixコンプライアンスをテストする方法は?

  1. シェルからPythonスクリプトを実行する方法

  2. Bashシェルスクリプトで改行をエコーする方法

  3. rootユーザーとしてjenkinsでシェルコマンドを実行しますか?