首先,如果在其他地方已经回复了,请告诉我,我会删除这个问题。其他人似乎比我更善于搜索这个网站。
我有一个脚本已添加到我的sudoers文件中,当从命令行手动调用时,该脚本将以sudo身份运行(脚本始终从另一个程序中调用,所以我的意思是我调用父脚本)而不提示我的密码。子脚本更改权限以确保父级可以根据需要操作文件。但是,当从cron调用父代时,子脚本没有运行,或者至少没有正常运行(我让stdout写入日志以确保我看到的内容)。请参阅下面的脚本详细信息
来自cron:
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
答案 0 :(得分:0)
由于缺少一个我能找到的更好的选项,我从使用我的用户cron切换到root cron。我不建议那些追随我的人。