當前位置: 首頁>>技術教程>>正文


可以在/etc/cron.d/中使用符號鏈接嗎?

, ,

問題描述

我正在嘗試實現一種配置機製,該機製允許在某個項目中通過 svn 部署一個 cron 配置。

我立即認為我應該做的是從 /etc/cron.d/到我項目的 cron 文件(又由 vcs 控製)的符號鏈接,但這似乎不起作用。

我發現一些舊論壇消息指出不支持符號鏈接,而其他人則表示支持。它是哪一個?

有沒有其他方法或任何其他好的方法來實現這一目標?

最佳方案

根據 man crond

\\n

CAVEATS

\\n

All crontab files have to be regular files or symlinks to regular files, they must not be executable or writable for anyone else but the owner. This requirement can be overridden by using the -p option on the crond command line. If inotify support is in use, changes in the symlinked crontabs are not automatically noticed by the cron daemon. The cron daemon must receive a SIGHUP signal to reload the crontabs. This is a limitation of the inotify API.

\\n

The syslog output will be used instead of mail, when sendmail is not installed.

\\n

它也惹惱了我的生活垃圾,簡而言之,您可以使用符號鏈接,但是,如果不是常規文件或常規文件的符號鏈接,它必須使用 -p 開關。

次佳方案

這具有安全隱患。 /etc/cron.d/中的腳本由具有 root 權限的 root 運行。在那裏對非 root 用戶擁有和可寫的腳本進行符號鏈接是一個壞主意,因為您的係統可能會以這種方式受到損害

第三種方案

我會檢查你的 Ubuntu 版本的 cron 手冊頁(我假設我們在這個論壇上談論的是 Ubuntu!):

\\n

Files in this directory have to be owned by root, do not need to be\\n executable (they are configuration files, just like /etc/crontab) and\\n must conform to the same naming convention as used by run-parts(8): they must consist solely of upper- and lower-case letters, digits,\\n underscores, and hyphens. This means that they cannot contain any dots.

\\n

正如 Florian 所指出的,如果此文件可由非 root 用戶寫入,則這是一個安全漏洞,因為這些作業將由 root 運行(對於文件中被指定為作業所有者的人)。因此,還要注意,

\\n

This directory can contain any file defining tasks following the format used in /etc/crontab, i.e. unlike the user cron spool,\\n these files must provide the username to run the task as in the task definition.

\\n

即在要運行的命令之前彈出用戶名。

參考資料

本文由Ubuntu問答整理, 博文地址: https://ubuntuqa.com/zh-tw/article/12855.html,未經允許,請勿轉載。