必须为用户设置磁盘配额以防止占满服务器磁盘,前提是文件系统启用usrquota且内核加载quota模块;需修改fstab、remount、生成aquota.user、启用quotaon;再用edquota或setquota设定软硬限制(KB),并验证生效。

想防止某个用户把服务器磁盘占满,导致其他用户无法写入文件或服务崩溃,必须在Linux中为该用户设置磁盘使用配额。这要求目标文件系统(如/home)已启用usrquota支持,且当前内核已加载quota模块——缺少任一条件,后续所有设置都将无效。
确认并启用文件系统配额支持
先检查/home是否挂载时启用了usrquota:
运行 mount | grep "$(df /home | tail -1 | awk '{print $1}')" ,若输出中不含 usrquota,说明未启用。
编辑 /etc/fstab,找到/home对应行,在挂载选项末尾添加 ,usrquota(注意前面加英文逗号),例如:/dev/sda3 /home ext4 defaults,usrquota 0 2。
执行 sudo mount -o remount /home 重新挂载;此步失败常见于/home正被占用,此时需确保无用户登录或进程正在写入/home子目录。
运行 sudo quotacheck -cuv /home 生成配额数据库文件;必须成功生成 aquota.user 文件,否则 quotaon 会静默失败,该文件默认位于 /home 根目录下,不可移动或重命名。
启用配额服务:sudo quotaon /home;验证是否生效:运行 sudo quotaon -p /home,输出中 state 应为 “on”。
为指定用户设置软硬限制
方法一:交互式编辑(适合单用户精细调整)
执行 sudo edquota -u username(将 username 替换为实际用户名),进入 vi 编辑器界面。
定位到对应文件系统行(如 /dev/sda3),修改 blocks 列的前两个数值:第一个是软限制(KB),第二个是硬限制(KB)。例如设软限512MB、硬限1GB,就填 524288 1048576;硬限制值必须严格大于软限制,否则配额不会触发警告机制。
保存退出:按 Esc → 输入 :wq → 回车。
方法二:命令行直接设定(适合批量或脚本化)
执行 sudo setquota -u username 524288 1048576 0 0 /home;其中第3、4个0分别代表 inode 软硬限制(此处不设),最后 /home 指定作用文件系统。
验证与测试配额是否真实生效
第一步:查看当前配额状态
切换至目标用户或以 root 执行 sudo quota -u username -s;输出中 Block limits 的 soft/hard 值必须与设定一致,且 “used” 显示当前已用空间。
第二步:确认宽限期配置
运行 sudo edquota -t 可修改全局宽限期(默认7天),该设置影响所有用户的软限制超限缓冲时间。
第三步:强制触发超限行为测试
以该用户身份执行:dd if=/dev/zero of=quota_test bs=1M count=600(假设软限512MB);首次写入超软限时系统仅警告,第二次再写会立即报错 “Disk quota exceeded”,证明硬限制已起效。


















