sudo - ユーザー偽装

sudo - ユーザー偽装

他のユーザーがコマンドを実行できるように、sudoコマンドとsudoersファイルを正しく使用しようとしています。

私のsudoersファイルは次のように設定されています。

beans ALL = (root,apache) NOPASSWD: /opt/renovations/var/script-*.sh

ルート、Apache、Beanは空のグループの一部です。
また、/opt には 755 の権限があり、/opt/renovations ディレクトリーとそのサブディレクトリーは Bean ユーザーとグループが所有します。

Beanで実行するコマンドは次のとおりです。

sudo -n -u apache -i /opt/renovations/var/script-test.sh  

-n:cronによって実行されるため、パスワードの入力を求められません。
-u:Apacheユーザーを偽装できます。
-i:ログインを偽装でき、私の.profileがロードされます。 .profileの環境変数にアクセスするにはこれが必要です。

問題は、sudoコマンドを実行すると次のメッセージが表示されることです。

sudo:申し訳ありません。 sudoを実行するにはパスワードが必要です。

AIXとUbuntuで実行してみましたが、両方のシステムに問題がありました。次のコマンドを実行すると機能します。

sudo -n -u apache /opt/renovations/var/script-test.sh

しかし、-iがなければ、私の環境に必要なすべての環境変数は含まれません。

これを達成するには、sudoersファイルを更新する必要がありますか?

答え1

@krzystoが言ったように、解決策はsudoersファイルに以下を追加することです.

beans ALL = (root,apache) NOPASSWD: /usr/bin/ksh -c /opt/renovations/var/script-*.sh 
beans ALL = (root,apache) NOPASSWD: /usr/bin/bash -c /opt/renovations/var/script-*.sh

次に、欠落している部分は、スクリプトを実行できるように、グループにスクリプトに対する実行権限があることを確認することです。

関連情報