quota不是装完就能用的功能,必须严格按四步执行:修改/etc/fstab添加usrquota,grpquota挂载选项并remount;运行sudo quotacheck -cugm /path初始化aquota.user和aquota.group;执行sudo quotaon /path启用配额;最后用sudo edquota -u username设置软硬限制(单位KB)及sudo edquota -t配置宽限期。

quota 不是装完就能用的功能,缺一步就会报 Operation not permitted 或静默失败 —— 本质是四步强依赖:挂载选项 → 初始化数据库 → 启用配额 → 设置限制。
ext4 分区必须加 usrquota 才能用 edquota
直接运行 edquota -u username 肯定失败,除非对应挂载点已启用配额支持。检查方法:mount | grep "usrquota";没看到就说明没开。正确做法是:
- 编辑
/etc/fstab,在目标分区行末尾追加,usrquota,grpquota(如/dev/sdb1 /home ext4 defaults,usrquota,grpquota 0 2) - 执行
sudo mount -o remount /home重挂载(不能只改 fstab 就完事) - 注意:
usrquota是 ext4 的参数名,XFS 里叫uquota,混用会无效
quotacheck -cugm /path 是初始化配额文件的唯一可靠方式
很多人手动 touch aquota.user 或用 ln -s 指向设备路径,结果 quotaon 报错或 edquota 写不进数据。根本原因是 quota 数据库格式有校验,必须由 quotacheck 生成:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
-
sudo quotacheck -cugm /home:-c 创建新文件、-u 用户、-g 组、-m 强制检查(跳过只读检查) - 生成的
aquota.user和aquota.group必须在挂载点根目录下(如/home/aquota.user),不能放在/或/var下 - 若已有旧配额文件且损坏,先
sudo quotaoff /home再删掉再跑quotacheck
quotaon /path 启用后,edquota 才真正生效
即使挂载加了选项、也生成了 aquota 文件,不运行 quotaon,所有配额设置都只是“纸上谈兵”:
-
sudo quotaon /home启用用户配额;加-g启用组配额;quotaon -a启用所有已配置挂载点 - 验证是否启用:
quotaon -p查看状态,输出里要有user quota on /home (/dev/sdb1)这类行 - 常见坑:系统重启后配额自动关闭,需在
/etc/rc.local或 systemd service 里补quotaon -a
setquota 和 edquota 的适用场景差异
edquota 适合交互式批量设限(比如打开 vim 编辑多个用户),setquota 更适合脚本化部署:
-
sudo setquota -u alice 1048576 2097152 0 0 /home:软限 1G、硬限 2G、文件数不限(最后两个 0 表示 inode 无限制) -
sudo edquota -p template_user -u newuser:快速复制模板用户的配额设置 - 注意单位:
setquota所有数值单位是 KB,不是 MB;edquota编辑器里默认也是 KB,别误写成 50M
最容易被忽略的是宽限期(grace period)——它默认是 7 天,但不会自动触发警告或踢出,必须靠 edquota -t 显式设置,且只有用户超过软限后才开始倒计时。不设的话,软限形同虚设。

















