linux忘记密码怎么办|单用户模式重置服务器root密码实操
上周凌晨赶项目收尾,服务器突然掉线重启,开机后彻底记混登录口令,当时满脑子都在纠结linux忘记密码怎么办,手头没有备用密钥,也没人能远程协助,只能自己硬啃操作。
一开始犯了最蠢的错。直接反复输密码重试。
盯着黑屏的登录界面重复输入记忆里的几组密码,试了十几遍全是认证失败,当时下意识以为是系统故障,甚至重启了三次服务器,越试越慌,后台还有未保存的项目配置,生怕频繁重启把系统文件搞坏,折腾十多分钟,完全没半点进展,只会卡在登录界面原地打转,根本进不去系统操作任何内容,白白浪费了大半段时间,情绪也跟着越来越烦躁。
后来才反应过来,普通登录界面卡死没用,必须进单用户模式修改密码。开机的时候狂按shift键,调出GRUB引导菜单,这一步很多新手都会踩坑,服务器默认开机是直接跳过引导界面进入系统的,不手动连续按键根本看不到任何修改入口,当初就是不知道这一点,卡了超级久。
选中当前正在使用的内核版本,按e进入编辑模式,页面会跳出密密麻麻的英文代码,不用逐行看懂、不用纠结陌生参数,只需要精准找到以linux16开头的那一行,把里面的ro权限改成rw权限,再在这一行的末尾手动加上init=/sysroot/bin/sh,全程就这两处修改,多改动任何字符都会导致后续操作失效。
改完之后直接按ctrl+x进入临时shell环境。
进入之后屏幕会变成sh-4.4#的命令行状态,这时候必须执行chroot /sysroot切换系统根目录,太多人卡在这里翻车,不切换目录直接输入改密命令,系统会提示找不到用户,所有操作全部白费。切换完成后,输入passwd root指令,随后录入新密码、二次确认密码,这里要注意,密码输入的时候屏幕不会显示任何字符,不是操作出错,是linux的安全隐藏机制,我当时不知情,还以为键盘失灵,反复输入了好几次。
密码确认修改完成后,一定要执行touch /.autorelabel命令,开启SELinux上下文更新,这步是最容易被忽略的关键步骤,省略的话,重启后会直接锁死登录,刚改好的密码也完全用不了。做完这步,依次输入exit退出临时环境、reboot重启服务器,静静等待系统开机就行。
重启完成后,用新设置的密码顺利登录系统,后台搁置的项目配置也完好无损。忙完这一堆繁琐操作,窗外的天已经泛起了鱼肚白,随手关掉闪烁的命令行窗口,瘫在电脑前没再动一下。