Linux系统忘记密码,别再想重装系统了,这样做不费电脑~

420 阅读3分钟

很多朋友经常会忘记Linux系统的root密码,linux系统忘记root密码的情况该怎么办呢?

重新安装系统吗?当然不用!最简单的方法:进入单用户模式更改一下root密码即可。

步骤如下:

重启linux系统

3 秒之内要按一下回车,出现如下界面

然后输入e

在 第二行最后边输入 single,有一个空格。具体方法为按向下箭头移动到第二行,按"e"进入编辑模式

在后边加上single 回车

最后按"b"启动,启动后就进入了单用户模式了

此时已经进入到单用户模式了,你可以更改root密码了。更密码的命令为 passwd

使用系统安装光盘的救援模式

救援模式即rescue ,这个模式主要是应用于,系统无法进入的情况。如,grub损坏或者某一个配置文件修改出错。如何使用rescue模式呢?

光盘启动,按F5 进入rescue模式

输入linux rescue 回车

选择语言,笔者建议你选择英语

选择us 键盘

这里问你是否启动网络,有时候可能会联网调试。我们选no

这里告诉我们,接下来会把系统挂载在/mnt/sysimage 中。

其中有三个选项:

  • Continue 就是挂载后继续下一步。
  • Read-Only 挂载成只读,这样更安全,有时文件系统损坏时,只读模式会防止文件系统近一步损坏。
  • Skip就是不挂载,进入一个命令窗口模式。

这里我们选择Continue。

至此,系统已经挂载到了/mnt/sysimage中。接下来回车,输入chroot /mnt/sysimage 进入管理员环境。

提示: 其实也可以到rescue模式下更改root的密码的。这个rescue模式和windows PE系统很相近。

当运行了chroot /mnt/sysimage/ 后,再ls 看到目录结构和原来系统中的目录结构是一样的。

没错!现在的环境和原来系统的环境是一模一样的。你可以输入exit 或者按Ctrl + D退出这个环境。然后你再ls 看一下

这个目录其实就是rescue模式下的目录结构,而我们的系统文件全部在 /mnt/sysimage目录下。

有的朋友还会直接通过修改密码来解决,修改密码的过程中会出现什么问题呢?怎么解决?

修改Linux系统的root用户密码时,执行passwd root,出现了以下情况,修改密码失败:

# passwd root
Changing password for user root.
New password:
Retype new password:
passwd: Authentication token manipulation error

到网上搜了下,有的说是因为inodes用完,也就是根分区满了引起的,但执行df -i并非找个原因:

# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda2 6406144 58534 6347610 1% /
tmpfs 8242797 2 8242795 1% /dev/shm

继续找答案,按照网上的案例检查用户密码相关的系统文件/etc/passwd和/etc/shadow,发现这两个文件权限有i选项,查询结果如下:

# lsattr /etc/passwd
—-i——–e- /etc/passwd
# lsattr /etc/shadow
—-i——–e- /etc/shadow

备注:在Linux系统里,文件有i选项则表示不得对其做任何的修改,这也就导致了修改密码失败。

要解决该问题,则需要执行chattr -i命令,将以上两个文件i权限撤销掉

# chattr -i /etc/passwd
# chattr -i /etc/shadow
# lsattr /etc/passwd
————-e- /etc/passwd
# lsattr /etc/shadow
————-e- /etc/shadow

然后再执行passwd修改密码,

# passwd
Changing password for user root.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

修改完密码后,为了安全起见,可以执行chattr +i为用户密码系统文件增加i权限

# chattr +i /etc/passwd
# chattr +i /etc/shadow
# lsattr /etc/passwd
—-i——–e- /etc/passwd
# lsattr /etc/shadow
—-i——–e- /etc/shadow