跳到内容跳到页面导航:上一页 [access key p]/下一页 [access key n]
documentation.suse.com / SUSE Linux Enterprise Server 文档 / 安全和强化指南 / 本地安全性 / 限制 cron 和 at
适用范围 SUSE Linux Enterprise Server 15 SP4

16 限制 cronat

本章介绍如何限制 cronat 守护程序的访问权限以提高系统的安全性。

16.1 限制 cron 守护程序

cron 系统用于在预定义的时间自动在后台运行命令。有关 cron 的详细信息,请参见第 30.1.2 节 “cron 软件包”

cron.allow 文件指定有权通过 cron 执行作业的用户列表。默认情况下该文件不存在,因此所有用户(cron.deny 中列出的用户除外)都可以创建 cron 作业。

要防止除 root 以外的用户创建 cron 作业,请执行以下步骤。

  1. 创建空文件 /etc/cron.allow

    tux > sudo touch /etc/cron.allow
  2. 通过将用户名添加到该文件来允许这些用户创建 cron 作业:

    tux > sudo echo "tux" >> /etc/cron.allow
  3. 要进行校验,请尝试以 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 调度作业,请执行以下步骤。

  1. 创建空文件 /etc/at.allow

    tux > sudo touch /etc/at.allow
  2. 通过将用户名添加到该文件来允许这些用户使用 at 调度作业:

    tux > sudo echo "tux" >> /etc/at.allow
  3. 要进行校验,请尝试以 at.allow 中列出的非 root 用户身份调度某个作业:

    tux > at 00:00
    at>

    使用 CtrlC 退出 at提示,并尝试以该文件中列出的某个用户身份执行相同的操作(或者在此过程的步骤 2 中添加该用户之前执行该操作):

    wilber > at 00:00
    You do not have permission to use at.
注意
注意:卸装 at

at 不再广泛使用。如果您没有有效的用例,请考虑卸装该守护程序,而不仅仅是限制其访问权限。