链接到 crontab 是否邪恶?

cal*_*ula 6 security cron symlink home

我考虑做类似的事情:

sudo ln -s ~/myCustomCrontab /var/spool/cron/crontabs/username
Run Code Online (Sandbox Code Playgroud)

因为我想在我的主目录中包含所有自定义文件。我能想到的可能的风险是

  • 安全性(权限应该如何仍然安全?)
  • 系统错误

或者有没有更好的方法来“跟踪文件”?

roa*_*ima 8

不!

不要那样做!!

无论如何,将您crontab(和其他人)的副本存储在您的主目录等位置,但不要接触系统文件。

vi my_crontab         # Edit my copy of the crontab file
crontab my_crontab    # Install it
Run Code Online (Sandbox Code Playgroud)

(就个人而言,我$HOME/.crontab用于我的每用户副本。)

跟踪系统文件的更好方法是创建源代码存储库(git、cvs、mercury 等)并使用它来跟踪您的更改。AMakefile可用于将更改安装到相关系统目录并重新启动相关服务;在这种情况下,您只需键入即可sudo make install


jof*_*fel 8

不起作用,至少在类似 Debian 的系统中(完全忽略(非系统)用户的符号链接或硬链接 crontab 文件)。如果您用于crontab更改 crontab 文件,它也会失败。如果 cron 版本仍然接受符号链接的 crontab 文件,它会创建可能的安全漏洞,因为不再检查 crontab 文件的一致性。

使用您的符号链接解决方案,crontab -e如果您(或某些安装脚本)更改 crontab 文件,则会崩溃:

crontab: crontabs/username: rename: Operation not permitted
Run Code Online (Sandbox Code Playgroud)

因为它将临时文件移动到/var/spool/cron/crontabs/username 以立即替换旧文件。

crontab 内置了许多额外的安全检查,因此不能使用 cron 系统来破坏系统。例如,它会在安装或更改 cron 文件之前检查它的内容。无效的 cron 文件可能会使cron守护程序崩溃,或者可能(至少在理论上)滥用它来获得更多系统权限。使用您的解决方案,不再检查 crontab 文件。