禁用特定用户使用cron和at需配置/etc/cron.deny与/etc/at.deny文件:若存在对应.allow文件则仅其列明用户可用;否则在.deny中添加用户名并设权限600,root默认不受限。

要禁用特定用户在Linux系统中使用 cron 和 at,核心方法是通过配置对应的访问控制文件,而非删除命令或修改权限——这样既安全又可逆。
禁止用户使用 Cron
Cron 的访问由 /etc/cron.allow 和 /etc/cron.deny 控制,规则如下:
- 若
/etc/cron.allow存在,则只有该文件中列出的用户才能使用crontab;其他用户(包括 root)均被拒绝 - 若
/etc/cron.allow不存在,但/etc/cron.deny存在,则其中列出的用户被禁止使用crontab - 两者都不存在时,所有用户(除明确被系统策略限制者)默认允许使用
操作建议:
- 创建
/etc/cron.deny(如尚不存在),并追加用户名:echo "username" >> /etc/cron.deny - 若已存在
cron.allow,且目标用户不在其中,无需额外操作;若需严格管控,可清空cron.allow并改用cron.deny管理 - 确保文件权限为
600:chmod 600 /etc/cron.deny
禁止用户使用 At
at 服务同样依赖 /etc/at.allow 和 /etc/at.deny,逻辑与 cron 一致:
- 存在
at.allow→ 仅该文件所列用户可用at - 不存在
at.allow,但存在at.deny→ 其中用户被禁止
操作建议:
- 创建或编辑
/etc/at.deny,加入用户名:echo "username" >> /etc/at.deny - 若系统已有
at.allow,且目标用户未列入,也已生效;否则建议移除at.allow,统一用at.deny维护(避免冲突):rm -f /etc/at.allow - 同样设置权限:
chmod 600 /etc/at.deny
验证与注意事项
配置后无需重启服务,新限制对下次命令调用立即生效。验证方式:
- 切换到目标用户,执行
crontab -e或at now + 1 minute,应提示Permission denied或类似错误 - 检查日志(如
/var/log/syslog或/var/log/messages)中是否有 cron/at 拒绝记录 - 注意:root 用户默认不受
cron.deny或at.deny限制,除非显式写入对应 allow 文件且未包含 root - 某些发行版(如 RHEL/CentOS 8+、Fedora)默认不创建
.deny文件,需手动建立
补充:彻底禁用(可选)
如需全局停用 at 服务(非仅限用户):
- 停止并禁用 atd:
systemctl stop atd && systemctl disable atd - 但此操作影响所有用户,慎用;cron 服务(
crond)不建议停用,因系统任务依赖它










