一、常见的解决思路概述
在Linux系统中,root账户拥有最高权限,一旦忘记root密码可能导致无法正常进行系统管理操作。不过,不用担心,有多种方法可以解决这个问题,主要思路是通过特定的操作进入可以修改密码的模式,如单用户模式或者救援模式,然后重置root密码。这些方法通常涉及到对系统启动过程的干预,例如在GRUB引导界面进行编辑操作等。不同的Linux发行版可能会有一些细微的差异,但总体的原理是相似的。
二、Ubuntu系统下忘记root密码的解决办法
Ubuntu在安装时未设置root密码的情况
在Ubuntu系统中,如果在安装时未设置root密码,每次开机时root密码都是随机的。若要修改root密码,可以在终端中输入sudo passwd。首先,系统会要求输入当前用户的密码,输入正确后,再输入所要设置的root密码。当显示已成功更新密码后,再使用su命令登录root账户即可。这是一种相对简单的设置root密码的方式,适用于这种特殊的Ubuntu系统安装情况。
忘记Ubuntu登录用户密码(包括root密码)的情况
若忘记root密码,首先需要重启系统,长按Shift/Esc键,直到出现菜单。然后选择Ubuntu高级选项,按回车选中,再回车选中第二条recovery mode即恢复模式。
按下[e]键进入命令编辑状态,找到linux/boot/vmlinuz -.rorecoverynomodeset所在行,将rorecoverynomodeset替换为quiet splash rw init = /bin/bash,按下[F10]或者[Ctrl + x]重启系统。
重启后,使用passwd更改root密码,然后按下[Ctrl + Alt + Delete]重启系统,就可以使用新设置的root密码登录了。
如果忘记的是其它用户密码,同样选择恢复模式,按下回车键,选择第八条root drop to root shell prompt。输入root密码后(如果之前设置过),使用cat /etc/shadow查看用户名,使用passwd命令更改密码即可。
三、CentOS系统下忘记root密码的解决办法
CentOS 6.x系统
重启系统,在启动菜单中选择带有core的一行键入e来进入编辑模式。
进入编辑模式后,可以看到相关的内核信息画面,使用上下键选择最新的内核(例如第二行的kernel),然后再按e。
在rhgb quiet后面加空格,然后键入single,或者直接输入数字1并回车确定。
之后会出现相应界面,此时键入b键启动系统进入单用户模式。
在单用户模式下,使用passwd root来更改root的密码。改完后使用reboot命令重启系统,就可以使用新密码登录了。
CentOS 7系统
在启动grub菜单时,选择编辑选项启动并按键盘e键,进入编辑界面找到Linux16的那一行。
将ro改为rw init = /sysroot/bin/sh,然后按下Ctrl + x,使用单用户模式启动。
使用chroot /sysroot访问系统,然后使用passwd root重置密码。
为了更新系统信息,需要执行touch /.autorelabel命令。
最后执行exit退出chroot环境,再使用reboot重启系统,之后就可以使用新的root密码登录了。
四、基于GRUB引导的通用解决办法(适用于多种Linux发行版)
进入GRUB编辑模式
重启系统后,当出现GRUB界面(这是Linux系统常见的引导装载程序菜单)时,用上下方向键选择忘记密码的那个系统,然后键入e来进入编辑模式。
进入编辑模式后,可以看到一些内核相关的信息,此时再用上下键选择新的内核,然后继续按e键。
修改内核启动参数
在编辑界面找到rhgb quiet这部分内容(不同系统可能会有一些细微差异,但大致位置相似),在其后加空格,然后键入single,或者直接输入数字1并回车确定。这一步操作的目的是让系统进入单用户模式,在单用户模式下,系统的安全限制相对较少,可以方便地修改密码。
按下b键启动系统进入修改后的模式。
修改root密码
进入单用户模式后,如果是基于sysroot的系统(如CentOS 7等),可能需要先执行chroot /sysroot命令切换到真实的系统环境。
然后使用passwd root命令来修改root密码。
修改完成后,对于一些有安全增强机制(如SELinux)的系统,可能还需要执行类似touch /.autorelabel的命令来更新系统信息(例如CentOS 7系统)。
最后执行exit命令退出相关环境(如果有chroot环境则先退出chroot,再退出单用户模式或者救援模式等),然后使用reboot重启系统,就可以使用新的root密码登录了。
五、其他Linux系统下忘记root密码的解决办法
SUSE Linux Enterprise Server (SLES) 11版本
当忘记root密码时,具体的恢复方法虽然参考资料未给出详细步骤,但总体思路也是通过类似进入单用户模式或者救援模式的方式来修改密码。可以尝试按照上述基于GRUB引导的通用解决办法进行操作,如果不行,可能需要参考SUSE Linux官方文档或者社区寻求更针对该版本的解决方法。
Rocky Linux/AlmaLinux系统
编辑内核参数:首先重新启动系统,在grub菜单的第一个条目上,按‘e’键访问GRUB编辑器,添加rd.break enforcing = 0.如果要进入紧急模式,请按Ctrl + x。
重置root密码:要重置root密码,需要访问/sysroot具有读写权限的目录。先执行#mount -o rw,remount /sysroot命令挂载/sysroot为可读写权限。然后执行#chroot /sysroot将目录环境更改为/sysroot,接着使用#passwd root命令设置新的root密码。
设置SElinux Context:执行#touch /.autorelabel命令创建一个.autorelabel隐藏文件,以便在重新启动期间,SELinux检测到此文件并使用适当的SELinux Context重新标记系统上的所有文件。系统重新启动后,就可以使用刚设置的新root密码登录了。
六、预防忘记root密码的措施
密码管理策略
使用密码管理器:可以使用一些专门的密码管理器来存储root密码,这些密码管理器通常具有加密功能,可以安全地保存密码。例如,LastPass、KeePass等密码管理器,它们不仅可以保存Linux系统的root密码,还可以管理其他各种账户的密码。
记录密码:虽然直接记录密码存在一定的安全风险,但可以采用一些加密或者安全的方式记录。例如,将密码经过简单加密(如使用对称加密算法,自己设定一个密钥)后记录在安全的地方,如加密的文档或者只有自己能访问的存储介质中。
定期登录和更新密码
定期以root身份登录系统:即使不需要进行特定的管理操作,也应该定期以root身份登录系统,这样可以避免长时间不使用而忘记密码。例如,可以设定一个月或者一个季度登录一次,检查系统状态的同时也能巩固对root密码的记忆。
定期更新密码:按照安全最佳实践,定期更新root密码。这不仅可以防止因为忘记密码而带来的困扰,还能提高系统的安全性。例如,每半年更新一次root密码,并且设置一个强密码(包含大小写字母、数字和特殊字符)。