可以在/etc/cron.d/中使用符号链接吗?

我正在尝试实现一种配置机制,允许某个项目通过svn cron配置进行部署。

我立刻想知道我应该做的是将/etc/cron.d/中的符号链接从我的项目的cron文件中调出来(后者又由vcs控制),但这似乎无法正常工作。

我发现一些旧的论坛消息指的是不支持符号链接,而另一些则说它们是。 这是什么?

有没有其他或任何其他好方法来实现这一目标?

根据man crond说法

CAVEATS

所有crontab文件必须是常规文件或常规文件的符号链接,除了所有者之外,它们不能是其他任何人的可执行文件或可写文件。 可以使用crond命令行上的-p选项覆盖此要求。 如果正在使用ino tify支持,则cron守护程序不会自动注意符号链接的crontabs中的更改。 cron守护进程必须收到一个SIGHUP信号才能重新加载crontabs。 这是inotify API的限制。

未安装sendmail时,将使用syslog输出而不是邮件。

它也惹恼了我的生活垃圾,简而言之,你可以使用符号链接,但如果不是regular files or symlinks to a regular file它必须使用-p开关。

这具有安全隐患。 /etc/cron.d/中的脚本由root用户以root权限运行。 在那里为非root用户拥有和写入的符号链接脚本是一个坏主意,因为你的系统可能会受到影响

我查看你的Ubuntu版本的cron手册页(我假设我们在这个论坛上谈论Ubuntu!):

此目录中的文件必须由root拥有,不需要是可执行的(它们是配置文件,就像/ etc / crontab),并且必须符合run-parts(8)使用的相同命名约定:它们必须仅由大写和小写字母,数字,下划线和连字符组成。 这意味着它们不能包含任何点。

正如Florian所指出的,如果非root用户可以写入此文件,那么这是一个安全漏洞,因为这些作业将由root运行(对于在文件中被命名为作业所有者的任何人)。 因此,请注意

此目录可以包含遵循/ etc / crontab中使用的格式的任何文件定义任务,即与用户cron spool不同,这些文件必须提供用户名以在任务定义中运行任务。

即在运行命令之前弹出用户名。