Linux系统忘记root密码解决办法
Debian Root密码忘记
开机 grub 菜单下进入单用户模式进行修改密码/修改系统文件。
解决过程
注:本教程适用于 Debian 7+ 8+ 9+
1. 首先。重启一下系统。在开机 grub 内核选择菜单那里,迅速按“e”。
2. 将光标移动到“linux”开头的那一行,将原来的“ro”改为“rw”,并在后面追加“init=/bin/sh”。改完后按 Ctrl+X 保存并启动系统。
3. 成功进入单用户模式。看到了熟悉的 #。
4. 输入passwd root重置密码。会要求输入两次。并且密码是看不到的。成功后会提示 successfully。
5. 好啦。硬重启系统。不要执行 exit,否则内核会 panic。
CentOS 重置 Root 密码
开机grub菜单下进入单用户模式进行修改密码/修改系统文件。
解决过程
注:本教程只适用于 CentOS 7+ / RHEL 7+ / Fedora 20+
1. 首先。重启一下系统。在开机 grub 内核选择菜单那里,迅速按“e”。
2. 将光标移动到“linux 16”开头的那一行,将原来的“ro”改为“rw”,并在后面追加“init=/sysroot/bin/sh”。改完后按 Ctrl+X 保存并启动系统。
3. 成功进入单用户模式。看到了熟悉的#。
4. 输入 chroot /sysroot 切换根目录。
5. 输入 passwd root 重置密码。会要求输入两次。并且密码是看不到的。成功后会提示 successfully。
6. 输入 touch /.autorelabel 更新一下系统信息。
7. 执行 exit 退出 chroot 模式。
8. 好啦。硬重启系统。不知道为什么在这个模式下是没有办法使用 reboot 命令的。只能硬重启系统了。
如果以上不能解决,可以使用下面方法修改,适用于最新系统:
1、编辑修改两处:ro改为rw,在LANG=en_US.UFT-8后面添加init=/bin/sh
2、按Ctrl+X启动,输入命令 passwd 修改密码
3、由于selinux开启着的需要执行以下命令更新系统信息,否则重启之后密码未生效
touch /.autorelabel
4、输入以下命令重启系统
exec /sbin/init
Ubuntu Root密码忘记
开机 grub 菜单下进入单用户模式进行修改密码/修改系统文件。
解决过程
注:本教程适用于 Ubuntu 16+ Ubuntu20+
1. 启动系统,在启动过程中,反复按Esc键或者shift键(反复按或者长按都可以),直到出现grub引导界面。
2.选第二行Ubuntu的高级选项菜单enter进入(有的版本显示的是Advanced options for Ubuntu)。
3.选择(recovery mode),按e编辑Grub的启动提示符。
4.按e编辑Grub的启动提示符把ro后面的 recovery nomodeset改为 quiet splash rw init=/bin/bash
5.修改完后,按ctrl+x或者F10启动系统,修改完后,按ctrl+x或者F10启动系统,然后就可以passwd命令修改密码。
6.重启系统就可以正常登录了。
总结:以上均为管理员或者有管理员权限的账号,比如root密码忘记,普通用户密码忘记可以直接用管理员权限账号直接修改。以上均为常规方法修改忘记密码的系统操作方法,也是官方的操作方法。
详细介绍Linux /etc/shadow文件
与Linux /etc/passwd文件不同,Linux /etc/shadow文件是只有系统管理员才有权利进行查看和修改的文件,系统管理员应该弄明白Linux /etc/shadow文件中每个字符段的相应的意义,清楚管理时的具体意义。
Linux /etc/shadow文件中的记录行与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生。它的文件格式与/etc/passwd类似,由若干个字段组成,字段之间用“:”隔开。这些字段是:
登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
1)“登录名”是与/etc/passwd文件中的登录名相一致的用户账号
2)“口令”字段存放的是加密后的用户口令字,长度为13个字符。如果为空,则对应用户没有口令,登录时不需要口令;如果含有不属于集合{./0-9A-Za-z}中的字符,则对应的用户不能登录。
3)“最后一次修改时间”表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。例如在SCOLinux中,这个时间起点是1970年1月1日。
4)“最小时间间隔”指的是两次修改口令之间所需的最小天数。
5)“最大时间间隔”指的是口令保持有效的最大天数。
6)“警告时间”字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。
7)“不活动时间”表示的是用户没有登录活动但账号仍能保持有效的最大天数。
8)“失效时间”字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。
下面是/etc/shadow的一个例子:
#cat/etc/shadow
root:Dnakfw28zf38w:8764:0:168:7::: (Dnakfw28zf38w就是加密后的root密码)
用linux的livecd启动系统,挂载硬盘后可以直接编辑shadow,两个:中间的加密root密码删掉,重启后就可以直接输入root回车实现免密码直接登录,登录后用passwd root修改root密码即可,此方法适用所有Linux系统。
建议尽量用官方grub修改启动的方法修改密码。修改shadow文件可能会造成其他问题,目前发现Debian系统可能会ssh无法登录。
常用Linux Live cd的地址
Ubuntu PE Live CD with MATE Desktop(一个精简的定制Ubuntu,体积小,使用非常方便)
Ubuntu PE for CDROM/USB:
Ubuntu 22.04 LTS Live PE (64-bit) (English + Chinese Simplified, ~506MB):
Ubuntu 20.04 LTS Live PE (64-bit) (English + Chinese Simplified, ~585MB):
Ubuntu 18.04 LTS Live PE (64-bit) (English + Chinese Simplified, ~497MB, No WimTool Support):
Ubuntu 16.04 LTS Live PE (64-bit) (English + Chinese Simplified, ~381MB, No WimTool Support):
Ubuntu 22.04 LTS Live PE Terminal Core (64-bit) (English, ~145MB):
Linux Mint(最常见的Ubuntu发行版,开箱即用)
国内的系统太多了,优麒麟,深度等定制版,还有puppy,tiny core linux等其他系统非常多,自己可以测试。
ESXI系统清除密码:使用任意Linux启动盘挂载Esxi系统分区,然后修改修改state.tgz里面的shadow文件,即可清除root密码,直接登录,建议使用上面bionic-mate-amd64-20200222.iso直接打开压缩包修改最简单。
当然也可以通过CentOS7系统的U盘启动或者Ubuntu系统的U盘启动,通过救援模式,和上面的livecd效果一样。
① 服务器通过U盘启动,进入shell命令行,选择“Troubleshooting ->”选择“Rescue a CentOS system” 输入“1”,然后回车即可进入shell命令行
② 挂载ESXI的目录,修改/etc/shadow文件root用户为空密码
mkdir -p /mnt/sdax
mount /dev/sda5 mnt/sdax
cp /mnt/sdax/state.tgz /tmp
cd /tmp
tar xf state.tgz #这个解压会解出一个local.tgz文件
tar xf local.tgz #这个解压会解出一个在/tmp/etc文件夹
vi etc/shadow #修改成下图,root为空密码
注意:如果/tmp/etc/shadow文件不存在,可从/etc/shadow拷贝过来。然后内容修改成下图即可
#修改完shadow文件后,再拷贝回去
cd /tmp
rm /tmp/state.tgz /tmp/local.tgz
tar czf local.tgz etc/
tar czf state.tgz local.tgz
cp state.tgz /mnt/sdax/
reboot
③ ESXI设备重启,后台登陆后修改新的密码
#按F2直接回车,通过空密码进行登陆
#Configure Password修改root登陆密码