Linux中at服务权限由/etc/at.allow和/etc/at.deny控制,优先级为:存在at.allow则仅其用户可用;否则at.deny中用户被禁;两文件均不存在时仅root可用;root不受deny限制;文件须chmod 600且属主root。

Linux 中配置 at 服务的访问权限,核心是通过 /etc/at.allow 和 /etc/at.deny 两个控制文件实现,系统按明确优先级判断用户能否使用 at、atq、atrm 等命令。不需要重启服务,修改后立即生效。
at 权限控制的基本规则
系统只认一个策略文件,逻辑清晰:
- 如果
/etc/at.allow存在,只有该文件里列出的用户能用 at;此时/etc/at.deny被完全忽略 - 如果
/etc/at.allow不存在,但/etc/at.deny存在,则 该文件中列出的用户被禁止使用 at - 如果两个文件都不存在,默认仅 root 用户可用 at(这是最严格的安全状态)
-
root 始终不受 .deny 文件限制,即使写进
/etc/at.deny也无效;如需禁用 root 的 at 权限,必须用/etc/at.allow显式排除(不推荐)
常见配置方式与操作步骤
根据管理需求选择合适方法,建议优先用白名单(.allow)提升安全性:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
-
只允许特定用户使用 at:创建空的
/etc/at.allow,然后逐行写入用户名(如admin、backup),每行一个;其他所有用户自动无权使用 -
禁止个别用户使用 at:确保
/etc/at.allow不存在,编辑/etc/at.deny,追加用户名(如testuser);保存即可生效 -
恢复默认宽松策略:删除
/etc/at.allow,清空或删除/etc/at.deny;此时若两文件均不存在,仅 root 可用;若想开放给所有普通用户,可保留空的/etc/at.deny
权限文件的安全要求
这两个文件必须严格限制访问权限,否则可能被篡改导致策略失效:
- 执行
chmod 600 /etc/at.allow /etc/at.deny,确保只有 root 可读写 - 检查属主:
ls -l /etc/at.*应显示root:root - 避免使用
chmod 644或更宽松权限,防止普通用户查看黑名单内容或伪造白名单
验证与清理残留任务
权限设置后,用户将无法新建任务,但已有任务仍会排队执行,需手动清理:
- 用
atq -u username查看指定用户的待执行任务列表 - 用
atrm job_id逐个删除,或批量执行atq -u username | awk '{print $1}' | xargs -r atrm - 检查
/var/spool/at/目录下是否还有对应用户的任务文件(文件名是十六进制 Job ID),确认已清空 - 切换到目标用户测试:
at now + 1 minute应提示You are not authorized to use at.或类似拒绝信息

















