在项目维护过程中,遗忘操作系统用户密码时有发生。时间太久或者项目换人维护都有可能造成密码丢失的情况,本文主要介绍在密码丢失的情况下如何进行恢复。
在Linux操作系统中存在两类用户,分别是root用户和非root用户。root用户是Linux操作系统超级管理员用户,拥有最高的权限,对应Windows系统的Administrator用户。非root用户还可以分为系统用户和普通用户,系统用户由操作系统安装时自动创建或者安装某些服务时自动创建,比如bin、adm、sshd等属于系统用户,但是默认是禁止登录系统的。普通用户常见有hik、oracle、postgres等,属于后期手动创建的用户。
首先,我们来介绍普通用户密码丢失如何处理。如果root用户密码没有丢失,那么我们很方便处理,因为root用户可重置任意用户密码。以hik用户密码丢失举例,使用root用户登录系统,执行“passwd hik”命令按照提示输入新密码即可重置。
[root@test ~]# passwd hik //修改hik用户密码Changing password for user hik.New password: //输入新的hik用户密码 Retypenewpassword://再次输入hik用户密码passwd: all authentication tokens updated successfully.
再次,我们介绍hik用户密码已知但root用户密码丢失的情况。这里有一个前提,那就是HIKOS系统默认给了hik用户sudo权限,sudo权限的作用是让普通用户可以执行root用户才能执行的命令。如果hik没有sudo的权限,或者其他厂商提供的系统,我们在下一节再进行介绍。
[root@test~]#su-hik//切换至hik用户Last login: Mon Jun 1 09:03:08 CST 2020 on pts/0[hik@test~]$id//查看当前用户信息uid=1000(hik) gid=1000(hik) groups=1000(hik),10(wheel)[hik@test~]$sudopasswdroot//执行sudo命令We trust you have received the usual lecture from the local SystemAdministrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility.[sudo]passwordforhik://输入hik用户密码执行sudo后的命令Changing password for user root.Newpassword://输入新的root用户密码Retype new password: //再次输入新的root用户密码passwd: all authentication tokens updated successfully.
最后,介绍所有用户密码均丢失的情况。这种情况下需要重启操作系统进入单用户模式,单用户模式类似Windows的安全模式,无需用户密码即可登录,默认情况系统运行在多用户模式。在CentOS6中,使用init进程启动其他的进程,系统运行模式分为0~6,CentOS7使用systemd代替了init,所以运行模式稍有变化,对应关系如下:
CentOS6CentOS7备注
运
行
模
式
init 0poweroff.target关机init 1rescue.target单用户模式init 2multi-user.target多用户模式init 3init 4init 5graphical.target图形模式init 6reboot.target重启主机
CentOS7中可以使用以下命令进行查询,l开头的文件代表的是链接文件。
[root@test system]# cd /usr/lib/systemd/system[root@testsystem]#ls-al|grep”^l”|greprunlrwxrwxrwx. 1 root root 15 Mar 17 20:52 runlevel0.target -> poweroff.targetlrwxrwxrwx. 1 root root 13 Mar 17 20:52 runlevel1.target -> rescue.targetlrwxrwxrwx. 1 root root 17 Mar 17 20:52 runlevel2.target -> multi-user.targetlrwxrwxrwx. 1 root root 17 Mar 17 20:52 runlevel3.target -> multi-user.targetlrwxrwxrwx. 1 root root 17 Mar 17 20:52 runlevel4.target -> multi-user.targetlrwxrwxrwx. 1 root root 16 Mar 17 20:52 runlevel5.target -> graphical.targetlrwxrwxrwx. 1 root root 13 Mar 17 20:52 runlevel6.target -> reboot.target
??
CentOS7进入单用户模式重置用户密码
按方向键移动光标至linux16开头的行,按要求ro修改为rw,光标移动至UTF-8末尾,增加init=/bin/sh,完成后按Ctrl x启动;
进入单用户后执行passwd修改root密码,不加用户名默认是修改root用户,如果出现乱码小哐哐的话,执行“export LANG=en_US”修改字符集为英文;
回到多用户模式;
CentOS6进入单用户模式重置用户密码
重启操作系统待出现以下界面时出现以下界面时按任意键进入菜单;
修改内核引导信息,修改完成后按回车回到引导菜单;
按字母b进行启动引导;
修改root用户密码并重启回到多用户模式;
以上三种情况由简单到复杂分不同的场景来重置用户密码,Linux操作系统密码应该由数字、大小写字母、特殊符号等无规律可循组合组成,切莫贪图方便记忆设置弱密码,很多安全事件均为因为弱密码被暴力破解而发生,安全无小事。