虚拟机linux系统忘记密码修改root或其他用户密码的方法

虚拟机linux系统忘记密码修改root或其他用户密码的方法

本文基于centos7环境进行操作,由于centos的版本是有差异的,继续之前请确定好版本。

解决方法一(可能存在权限问题)

(1) 重启系统,在开机过程中,快速按下键盘上的方向键↑和↓。目的是告知引导程序,我们需要在引导页面选择不同的操作,以便让引导程序暂停

以下是暂停后的界面,可以查看下方的英文可知↑和↓的作用。

(2) 使用↑和↓将选择行设置为第一行(背景高亮即为选中),按下键盘上的e,进入编辑模式

(3) 将光标一直移动到 LANG=en_US.UTF-8后面,空格,再追加init=/bin/sh。这里特别注意,需要写在UTF-8后,保持在同一行,并注意空格。有些虚拟机由于屏幕太小,会自动添加\换行,这个是正常的

1
init=/bin/sh

(4) 按下CTRL+X进行引导启动,成功后进入该界面

(5) 输入以下命令

  • 挂载根目录
1
mount -o remount, rw /
  • 选择要修改密码的用户名,这里选择root用户进行修改,可以更换为你要修改的用户
1
passwd root
  • 输入2次一样的新密码,注意输入密码的时候屏幕上不会有字符出现。

如果输入的密码太简单,会提示警告(BAD PASSWORD:Thepassword fails the dictionary check – it is too simplistic/systematic),可以无视它,继续输入密码,不过建议还是设置比较复杂一些的密码,以保证安全性

  • 如果已经开启了SElinux,则需要输入以下命令
1
touch /.autorelabel
  • 最后输入以下命令重启系统即可
1
exec /sbin/init 

解决方法二(未测试)

(1)(2)(3)(4) 前四步同方法一

(5) 输入以下命令

输入以下命令

  • 挂载根目录
1
mount -o remount, rw /
  • 选择要修改密码的用户名,这里选择root用户进行修改,可以更换为你要修改的用户
1
passwd root
  • 输入2次一样的新密码,注意输入密码的时候屏幕上不会有字符出现。

如果输入的密码太简单,会提示警告(BAD PASSWORD:Thepassword fails the dictionary check – it is too simplistic/systematic),可以无视它,继续输入密码,不过建议还是设置比较复杂一些的密码,以保证安全性

  • vi etc/selinux/config 把 enforcing 改为 disable
1
vi etc/selinux/config
  • 最后输入以下命令重启系统即可
1
exec /sbin/init 或 exec /sbin/reboot

方法一解决权限问题,同时也是方法二更改enforcing为disable

  • 查看SElinux状态
1
2
3
4
5
6
7
8
9
方法1:
[root@localhost ~]# /usr/sbin/sestatus -v
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: enforcing

方法2:
[root@localhost ~]# getenforce
Enforcing
  • 关闭SELinux
1
2
3
4
5
6
7
8
9
1、临时关闭(不用重启机器):
setenforce 0 #设置SELinux 成为permissive模式
#setenforce 1 #设置SELinux 成为enforcing模式


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

仅仅求改某个文件的权限?

1
2
chown root:root /usr/bin/passwd
chmod u=rwx,go=rx,u+s /usr/bin/passwd