首先,如果在其他地方已经回答了这个问题,请告诉我,我会删除这个问题。其他人似乎比我更擅长搜索这个网站。
我有一个脚本已添加到我的 sudoers 文件中,当从命令行手动调用时,它将作为 sudo 运行(脚本总是从另一个程序内部调用,所以我的意思是我调用父脚本)而不提示我输入我的密码。子脚本更改权限以确保父脚本可以根据需要操作文件。但是,当从 cron 调用父脚本时,子脚本没有运行,或者至少没有正常运行(我让标准输出写入日志以确保我看到的内容)。有关脚本的详细信息,请参见下文
来自 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