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系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
-
只允许特定用户使用 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.或类似拒绝信息










