centos7重置密码

CentOS 7&RHEL 7进入单用户方式和重置密码方式发生了较大变化,GRUB由b引导变成了ctrl+x引导。

centos重置密码主要有rd.break和init两种方法。

rd.break方法:

1、启动的时候,在启动界面,相应启动项,内核名称上按“e”;
2、进入后,找到linux16开头的地方,按“end”键到最后,输入rd.break,按ctrl+x进入;
3、进去后输入命令mount,发现根为/sysroot/,并且不能写,只有ro=readonly权限;
4、mount -o remount,rw /sysroot/,重新挂载,之后mount,发现有了r,w权限;
5、chroot /sysroot/ 改变根;
(1)echo RedHat|passwd –stdin root 修改root密码为redhat,或者输入passwd,交互修改;
(2)还有就是先cp一份,然后修改/etc/shadow文件
6、touch /.autorelabel 这句是为了selinux生效
7、ctrl+d 退出
8、然后reboot
至此,密码修改完成

init方法:

  1. 启动系统,并在GRUB2启动屏显时,按下e键进入编辑模式。
  2. 在linux16/linux/linuxefi所在参数行尾添加以下内容:init=/bin/sh
  3. 按Ctrl+x启动到shell。
  4. 挂载文件系统为可写模式:mount –o remount,rw /
  5. 运行passwd,并按提示修改root密码。
  6. 如何之前系统启用了selinux,必须运行以下命令,否则将无法正常启动系统:touch /.autorelabel
  7. 运行命令exec /sbin/init来正常启动,或者用命令exec /sbin/reboot重启

passwd报错为Linux passwd: 拒绝权限(Permission denied)

原因1:/usr/bin/passwd 权限异常

1
2
3
4
5
6
正常情况下的权限:
ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 34392 2009-05-22 16:03 /usr/bin/passwd
修复命令:
chown root:root /usr/bin/passwd
chmod u=rwx,go=rx,u+s /usr/bin/passwd

原因2:SELinux 未关闭

2.1.查看SELinux状态
方法1:

1
2
3
4
[root@localhost ~]# /usr/sbin/sestatus -v
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: enforcing

方法2:

1
2
[root@localhost ~]# getenforce
Enforcing

2.2.关闭SELinux
1、临时关闭(不用重启机器):

1
2
setenforce 0    #设置SELinux 成为permissive模式
#setenforce 1 #设置SELinux 成为enforcing模式

2、修改配置文件需要重启机器: vi /etc/selinux/config 将SELINUX=enforcing改为SELINUX=disabled 重启

排查

1
2
lsattr /etc/passwd /etc/shadow,检查是否有i属性,如果有i属性,则文件无法修改删除。
删除+i权限,chattr -i /etc/passwd /etc/shadow
1
2
3
Lsattr /usr/bin/
lsattr /usr/bin/passwd
chattr -i lsattr /usr/bin/ lsattr /usr/bin/passwd

一般权限问题基本解决,如果还是不行建议检查是否有安装加密软件。

注:

还有使用插入镜像的处理方式,这钟一般是无法进入内核选项界面时使用,一般机房常用,可以参考教程:https://www.linuxidc.com/linux/2019-08/160366.htm