首页/系统/Linux 运维命令速查/at 权限控制:at.allow 与 at.deny
定时任务与计划50 条

at 权限控制:at.allow 与 at.deny

与 cron 同款的名单机制:/etc/at.allow 存在时仅名单用户可提交任务;只有 at.deny 时名单外都能用;都缺省时通常仅 root。

Linux 运维命令速查系统更新于 2026-10-13

命令是干什么的

at 与 batch 的提交权限由 /etc/at.allow 和 /etc/at.deny 两个名单文件控制,机制与 cron 的 cron.allow、cron.deny 完全一致。atd 在收到提交请求时读取这两个文件判断用户能不能用,因此改完文件立即生效,不需要重启服务。判断顺序是固定的:先看 at.allow,存在就只认它;不存在才看 at.deny;两个文件都没有时按发行版编译时的默认行为,通常是只有 root 能用。

基本信息

适用平台Linux,属于 at 软件包,依赖 atd 守护进程
涉及文件/etc/at.allow 与 /etc/at.deny,每行写一个用户名
判断顺序at.allow 存在则只用它,at.deny 被忽略;否则才看 at.deny
生效方式提交任务时即时读取,改完即生效,无需重启 atd
文件属性root 所有、普通可读权限即可,不要放开组与其他用户的写权限
易混淆项cron 用的是 /etc/cron.allow 与 /etc/cron.deny,规则相同但文件不同

典型使用场景

  • 安全加固基线:只允许固定的运维与部署账号提交延时任务,其他账号一律禁止
  • 排查用户反馈不能用 at:先区分是名单拦截、软件包缺失还是 atd 未运行
  • 交付环境权限收敛:把自动化账号加进名单,避免上线后任务提交被拒
  • 多机配置统一:发现各机器策略不一致时收敛到同一份名单
  • 定期审计:确认没有来历不明的账号获得提交权限
  • 应急封禁:账号行为异常时把它从名单移除,立即生效不用等重启

配置示例

配置示例
cat /etc/at.allow /etc/at.deny 2>/dev/null   # 先看现状,可能只有一个文件存在
sudo tee /etc/at.allow > /dev/null <<'EOF'
root
deploy
EOF
sudo chown root:root /etc/at.allow            # 属主必须是 root
sudo chmod 0644 /etc/at.allow                 # 只读即可,别给组和其他用户写权限
sudo ls -l /etc/at.allow /etc/at.deny         # 复核权限与存在情况
sudo su - deploy -c 'echo date | at now + 1 hour'   # 用名单内账号实测能提交
sudo su - guest  -c 'echo date | at now + 1 hour'   # 名单外账号应被拒绝

两个名单的判定矩阵

at.allowat.deny结果
存在无论是否存在只有 allow 中列出的用户能提交任务,deny 完全被忽略
不存在存在deny 中列出的用户被禁止,其余用户都能提交
不存在不存在按发行版默认行为,通常只有 root 能用
存在但没写 root无影响root 也会被拒之门外,写名单时务必包含 root
at.allow 存在时 at.deny 形同不存在,这是最容易误解的一点:以为把用户加进 deny 就封住了,实际因为 allow 先匹配而毫无作用。两个文件必须按同一套策略来设计。
最小化镜像与容器基础镜像里常常没有安装 at,用户报不能用 at 时先确认软件包与 atd 服务状态,不要一上来就翻名单文件。
cron 用的是 cron.allow 与 cron.deny,规则一样但文件独立。要求某个用户既不能用 at 也不能用 cron,两套文件都要处理。

易错点

  • 只写 at.allow 忘了把 root 加进去:所有不在名单里的账号都无法提交任务,连排障都要先绕过这层限制
  • 以为改 at.deny 就能封禁:只要 at.allow 存在,deny 完全被忽略,加固看起来配置了实际没生效
  • 文件权限设成组或其他用户可写:名单等于人人可改,权限加固失去意义,保持 root 所有与 0644
  • 把 cron 的名单文件与 at 的名单文件搞混:改错路径既不报错也不生效,排查时容易被误导到别的方向
  • 只在单台机器上维护名单:多机策略漂移后同一账号在部分机器可用、部分不可用,问题难以复现

数据来源与参考

  • man 1 at(allow/deny 文件)
  • man 8 atd

相关工具

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