需区分ulimit(系统资源)和quota(磁盘空间)两类配额:ulimit通过limits.conf永久配置软硬限制并依赖pam_limits.so,quota须启用usrquota、quotacheck初始化、quotaon启用后用edquota或setquota设置KB级软硬限。

在 Linux 中修改用户软限制与硬限制配额阈值,需区分两类场景:系统资源限制(如文件描述符、进程数) 和 磁盘空间/文件数量配额(disk quota)。两者机制不同,配置方式、生效条件和依赖组件也完全不同。
一、修改系统资源的软硬限制(ulimit 类型)
适用于控制单个用户能打开的文件数、最大进程数、堆栈大小等。
- 软限制(soft limit):进程实际可用的上限,普通用户可自行调高(但不能超过硬限制)
- 硬限制(hard limit):软限制能设的最高值,仅 root 可调高
关键操作步骤:
查看当前值:
ulimit -Sn(软限制)ulimit -Hn(硬限制)临时修改(当前会话有效):
ulimit -n 65536→ 同时设软硬为 65536ulimit -Sn 65536→ 仅设软限制(需先确保ulimit -Hn ≥ 65536)ulimit -Hn 65536→ 仅设硬限制(需 root 权限)-
永久生效(推荐):
编辑/etc/security/limits.conf,添加类似行:username soft nofile 65536 username hard nofile 65536 @groupname hard nproc 4096
✅ 必须确认
/etc/pam.d/中已启用pam_limits.so(如session required pam_limits.so)
✅ 修改后需重新登录(SSH、su -、图形界面重登),非登录 shell(如 cron、systemd service)不读此文件 -
systemd 服务需单独配置:
sudo systemctl edit servicename.service→ 添加:[Service] LimitNOFILE=65536 LimitNPROC=4096
然后执行
sudo systemctl daemon-reload && sudo systemctl restart servicename 内核级兜底检查:
若ulimit -Hn始终卡在 4096 或无法提升,检查:cat /proc/sys/fs/nr_open—— 若小于目标值,需echo 65536 | sudo tee /proc/sys/fs/nr_open,并写入/etc/sysctl.conf持久化。
二、修改磁盘使用配额的软硬限制(quota 类型)
适用于限制用户在某一分区上能使用的磁盘空间(KB)或文件数量(inodes)。
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
- 软限制(soft limit):允许用户短暂超限,宽限期默认 7 天,到期未降回则冻结写入
- 硬限制(hard limit):绝对不可逾越,达到即拒绝写入或创建文件
关键操作步骤:
确保文件系统挂载时启用
usrquota(ext4/xfs)或uquota(XFS RHEL7+):
编辑/etc/fstab,例如:/dev/sda3 /home ext4 defaults,usrquota 0 2
执行sudo mount -o remount /home初始化配额数据库:
sudo quotacheck -cug /home→ 生成aquota.user和aquota.group启用配额:
sudo quotaon /home-
设置用户配额:
sudo edquota -u username→ 进入编辑器,修改blocks行:soft列填软限(KB),hard列填硬限(KB),例如:524288 1048576 0 0 0 0→ 表示软限 512MB、硬限 1024MB或直接命令行设置:
sudo setquota -u username 524288 1048576 0 0 /home 调整宽限期(仅对软限制生效):
sudo edquota -t验证:
sudo quota -u usernamesudo repquota -a
三、注意事项
- 两种配额互不影响:
ulimit控制进程级资源,quota控制文件系统级存储 -
limits.conf不影响已运行进程,必须重启对应服务或重新登录用户会话 - XFS 文件系统建议优先使用
xfs_quota命令(如xfs_quota -x -c 'limit -u bsoft=500m bhard=1g username' /mountpoint) - 普通用户无法绕过硬限制,但可通过
ulimit -S降低自身软限制(无需权限)
不复杂但容易忽略细节。

















