他のユーザーがコマンドを実行できるように、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
次に、欠落している部分は、スクリプトを実行できるように、グループにスクリプトに対する実行権限があることを確認することです。