准确--CentOS 7 配置用户资源限制(nofile / nproc)


CentOS 7 配置用户资源限制(nofile / nproc)

目标:

  • 提升文件句柄数(nofile)
  • 提升进程数(nproc)
  • 避免启用 UsePAM 后"密码正确却登录失败"的坑

一、临时生效(立即生效,无需重启服务)

使用 prlimit 强制修改当前 Shell

适合:

  • 立即排障
  • 临时调优
  • 不想重启服务
bash 复制代码
prlimit --pid $$ --nofile=65535:65535 --nproc=65535:65535

参数说明

  • --pid $$:当前 Shell 进程
  • nofile:最大文件句柄数
  • nproc:最大进程数

验证

bash 复制代码
ulimit -n

输出应为:

text 复制代码
65535

⚠️ 注意 :

该方式 仅对当前 Shell 有效,重新登录即失效。


二、永久生效(推荐生产环境使用)

1️⃣ 修改 limits.conf

bash 复制代码
vim /etc/security/limits.conf

追加:

ini 复制代码
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535

2️⃣ 启用 PAM(关键步骤)

编辑 SSH 配置:

bash 复制代码
vim /etc/ssh/sshd_config

确保存在并且未注释:

ini 复制代码
UsePAM yes
PasswordAuthentication yes

修改后重启 SSH:

bash 复制代码
systemctl restart sshd

三、【非常关键】否则会出现"密码正确但登录失败"

很多人卡在这里

👉 只开了 UsePAM yes,但 PAM 认证链不完整

必须正确配置 /etc/pam.d/sshd

直接覆盖(最稳妥方式):

bash 复制代码
cat > /etc/pam.d/sshd <<'EOF'
#%PAM-1.0
auth       required     pam_sepermit.so
auth       include      password-auth

account    required     pam_nologin.so
account    include      password-auth

password   include      password-auth

# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open env_params
session    required     pam_namespace.so
session    optional     pam_keyinit.so force revoke
session    include      password-auth
session    include      postlogin

# ★ 关键:资源限制生效必须有它
session    required     pam_limits.so
EOF

⭐ 核心点说明

  • pam_limits.so
    👉 没有这一行,limits.conf 完全不生效
  • password-auth
    👉 决定"密码是否正确"的真正模块
  • 缺失或顺序错误
    👉 100% 导致密码登录失败

四、验证是否真正生效(一定要重新登录)

⚠️ 重要 :

已登录的 SSH 会话 不会继承新 limits

新开一个 SSH 会话后执行:

bash 复制代码
ulimit -n
ulimit -u

期望输出:

text 复制代码
65535

五、常见故障自检(备用)

1️⃣ 检查 sshd 实际配置

bash 复制代码
sshd -T | egrep 'usepam|passwordauthentication'

2️⃣ 查看认证失败原因

bash 复制代码
tail -n 50 /var/log/secure

3️⃣ 用户是否被 PAM 锁定

bash 复制代码
pam_tally2 --user 用户名

解锁:

bash 复制代码
pam_tally2 --user 用户名 --reset

六、一句话总结(给以后自己看的)

  • 临时调试 :prlimit
  • 永久生效 :limits.conf + pam_limits.so
  • UsePAM yes 必须配合完整 PAM 文件
  • 否则就是"密码正确但登录失败"

相关推荐
wtblszn3 小时前
自动化包装生产线设备可视化管理方案
运维·自动化
心之语歌4 小时前
Tkinter 画布基本梳理
运维·服务器·python
Shulex4 小时前
面向跨境电商多渠道消息系统的技术架构:亚马逊站内信合规对接与自动化执行链路设计
运维·架构·自动化
bloglin999995 小时前
vmware部署centos7启动docker容器后无法访问服务
运维·docker·容器
夜听莺儿鸣5 小时前
502-003_Linux 中断与异常(一):从Linux角度理解中断与异常
linux·中断与异常·linux中断
杨云龙UP6 小时前
TDengine 3.4.2.8 Community 三节点三副本生产集群部署实战(DNode/MNode/taosAdapter/Explorer)
大数据·linux·运维·数据库·tdengine·时序库
梦帮科技6 小时前
领域认知知识库图谱注入:从双式记账图网络到高质量问答对自动化合成流水线
运维·网络·数据库·人工智能·矩阵·架构·自动化
向成科技6 小时前
XC3576H工控主板|深度适配Ubuntu 26.04 LTS,释放边缘AI与工业开发新潜能
linux·人工智能·ubuntu·机器人·硬件·主板·边缘ai
逐流人6 小时前
Ceph分布式存储集群配置与池管理:从配置优先级到PG、复本池与纠删码池
运维·分布式·ceph·云原生·云计算·rados
海宇服务7 小时前
零信任架构实战:基于海宇车型识别精准构建自动化定损网关
运维·人工智能·架构·自动化