Luí*_*ira 28 cron configuration-management symbolic-link
我正在尝试实现一种配置机制,允许在某个项目中通过 svn 部署一个 cron 配置。
我立即想到我应该做的是将 /etc/cron.d/ 中的符号链接创建到我项目的 cron 文件(该文件又由 vcs 控制),但这似乎不起作用。
我发现一些旧的论坛消息提到不支持符号链接,而其他人则表示支持。是哪个?
有没有其他方法或任何其他好方法来实现这一目标?
小智 29
根据 man crond
警告
所有 crontab 文件都必须是常规文件或常规文件的符号链接,除了所有者之外,它们不能对任何其他人执行或写入。可以通过在 crond 命令行上使用 -p 选项来覆盖此要求。如果使用 inotify 支持,则 cron 守护程序不会自动注意到符号链接 crontab 中的更改。cron 守护进程必须收到 SIGHUP 信号才能重新加载 crontab。这是 inotify API 的一个限制。
如果未安装 sendmail,将使用 syslog 输出而不是邮件。
它也惹恼了我,简而言之,是的,您可以使用符号链接,但是,如果不是常规文件或常规文件的符号链接,则必须使用-pswitch。
Flo*_*nle 16
这具有安全隐患。/etc/cron.d/ 中的脚本由具有 root 权限的 root 运行。对非 root 用户拥有和可写的脚本进行符号链接是一个坏主意,因为您的系统可能会以这种方式受到损害
小智 6
我会检查你的 Ubuntu 版本的 cron 联机帮助页(我假设我们在这个论坛上谈论 Ubuntu!):
此目录中的文件必须由 root 拥有,不需要是可执行的(它们是配置文件,就像 /etc/crontab 一样)并且必须符合 run-parts(8) 使用的相同命名约定:它们必须仅由大写和小写字母、数字、下划线和连字符组成。这意味着它们不能包含任何点。
正如 Florian 指出的那样,如果该文件可由非 root 用户写入,这是一个安全漏洞,因为作业将由 root 运行(对于在文件中被指定为作业所有者的人)。还请注意,因此,
这个目录可以包含任何按照 /etc/crontab 中使用的格式定义任务的文件,即与用户 cron spool 不同,这些文件必须提供用户名来运行任务定义中的任务。
即在命令运行之前弹出用户名。