CentOS 6.6下root用户ulimit重置:如何实现配置持久化?
解决CentOS 6.6下root用户SSH登录后ulimit配置不持久的问题
我之前也踩过这个坑,尤其是root用户通过SSH密钥免密登录时,limits配置总是莫名其妙被重置,给你几个针对性的解决步骤:
1. 明确limits.conf中root用户的配置
CentOS 6里/etc/security/limits.conf的*通配符默认不包含root用户,所以必须单独为root指定配置条目,示例如下:
root soft nofile 65536 root hard nofile 65536 root soft nproc 65536 root hard nproc 65536
2. 修正90-nproc.conf的root配置
/etc/security/limits.d/90-nproc.conf的优先级高于limits.conf,默认只有普通用户的nproc限制,需要补充root的配置:
root soft nproc 65536 * soft nproc 1024
3. 确保SSHD加载PAM limits模块
通过SSH登录时,sshd默认可能没启用PAM的limits规则,需要修改/etc/ssh/sshd_config:
找到UsePAM行,确保设置为:
UsePAM yes
然后重启sshd服务生效:
service sshd restart
这一步是关键——如果UsePAM为no,SSH登录时完全不会加载系统的limits配置。
4. 排查用户环境变量的覆盖
检查root用户的个人配置文件和全局shell配置,看是否有手动覆盖ulimit的命令:
grep -r "ulimit" /root/.bashrc /root/.bash_profile /etc/profile /etc/bashrc
如果找到类似ulimit -n 1024的行,要么删除,要么修改为你需要的数值。
5. 验证配置效果
注销当前SSH会话,重新登录root后,执行以下命令确认:
ulimit -n # 查看文件句柄限制 ulimit -u # 查看进程数限制
如果仍有问题,可以查看/var/log/secure日志,里面会记录PAM加载limits时的错误信息,帮助定位问题。
内容的提问来源于stack exchange,提问作者Elite_Dragon1337
相关产品推荐
相关产品推荐

