linux密码策略由pam模块(如pam_pwquality.so)在/etc/pam.d/common-password或system-auth中配置,控制密码强度、重用限制与有效期;/etc/security/limits.conf仅管理登录会话资源限制,二者职责分离、需协同生效。

Linux 运维中,/etc/security/limits.conf 本身不处理密码策略,它只管登录会话的资源限制;密码策略由 PAM 的 pam_pwquality.so(或旧版 pam_cracklib.so)等模块在 /etc/pam.d/common-password 或 /etc/pam.d/system-auth 中配置。两者需协同但职责分明:一个控“能登多久、登几次、用多少资源”,一个控“密码够不够强、能不能重用、多久要换”。要实现单用户级的资源与登录会话管控,关键在分层配置、精准匹配和验证生效。
明确 limits.conf 只作用于 PAM 登录会话
/etc/security/limits.conf 的规则仅对通过 PAM 认证启动的交互式会话生效,比如:
- SSH 登录(
sshd服务启用pam_limits.so) - 本地 TTY 登录(
login服务) - 图形界面(GDM、SDDM 等调用 PAM 的显示管理器)
-
su -或sudo -i切换到目标用户(触发新会话)
它对 systemd 服务、crond 任务、后台守护进程完全无效。所以“限制单用户”必须确保该用户是通过上述方式登录的,而不是以服务身份运行。
为单用户设置精准资源限制
在 /etc/security/limits.conf 中用用户名直接指定,避免通配符覆盖:
-
alice hard nproc 50—— 限制用户 alice 最多同时运行 50 个进程(含线程) -
alice soft nofile 1024和alice hard nofile 4096—— 软限制 1024,用户可临时提升至 4096,但不能突破 -
alice - maxlogins 3—— 同一用户最多 3 个并发登录会话(SSH 多窗口、TTY 多终端都计入) -
alice hard cpu 180—— 单个 shell 会话累计 CPU 时间上限 180 分钟,超时后所有子进程收到 SIGXCPU
注意:maxlogins 是唯一支持 - 类型且专用于登录会话数控制的 item;其他如 nproc 控制的是该会话内派生的全部进程总数,不是“子 shell 数量”。
配套启用 pam_limits.so 并确认加载顺序
若 PAM 没调用该模块,limits.conf 形同虚设。检查对应服务的 PAM 配置文件:
- Debian/Ubuntu:确认
/etc/pam.d/common-session包含session required pam_limits.so - RHEL/CentOS:检查
/etc/pam.d/system-auth是否有相同行 - 仅限 SSH:可单独在
/etc/pam.d/sshd添加,不影响本地登录
务必加在 session 段,不能写在 auth 或 account 段;重复添加会导致 PAM 加载失败;修改后需用户重新登录才生效,source /etc/profile 无效。
密码策略与登录会话控制联动实践
虽然密码策略本身不限制会话数,但可通过组合增强管控效果:
- 在
/etc/pam.d/common-password设置password requisite pam_pwquality.so retry=3 minlen=10 difok=3,强制强密码,降低暴力破解导致异常会话激增风险 - 配合
faillock模块(pam_faillock.so)锁定账户,间接减少非法登录尝试产生的会话残留 - 用
maxlogins+ 密码过期策略(chage -M 90 alice)共同约束账户活跃周期与并发强度 - 若需更细粒度登录控制(如仅允许某 IP 段登录),应结合 SSH 的
AllowUsers或 PAM 的pam_access.so,而非依赖 limits.conf
最终验证:切换到目标用户后运行 ulimit -a 查看当前限制,用 loginctl list-sessions 或 w 观察并发会话数,再结合 cat /proc/self/limits 确认内核级生效情况。











