linux限制用户目录容量本质是为挂载点(如/home)启用磁盘配额:一、修改/etc/fstab添加usrquota并remount;二、运行quotacheck -cugm /home生成aquota.user;三、执行quotaon /home启用,再用edquota -u username设软硬限制(kb);四、用quota -u验证,超硬限即报“disk quota exceeded”。

在 Linux 系统中限制用户目录容量,本质是为该用户在**特定挂载点(如 /home)**启用并配置磁盘配额(quota),而非直接限制某个用户的家目录路径本身。配额绑定的是文件系统挂载点,不是任意目录。下面分四步讲清楚关键操作和常见陷阱。
确认目标分区已启用 usrquota 挂载选项
配额必须在挂载时启用,不能临时打开。以 /home 为例:
- 运行
mount | grep /home,输出中必须含usrquota;若显示noquota或没有该字段,说明未启用 - 编辑
/etc/fstab,找到对应行(例如/dev/sdb1 /home ext4 defaults 0 2),在第4列(挂载选项)末尾添加,usrquota,变成:/dev/sdb1 /home ext4 defaults,usrquota 0 2 - 执行
sudo mount -o remount /home生效;XFS 文件系统请用uquota(RHEL/CentOS 7+)或usrquota(旧版),且不走这套流程,需用xfs_quota
初始化配额数据库文件
这一步生成 aquota.user,是后续所有操作的基础,跳过或失败会导致 quota 始终显示 none:
- 运行
sudo quotacheck -cugm /home:
-c强制创建新文件,-u处理用户配额,-g同时处理组配额(可选),-m忽略挂载状态检查(刚改完 fstab 后常用) - 检查
/home/aquota.user是否存在且大小 > 0;若为空或报错Quotafile not found,常见原因是权限不足或路径写错 - 不要手动
touch或chmod这两个文件——quotacheck会自动设好属主(root)和权限(600)
启用配额并设置用户限制
配额服务默认关闭,必须显式开启;限制值单位是 KB,软硬限制逻辑要分清:
- 运行
sudo quotaon /home启用;验证用sudo quotaon -p,状态应为enabled - 用
sudo edquota -u username编辑用户配额:
第一行blocks控制磁盘空间(KB),第二行inodes控制文件数量
例如设 500MB 软限 + 512MB 硬限:填入512000 524288 0 0 0 0(第三列宽限期默认 7 天,可保留) - 也可跳过编辑器,用命令批量设置:
sudo setquota -u username 512000 524288 0 0 /home
验证与测试是否真正生效
配置完成不等于生效,必须检查输出内容是否匹配预期:
- 运行
sudo quota -u username,看Block limits下的soft和hard是否为你设定的 KB 值 - 用
sudo repquota -a | grep username,确认用户出现在列表中,且state不是none - 切到该用户,尝试写入大文件测试:
软限内会警告但允许继续;超硬限时会报Disk quota exceeded并写入失败











