スクリプトでcronがsudoを実行するのに静かに失敗するのはなぜですか?
を使用していくつかのコマンドを呼び出す非特権ユーザーのcrontabからスクリプトを実行していますsudo。そうでないことを除いて。スクリプトは正常に実行されますが、sudoされたコマンドは黙って失敗します。 スクリプトは、問題のユーザーとしてシェルから完全に実行されます。 sudoはパスワードを必要としません。問題のユーザーにはで(root) NOPASSWD: ALLアクセスが許可されてい/etc/sudoersます。 Cronはスクリプトを実行および実行しています。シンプルdate > /tmp/logを追加すると、適切なタイミングで出力が生成されます。 権限の問題ではありません。繰り返しますが、スクリプトは実行されますが、sudoされたコマンドではありません。 パスの問題ではありません。実行env中のスクリプト内から実行$PATHすると、sudoへのパスを含む正しい変数が表示されます。完全なパスを使用して実行しても役に立ちません。実行中のコマンドにはフルパス名が与えられています。 STDERRを含むsudoコマンドの出力をキャプチャしようとしても、有用なものは何も表示されません。sudo echo test 2>&1 > /tmp/logスクリプトに追加すると、空のログが生成されます。 sudoバイナリ自体は正常に実行され、スクリプト内のcronから実行された場合でもアクセス許可があることを認識します。sudo -l > /tmp/logスクリプトに追加すると、出力が生成されます。 ユーザーec2-userは、このホストで次のコマンドを実行できます: (root)NOPASSWD:ALL を使用してコマンドの終了コードを調べると、$?エラーが返されています(終了コード:)1が、エラーは発生していないようです。/usr/bin/sudo /bin/echo test同じエラーコードを返すような単純なコマンド。 他に何が起こっているのでしょうか? これは、最新のAmazon Linux AMIを実行する最近作成された仮想マシンです。crontabはユーザーに属しec2-user、sudoersファイルが配布のデフォルトです。