我正在尝试为一组用户创建一个 crontab,我们将其称为“testGroup”。有 3 个用户,我想让他们都访问同一个 crontab。我做了一些研究,并尝试将每个用户添加到 /etc/group 文件中的 crontab 组。但这没有奏效,因为每个用户仍然有 3 个单独的 crontab。这可以修复吗?如果可以,我该怎么做。
谢谢
答案1
背景
不,cron
它并不像你想象的那样运作。
守护进程cron
从两个地方读取它的 crontab:
- 全系统
/etc/crontab
; - 每个用户的 crontab。
没有针对每个用户组制定 crontab 的概念。
解决方案
Debian 已定制cron
,可以相对轻松地完成您需要的操作。引用cron(8)
手册页:
此外,在 Debian 中,
cron
读取目录中的文件/etc/cron.d
。cron 将 中的文件视为/etc/cron.d
与 文件 相同的方式/etc/crontab
(它们遵循该文件的特殊格式,即它们包含用户字段)。但是,它们独立于/etc/crontab
:例如,它们不会从中继承环境变量设置。此更改特定于 Debian,请参阅下面的注释DEBIAN 特定以下。
因此我会做以下事情:
为您的用户组创建一个专用组。我们假设它是“mycrontab”。
将您的三个用户添加到该组中。
在下创建一个文件
/etc/cron.d
并使其归所有root:mycrontab
并将权限位设置为0660
或rw-rw-r--
,即对用户root
和组具有读/写访问权限mycrontab
,对其他所有人具有读取访问权限。告诉您的用户此文件的位置以及其格式的规则(这些可以以注释的形式放在文件中)。
请注意,您可能需要弄清楚如何处理向所有用户发送邮件。我会先检查是否可以将MAILTO
遵循的环境变量设置为cron
以逗号分隔的电子邮件地址列表(如),或者,如果做不到这一点,您可能需要在本地 MTA 或系统上接收由 生成的邮件的 MTA 中设置邮件别名,并将此别名的值用作变量。[email protected],[email protected],[email protected]
cron
MAILTO
总而言之,请至少粗略地浏览一下cron(8)
和手册页。crontab(5)
...请将您的用户从该crontab
组中删除!
答案2
我不明白@kostix 的解决方案为什么不允许以 root 身份运行代码。
您基本上将 root crontab 访问权限授予了用户。这非常危险。
就我个人而言,我会创建一个具有与用户相同权限的通用帐户,并允许用户 su - 到该用户并编辑其 crontab