quota不是开箱即用功能,必须严格按挂载配置→初始化数据库→启用quota→设用户限制四步执行,缺一不可;否则edquota编辑无效或报Operation not permitted。

Linux 限制用户磁盘配额不是“给目录设个大小”,而是必须在分区挂载时启用、生成数据库、再逐用户配置——漏掉任何一环,edquota 编辑完也完全不生效。
为什么 edquota 改了却没用?
常见现象:运行 sudo edquota -u alice 修改了软硬限制,但 alice 仍能无限制写入文件。
- 根本原因:配额功能根本没启动——
/etc/fstab没加usrquota,或没执行mount -o remount,或没运行quotacheck -cum生成aquota.user - ext4 和 xfs 处理逻辑完全不同:
edquota只对 ext4 有效;xfs 必须用xfs_quota,且依赖挂载参数uquota(不是usrquota) - 配额只作用于挂载点所在分区,和路径无关。比如你把
/home挂在/dev/sdb1上,那配额就管/dev/sdb1,不管/home/user/data这个子目录是否独立挂载
edquota 编辑后必须配 quotaon 才生效
edquota 只是改配置文件,不等于开启限制。它写入的是 aquota.user,但内核不会自动监听这个文件。
- 启用命令:运行
sudo quotaon /home(路径必须是挂载点,不是设备名) - 验证是否启用:
sudo quotaon -p查看各挂载点状态,输出中对应行应含user或group字样且无not mounted - 临时关闭:用
sudo quotaoff /home,调试时比反复卸载重挂安全得多 - 重启后失效?因为没写进
/etc/fstab—— 必须确保该行第4字段含usrquota,如:UUID=xxx /home ext4 defaults,usrquota 0 2
ext4 配额初始化三步缺一不可
刚启用配额或新增用户后,必须重新扫描当前使用量,否则 blocks 和 inodes 初始值全为 0,导致用户立刻被锁死。
- 先确保已挂载并带
usrquota选项(mount | grep home看输出里有没有) - 运行
sudo quotacheck -cum /home:-c创建新文件,-u扫描用户,-m跳过“已挂载”警告 - 检查生成的文件:
ls -l /home/aquota.user应存在且非空;若报错No such process,说明配额未在 fstab 中启用
xfs 用户配额必须用 xfs_quota,edquota 完全无效
别试图在 xfs 分区上用 edquota——它压根不读 aquota.*,xfs 自己用二进制格式存配额,只能靠 xfs_quota 操作。
- 挂载时必须带
uquota(不是usrquota):mount -o uquota /dev/sdb1 /quota - 设置用户限额用:
xfs_quota -x -c 'limit bsoft=100m bhard=200m isoft=100 ihard=200 alice' /quota - 查看效果:
xfs_quota -x -c 'report -ubih' /quota(-u用户,-b块,-iinode,-hhuman-readable) - 注意:
xfs_quota的单位默认是字节,m表示 MiB,g是 GiB;而edquota的blocks单位是 KB
最易忽略的一点:宽限时间(grace period)不是全局配置,它由 edquota -t 或 xfs_quota -x -c 'timer' 单独设置,且对每个用户/组独立生效。不设的话,一旦触及 soft 限制,系统立即开始倒计时,默认 7 天后 soft 自动升为 hard——很多人等到用户喊“突然写不了文件”才意识到这点。


















