禁用特定用户的 cron 和 at 权限需通过编辑 /etc/cron.allow、/etc/cron.deny、/etc/at.allow 或 /etc/at.deny 实现:若存在 .allow 文件,仅其中用户可使用;否则查 .deny 文件禁用所列用户;root 始终不受 deny 限制;修改后无需重启服务,立即生效,但需手动清理用户残留任务并注意文件权限设为 600。

禁用特定用户的 cron 和 at 权限,核心是通过系统级访问控制文件限制其调度能力,而非删除用户或服务。操作需 root 权限,且对系统稳定性影响小,但需谨慎避免误锁关键账户。
禁止用户使用 Cron 任务
Linux 通过 /etc/cron.allow 和 /etc/cron.deny 控制 cron 访问权限,规则优先级为:存在 cron.allow → 只有列在其中的用户可使用 cron;否则,查 cron.deny → 列在其中的用户被禁止。
- 若
/etc/cron.allow存在,直接向其中添加该用户(每行一个用户名),其余未列出者自动无权使用 cron - 若该文件不存在,且
/etc/cron.deny存在,将目标用户名追加到该文件末尾即可禁用 - 若两个文件都不存在,系统默认允许所有用户使用 cron;此时建议创建
cron.deny并加入用户,更安全可控 - 执行后无需重启 cron 服务,策略立即生效(cron 守护进程会实时读取)
禁止用户使用 At 命令
at 的权限控制逻辑与 cron 类似,依赖 /etc/at.allow 和 /etc/at.deny。行为规则完全一致:
- 若
/etc/at.allow存在,仅该文件中列出的用户可运行at、atq、atrm等命令 - 若
/etc/at.allow不存在,而/etc/at.deny存在,则其中的用户被明确拒绝 - 典型做法:创建空的
/etc/at.allow(仅保留 root),或向/etc/at.deny添加用户名 - 注意:
root始终不受 deny 文件限制,除非显式写入 allow 文件并排除它(不推荐)
验证与清理残留任务
权限设置后,用户将无法新增计划任务,但已有任务可能仍在队列中运行,需手动清理:
- 以 root 身份运行
crontab -u username -e可编辑其 cron 表;清空内容后保存即删除全部 cron 任务 - 用
atq -u username查看该用户待执行的 at 任务,再用atrm job_id逐个删除 - 检查
/var/spool/cron/(cron 任务存储目录)和/var/spool/at/(at 任务目录),确认对应用户文件已被清空或移除(注意不要误删其他用户文件)
补充说明与注意事项
这些限制属于系统级策略,不影响用户登录、shell 使用或其它服务权限。若后续需恢复权限,只需从对应 .deny 文件中删除用户名,或从 .allow 文件中添加即可。
某些发行版(如较新 Debian/Ubuntu)默认不创建 cron.deny 或 at.deny,首次配置时需手动创建;文件权限建议设为 600(sudo chmod 600 /etc/cron.deny),防止普通用户读取内容。










