別のユーザーとしてコマンドを実行できるように、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ファイルで更新する必要があるものはありますか?
また、ワイルドカードではなくsudoでスクリプト名を明示的にリストする場合も機能します(ファイル名はシンボリックリンクですか?)。
—
EightBitTony 2014
@EightBitToneに感謝します。このsudoersの構成の問題のための解決策を見つけた私はそう:-iスイッチを使用しているときに本当のコマンドがある
—
krzyszto
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: /opt/renovations/var/script-test.sh: cannot execute
/ var / log / sudologログファイルの分析は、(AIXで)上記の問題をデバッグするのに非常に役立ちました。
—
krzyszto 2014
visudo -c
返されますか(sudoersのエラーをチェックします)。また、AIX(oslevel -s
)のフルバージョンとインストールされているsudoのバージョンを確認できますか?