15.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 -eno crontab for tux - using an empty one- 退出 crontab 编辑器,并尝试以该文件中未列出的某个用户身份执行相同的操作(或者在此过程的步骤 2 中添加该用户之前执行该操作): - wilber >- crontab -eYou (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 计时器单元”。
   
15.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:00at>- 使用 Ctrl–C 退出 - at提示,并尝试以该文件中未列出的某个用户身份执行相同的操作(或者在此过程的步骤 2 中添加该用户之前执行该操作):- wilber >- at 00:00You do not have permission to use at.
at
at 不再广泛使用。如果您没有有效的用例,请考虑卸装该守护程序,而不仅仅是限制其访问权限。