0

首先,如果在其他地方已经回答了这个问题,请告诉我,我会删除这个问题。其他人似乎比我更擅长搜索这个网站。

我有一个脚本已添加到我的 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
4

1 回答 1

0

由于找不到更好的选择,我从使用我的用户 cron 切换到 root cron。我不向那些追随我的人推荐这个。

于 2015-03-11T20:21:12.657 回答