背景
今天在Linux Centos7环境的使用中,突然遇到了这个问题,为了以后再次遇到后可以快速的解决问题,特此记录。
首先是无法进入系统,然后通过单用户进入系统后修改密码,然后遇到该问题。
单用户进入系统
在如下位置添加init=/bin/bash
后按Ctrl
+ X
重启系统
进入bash页面修改密码遇到问题
LANG=EN #防止乱码
passwd root
排查问题
一半来讲出现这个问题的主要原因如下:
- 空间不足
- 密码文件不同步
- 密码文件不可改
首先我们查看第一种,空间不足。
df
可以看到磁盘使用率才41%,排除该问题
第二种,密码文件不同步。
我们通过比对/etc/passwd
和/etc/shadow
两个文件,并未发现问题,两个文件的用户一一对应。而且出现问题的这台机器是从一个正常的机器克隆出来的。
第三种 密码文件不可改
我们可以通过如下命令快速比对
lasttr /etc/passwd /etc/shadow
根据命令的输出结果进行查看,如果出现 i ,则代表该文件不能被修改。
如果出现 a ,则代表文件不能被删除,原内容无法修改,只能对其进行增加。
解决方法:
出现i
:
bash chattr -i /etc/passwd /etc/shadow
出现a
:
bash chattr -a /etc/passwd /etc/shadow
但很明显,这三种都不是。
那我这个问题就属于第四种,文件系统不可写。
对于这种,我们直接重新挂载,并设置为可写即可。命令如下
mount -o remount,rw /