有许多原因可能导致用户口令的遗失,这对系统管理员而言,可能不是一个问题,只要以Root账号登录,再用Passwd命令更改用户口令就可以了。可是,如果丢失的是Root口令,这又怎么办?难道就束手无策、重装系统?这样不仅费时费力,而且还可能造成重要数据的丢失和应用程序的破坏。显然这种做法并不可取。
有许多原因可能导致用户口令的遗失,这对系统管理员而言,可能不是一个问题,只要以Root账号登录,再用Passwd命令更改用户口令就可以了。可是,如果丢失的是Root口令,这又怎么办?难道就束手无策、重装系统?这样不仅费时费力,而且还可能造成重要数据的丢失和应用程序的破坏。显然这种做法并不可取。
其实,恢复Linux口令并不是一件很难的事情。Linux口令的恢复有2个方面: 一是给用户产生一个新的口令,使用户能够重新登录系统; 二是找出用户原来的口令,而不是以新口令代替旧口令。一般情况下,用户只希望能够再次登录进入系统即可,而不是获得原口令,也就是这里所说的第一个方面,相对而言,这方面要容易实现得多。
Linux口令的恢复是系统维护的一种典型情况,本文中提到的一些方法从系统维护的角度出发,不仅适用于Linux口令的恢复,也适用于因为某些原因不能正常登录进系统时的维护工作,对Linux系统的管理维护有参考作用。
本文中所有提到的恢复Linux口令的方法均在实践中测试通过,所用的Linux系统主要是RedHat Linux For x86,在实际口令恢复中,可能因Linux发行商、发行版本、处理器和硬盘等的不同而略有不同,但相差不会很大。其中一些方法也适用于其他Unix系统口令的恢复,甚至Windows等操作系统口令的恢复。
一、口令恢复途径
下面恢复Linux口令的途径适用于不同的情况,难易度各有不同。
1. 紧急修复模式
在无法启动Linux时,常常需要通过磁盘、光盘或其他方法启动Linux基本环境,进入Linux紧急修复模式。在紧急修复模式下,能够访问硬盘上的Linux系统文件,恢复系统正常,包括恢复口令等。
2. 单用户模式 Linux有多个运行级别,如单用户模式、无网络服务多用户模式、完全多用户模式和X11图形多用户模式等运行级别。单用户模式是指系统运行在惟一用户 ——Root用户模式下,进入此模式时,系统只是加载了可运行的最低软硬件配置,以Root直接进入,没有口令验证。
在单用户模式下,可以用passwd命令来更改用户口令,也可以直接对/etc/passwd等账户口令文件进行读写,达到口令恢复的目的。
3. 修改口令文件
Linux口令文件有2种保存形式: 一种是把账户信息和经加密后的口令密文都保存在/etc/passwd文件中,此形式不够安全,在早期Unix中采用;另一种是把账户信息和口令密文分开存放,/etc/passwd文件用于保存账户信息,/etc/shadow文件用于保存口令密文。至于采用何种保存形式和加密算法,可以用/usr /sbin/authconfig程序来设置。
对于没有shadow的passwd文件,只要把相应账户的口令字段删除,即可不经口令验证直接登录系统,例如某passwd文件的root账户如下:
root:$dPTzzYkE$Zd3Vs6yCu
VH8RC1gwKXX01:0:0:root:/root:/bin/bash
将其修改为:
root::0:0:root:/root:/bin/bash
如果是有shadow的passwd文件,其口令字段以“x”字母代替,口令密文保存在Shadow文件中。可以删除passwd文件中的“x”字母,或者删除shadow文件中的口令密文,都可以使相应用户不经口令验证直接登录系统,达到口令恢复的目的。