linux限制用户使用定时任务靠/etc/cron.allow(白名单优先)和/etc/cron.deny(黑名单兜底);两者皆无时仅root可用;文件权限须为600,修改后立即生效。

Linux 中限制特定用户使用定时任务,核心是控制 crontab 命令的执行权限,靠的是系统级白名单和黑名单机制——/etc/cron.allow 和 /etc/cron.deny。它不依赖 sudo 或文件权限,而是由 cron 守护进程在每次调用时主动检查,生效即时、无需重启服务。
白名单优先:只允许指定用户用 crontab
当 /etc/cron.allow 存在时,只有其中列出的用户能运行 crontab -e、-l 等命令,其他所有用户(包括普通用户)都会被拒绝,哪怕 cron.deny 为空或不存在。
- 创建白名单:用 root 执行
sudo tee /etc/cron.allow - 确保
cron.deny被移除或重命名(如mv /etc/cron.deny /etc/cron.deny.bak),避免干扰 - 文件权限必须为
600(sudo chmod 600 /etc/cron.allow),否则 cron 会忽略该文件 - 用户名需与
/etc/passwd中登录名完全一致(区分大小写,无空格)
黑名单兜底:禁止部分用户使用
若 cron.allow 不存在,而 cron.deny 存在,则其中列出的用户被禁止使用 crontab;其余用户(包括新添加的普通用户)默认可用。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 新建或编辑
/etc/cron.deny:sudo sh -c 'echo "guest" >> /etc/cron.deny' - 同样需设权限为
600:sudo chmod 600 /etc/cron.deny - 空的
cron.deny等效于“不限制”,即所有非 root 用户都可使用 - root 用户始终不受限,即使出现在
cron.deny中也无效
两个文件都不存在时的默认行为
此时系统最严格:仅 root 可用 crontab,任何普通用户执行 crontab -e 都会报错:you (username) are not allowed to use this program。
- 这是多数安全加固场景下的起点状态
- 若想开放给部分用户,应明确创建
cron.allow,而非依赖cron.deny - 可通过
ls -l /etc/cron.allow /etc/cron.deny 2>/dev/null快速确认当前配置状态
验证与注意事项
修改后立即生效,无需重启 crond。切换到目标用户测试即可:
- 允许用户执行
crontab -e应进入编辑器 - 被禁用户执行会提示权限拒绝,并在
/var/log/cron中留下拒绝日志 -
crontab -u otheruser这类跨用户操作,仍要求当前执行者是 root,且目标用户本身也需满足 allow/deny 规则 - 该机制只控制“能否用 crontab”,不控制“能写什么命令”;高危操作建议封装成受控脚本再调用










