16.1 限制 cron
守护程序 #
cron
系统用于在预定义的时间自动在后台运行命令。有关 cron
的详细信息,请参见第 30.1.2 节 “cron 软件包”。
cron.allow
文件指定有权通过 cron
执行作业的用户列表。默认情况下该文件不存在,因此所有用户(cron.deny
中列出的用户除外)都可以创建 cron
作业。
要防止除 root
以外的用户创建 cron
作业,请执行以下步骤。
创建空文件
/etc/cron.allow
:tux >
sudo
touch
/etc/cron.allow通过将用户名添加到该文件来允许这些用户创建
cron
作业:tux >
sudo
echo
"tux" >> /etc/cron.allow要进行校验,请尝试以
cron.allow
中列出的非 root 用户身份创建cron
作业。此时应会看到以下消息:tux >
crontab -e
no crontab for tux - using an empty one退出 crontab 编辑器,并尝试以该文件中未列出的某个用户身份执行相同的操作(或者在此过程的步骤 2 中添加该用户之前执行该操作):
wilber >
crontab -e
You (wilber) are not allowed to use this program (crontab) See crontab(1) for more information
cron
作业
实现 cron.allow
只能防止用户创建新的 cron
作业。即使对于 cron.deny
中列出的用户而言,现有作业仍将运行。为防止出现这种情况,请如上所述创建该文件,并从目录 /var/spool/cron/tabs
中去除现有用户 crontabs,以确保不再运行现有作业。
systemd
计时器单元
还应考虑切换到 systemd
计时器单元,因为它们能够以更有效且可靠的方式执行任务。默认情况下,用户在未登录时无法使用这些单元来运行代码。这会限制用户在未连接到系统的情况下与系统交互的方式。
有关 systemd
计时器单位的详细信息,请参见第 19.7 节 “systemd
计时器单元”。
16.2 限制 at
调度器 #
at
作业执行系统允许用户调度一次性运行的作业。at.allow
文件指定有权通过 at
调度作业的用户列表。默认情况下该文件不存在,因此所有用户(at.deny
中列出的用户除外)都可以调度 at
作业
要防止除 root
以外的用户使用 at
调度作业,请执行以下步骤。
创建空文件
/etc/at.allow
:tux >
sudo
touch
/etc/at.allow通过将用户名添加到该文件来允许这些用户使用
at
调度作业:tux >
sudo
echo
"tux" >> /etc/at.allow要进行校验,请尝试以
at.allow
中列出的非 root 用户身份调度某个作业:tux >
at 00:00
at>使用 Ctrl–C 退出
at
提示,并尝试以该文件中未列出的某个用户身份执行相同的操作(或者在此过程的步骤 2 中添加该用户之前执行该操作):wilber >
at 00:00
You do not have permission to use at.
at
at
不再广泛使用。如果您没有有效的用例,请考虑卸装该守护程序,而不仅仅是限制其访问权限。