问题概述及解决
问题描述
Centos 7 系统 优化系统内核后,账户无法登录(输入的账号和密码均正确,绝对没有错误!!,也没有禁止登录!!)。 报错为:Permission denied。
优化内核内容为:
cat /etc/security/limits.conf * soft nofile 10000000 #错的,千万别用 * hard nofile 10000000 #错的,千万别用 * hard nproc 10000000 #错的,千万别用 * soft nproc 10000000 #错的,千万别用
报错截图:
出现上述问题,是因为在优化内核参数时多输入了一个0。
问题解决
进单用户模式将/etc/security/limits.conf 中的参数改为系统可承受的值,经过多次测验,最大可允许的数值为1000009。
问题发现及排查
问题发现
公司视频项目在建设开始,对Centos系统部署完成,并进行系统内核调优,重启系统后,发现账户无法登录。确定输入的密码肯定正确,但是报错Permission denied。
问题排查
第一次尝试
进入单用户模式,修改账户密码。
在启动页面,按键 ‘e' 进入编辑
按向下移动光标,跳转到最后,找到’ro‘ 修改为 'rw init=/sysroot/bin/sh' 【注意,输入时没有引号】
如下图
按Ctrl-x 进行重启进入单用户模式
输入执行 chroot /sysroot
执行passwd root 修改密码【此处截图,中文显示异常,请忽略】
执行touch /.autorelabel
如果不执行,密码不会生效。
按Ctrl+D,执行reboot重启生效。
输入账户密码,依旧失败 ,报错依旧为 Permission denied。
至此第一次尝试失败
第二次尝试
依旧进入单用户模式,具体过程不重复描述;进入系统,查看/var/log/secure
如上图,报错内容中有一条很明显:Could not set limit for 'nofile' Operation not permitted 【我英语很烂,就不妄加翻译了】。
通过以上报错,我们定位到问题出在/etc/security/limits.conf 中配置的 nofile打开数限制值太大。
cat /etc/security/limits.conf * soft nofile 10000000 #错的,千万别用 * hard nofile 10000000 #错的,千万别用 * hard nproc 10000000 #错的,千万别用 * soft nproc 10000000 #错的,千万别用
于是对上述配置进行修改【去掉一个0】
cat /etc/security/limits.conf * soft nofile 1000000 * hard nofile 1000000 * hard nproc 10000000 * soft nproc 1000000
按Ctrl+D,执行reboot重启生效。
输入账户密码,成功登录。
至此,问题成功定位并解决。
总结
回看问题排查的过程,我们走了一些弯路。其实我们在尝试排错的时候,应该首先想到去查看日志,看一下具体报错内容。
话外
1、如果是账户密码错误 报错信息其实是 Login incorrect
2、在写下这篇总结的时候,我特意尝试去查询 nofile 能够设置的最大值究竟是多少,但是并没有查到结果。于是我尝试去测试这个值最大限度。经过多次尝试 发现 该值最大能设置为1000009,我推测nproc最大应该也是1000009。对此,我这种半路出家的门外汉真的是不清楚,如果有大佬了解这其中的缘由,还请能够在评论区给予解答。在此,非常感谢!