0

まず、これが他の場所で回答されている場合はお知らせください。この質問は削除します。他の人々は、私よりもこのサイトの検索に長けているようです。

sudoers ファイルに追加されたスクリプトがあります。このスクリプトは、コマンド ラインから手動で呼び出すと sudo として実行されます (スクリプトは常に別のプログラム内から呼び出されるため、親スクリプトを呼び出すことを意味します)。パスワード。子スクリプトは、親が必要に応じてファイルを操作できるようにアクセス許可を変更します。ただし、親が cron から呼び出されると、子スクリプトが実行されていないか、少なくとも適切に実行されていません (何が表示されているかを確認するために、stdout をログに書き込むようにしました)。スクリプトの詳細については、以下を参照してください

クローンから:

bash * * * * * '/path/to/script/foo.sh' &> /dev/null

親スクリプト内で呼び出す:

source /path/to/childScript/bar.sh $dirToManipulate >> $LOG

完全な子スクリプト:

if [ $# -eq 1 ]; then
    find "$1" -type d -exec chmod -vR 777 {} \;
    find "$1" -type f -exec chmod -vR 777 {} \;
else
    echo "No folders/files given"
fi

上で述べたように、端末から親スクリプトを手動で呼び出すと ( bash /path/to/script/foo.sh)、子スクリプトは想定どおりに動作し、指定されたディレクトリ内のファイルのアクセス許可を変更しますが、親が cron から呼び出されると ( bash * * * * * '/path/to/script/foo.sh' &> /dev/null) 子スクリプト指定されたディレクトリ内のファイルのアクセス許可を変更できません。

SUDOERS ファイル内:

username ALL=(ALL) ALL
username ALL=(root) NOPASSWD: /path/to/childScript/bar.sh
4

1 に答える 1

0

より良いオプションが見つからなかったため、ユーザー cron の使用からルート cron に切り替えました。私の後に来る人にはこれをお勧めしません。

于 2015-03-11T20:21:12.657 に答える