sudo-ユーザーを偽装


8

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

sudoersファイルを次のように設定しています。

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

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

Beanとして実行しようとしているコマンドは次のとおりです。

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

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

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

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

これをAIXとUbuntuの両方で実行してみましたが、問題は両方のシステムにあります。これは私が実行すると動作します:

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

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

これを可能にするために、sudoersファイルで更新する必要があるものはありますか?


何がvisudo -c返されますか(sudoersのエラーをチェックします)。また、AIX(oslevel -s)のフルバージョンとインストールされているsudoのバージョンを確認できますか?
EightBitTony 2014

1
また、ワイルドカードではなくsudoでスクリプト名を明示的にリストする場合も機能します(ファイル名はシンボリックリンクですか?)。
EightBitTony 2014

@EightBitToneに感謝します。このsudoersの構成の問題のための解決策を見つけた私はそう:-iスイッチを使用しているときに本当のコマンドがある beans ALL = (root,apache) NOPASSWD: /usr/bin/ksh -c /opt/renovations/var/script-*.shbeans ALL = (root,apache) NOPASSWD: /usr/bin/bash -c /opt/renovations/var/script-*.sh:しかし、今、私は、たとえば、新しいエラーが出るksh: /opt/renovations/var/script-test.sh: cannot execute
krzyszto

/ var / log / sudologログファイルの分析は、(AIXで)上記の問題をデバッグするのに非常に役立ちました。
krzyszto 2014

回答:


4

@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

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


はい、それは正しい解決策です。kshエラーは、なりすましの問題を調査するために作成されたテスト環境でのみ発生します。実際には、プロダクションはすべて正しく動作します
krzyszto
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.