Answers:
根据 man crond
洞穴
所有crontab文件都必须是常规文件或指向常规文件的符号链接,除所有者外,其他任何人都不能执行或写入。可以通过使用crond命令行上的-p选项来覆盖此要求。如果使用初始化支持,则cron守护程序不会自动注意符号链接的crontab中的更改。cron守护程序必须收到SIGHUP信号才能重新加载crontab。这是inotify API的限制。
未安装sendmail时,将使用syslog输出代替邮件。
它也使我烦恼不已,简而言之,可以使用符号链接,如果没有,regular files or symlinks to a regular file
则必须使用-p
switch。
sudo -u www-data crontab -e
并将其添加到www-data用户的crontab中。然后它将以user身份运行www-data
。记住要删除显式用户列,因为用户crontabs中不存在该列。
etc/cron.
吗?我对crontab工具的印象是将任务放置在其他位置。
crontab -e
在这种情况下,调用不是您想要的。我在寻找但尚未找到一种以非root用户身份运行用户crontab的方法。
我会检查您的Ubuntu版本的cron手册页(我想我们在这个论坛上正在谈论Ubuntu!):
该目录中的文件必须由root拥有,不需要是可执行文件(它们是配置文件,就像/ etc / crontab一样),并且必须符合与run-parts(8)使用的命名约定相同:仅由大小写字母,数字,下划线和连字符组成。这意味着它们不能包含任何点。
正如Florian指出的那样,如果该文件可由非root用户写入,则存在安全漏洞,因为作业将由root运行(对于在文件中被称为作业所有者的人)。因此,请注意
该目录可以按照/ etc / crontab中使用的格式包含任何定义任务的文件,即,与用户cron假脱机不同,这些文件必须提供用户名以按照任务定义中的方式运行任务。
即在命令运行前弹出用户名。
/etc/cron.d/bobsjob
指向用户“ bob”拥有的文件,则cron将失败,并显示syslog消息WRONG FILE OWNER (/etc/cron.d/bobsjob)
。