首页/安全/安全加固速查/atd 与计划任务服务收敛
服务与端口收敛50 条

atd 与计划任务服务收敛

atd 常被遗忘却允许任意本地用户排任务:无需求时关闭;保留时用 at.allow 白名单替代 at.deny 黑名单。

安全加固速查安全更新于 2026-10-13

计划任务服务收敛是什么

atd 提供一次性计划任务,常被遗忘却允许本地用户提交任务;周期任务与定时任务的访问控制由 at.allow、at.deny 与对应的 cron 文件决定。服务器上没有使用场景时直接关闭 atd,需要保留时改用白名单文件替代黑名单,避免依赖「默认允许」这种隐式策略。

基本信息

加固项任务调度收敛
适用平台Linux(atd 与 cron)
风险等级低
基线atd 最小化运行并使用白名单
相关文件/etc/at.allow、/etc/at.deny 及同名 cron 文件

典型使用场景

  • 基线核查:确认 atd 是否运行,以及系统里是否真的有人使用
  • 多用户主机:用白名单限制哪些用户可提交定时任务
  • 事件排查:检查是否存在来源不明的计划任务
  • 应用下线:确认业务不再依赖定时任务之后再关闭服务
  • 合规检查:确认计划任务有归属人并可审计

核查与处置

核查与处置
# 确认服务状态与权限文件
systemctl status atd --no-pager 2>/dev/null | head -4
ls -l /etc/at.allow /etc/at.deny 2>/dev/null
# 查看队列:普通用户只看自己的任务,root 可查看全部
atq
# 无使用场景时关闭
systemctl disable --now atd 2>/dev/null

权限文件语义

文件状态含义说明
at.allow 存在仅列出的用户可提交任务白名单优先于 at.deny
at.allow 为空任何用户都不能提交任务与文件不存在语义不同
at.deny 存在列出的用户被拒绝,其余允许黑名单模式,新增用户默认放行
两者都不存在通常仅 root 可用具体以发行版手册为准
at.allow 存在时 at.deny 会被忽略:判断策略先看白名单文件是否存在,再看内容。
cron 的规则与 at 一致,区别只在文件名为 cron.allow 与 cron.deny,两套都要一起核查。

落地检查点

  • 关闭前先确认队列为空,并与应用负责人核对是否有依赖定时任务的流程
  • 需要保留时改为白名单模式,只放行确实要提交任务的账号
  • 定期遍历系统任务目录与用户队列,核对每条任务的归属人与用途
  • 把权限文件纳入配置基线,避免被后续变更覆盖或删除
  • 与应用发布流程结合:新增计划任务时一并登记,避免无主任务长期运行

易错点

  • 关闭 atd 后依赖 at 的自动化脚本静默不执行:没有报错只有业务结果缺失,关闭前先查队列与脚本文档
  • 把空文件与不存在混为一谈:空的白名单表示都不允许,删掉文件反而变成默认策略
  • 只用黑名单管理:新增用户默认被允许,等于没有收敛
  • 审计时只查自己的队列:普通用户只能看到自己的任务,排查要遍历 spool 目录或统一用集中审计

数据来源与参考

  • man 5 at.allow
  • CIS Benchmark:at/cron 条目

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌