“我忘记了 root 密码!”(一)
只要能访问控制台键盘,不需要 root 密码也可以启动系统并以 root 帐号登录。 (这里假设没有 BIOS 密码或 lilo 之类的启动引导器密码用于控制系统启动。)
下面是一个不需要额外的启动盘或对 BIOS 启动设置进行修改的过程。这里的“Linux”是代表在 Debian 默认安装系统中启动 Linux 内核的标签。
在 lilo 的启动屏幕中,当 boot: 一出现时 (在某些系统中,您必须按 shift 键以阻止自动启动;如果 lilo 使用 framebuffer,您需要按 TAB 键才能看到自己输入的选项),就输入:
boot: Linux init=/bin/sh
这会让系统启动内核并运行 /bin/sh 而非其标准的 init。现在你已获得 root 权限和一个 root shell。由于当前 / 是以只读方式挂载,而其它的硬盘分区均未挂载,故你必须完成下列步骤才能获得一个有适当功能的系统。
init-2.03# mount -n -o remount,rw /
init-2.03# mount -avt nonfs,noproc,nosmbfs
init-2.03# cd /etc
init-2.03# vi passwd
init-2.03# vi shadow
(如果 /etc/passwd 文件中所有用户的第二个域的数据都为“x”,就表明系统使用了影子(shadow)密码,必须编辑 /etc/shadow。)要删除 root 密码,请编辑密码文件中第二个数据域,将它设置为空白。这样重启系统不用密码就能登录到 root。当系统启动进入 runlevel 1 时,Debian(至少是 Potato 以后的版本)需要密码,一些较老的版本则不需要。
在 /bin 下装一个小编辑器是个好习惯,因为有时 /usr 是无法访问的。
另外可以安装 sash 软件包,当系统无法启动时,还可执行:
boot: Linux init=/bin/sash
当 /bin/sh 不可用时,sash 可作为 sh 的交互式替代品,它是静态链接,内建了许多标准工具(在系统提示符下输入“help”可获得参考列表)。
“我忘记了 root 密码!”(二)
从急救盘启动系统。假设 /dev/hda3 是原始 root 分区,可用下面的方法编辑密码文件,与上述方法一样容易。
# mkdir fixit
# mount /dev/hda3 fixit
# cd fixit/etc
# vi shadow
# vi passwd
与上面的方法相比,该方法的好处在于不需要知道 lilo 密码(如果有的话)。但如果系统没有预先设置为从软盘或 CD 启动,就需要访问 BIOS 的权限。
推荐方法:
如果您安装的boot loader是 LILO:
当系统开机出现 LILO: 提示符时,输入 linux single
当机器启动后,直接输入 passwd root 命令重设 root 用户密码即可。
如果您安装的boot loader是 GRUB:
当系统开机出现 GRUB: 的图形界面时,选择你要进入的系统,按字母 e 编辑
下一个画面,选中含有 kernel 单词的那一行并按字母 e 编辑
在这一行的末尾添加 字母 s 或者 S 或者 1 回车
这是屏幕返回上一屏,并且能看到我们所做的改变
按字母 b 引导机器在单用户模式下
输入 passwd root 命令重设 root 用户密码即可。
别的方法:
用安装光盘引导系统,进入linux rescue模式,并自动挂载原根分区为 /mnt/sysimage/
chroot /mnt/sysimage
passwd root