【linux学习笔记】:忘记root密码时,如何修改root密码。
[root@xiaoluo ~]# cat /etc/inittab
# inittab is only used by upstart for the default runlevel.
#
# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
素描画入门教程#
# System initialization is started by /etc/f
#
# Individual runlevels are started by /etc/f
#
# Ctrl-Alt-Delete is handled by /etc/f
快乐大本营金敏智
#
# Terminal gettys are handled by /etc/f and /etc/f,
# with configuration in /etc/sysconfig/init.
#
# For information on how to write upstart event handlers, or how
# upstart works, see init(5), init(8), and initctl(8).
#
# Default runlevel. The runlevels used are:
#  0 - halt (Do NOT set initdefault to this)
#  1 - Single user mode
#  2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#  3 - Full multiuser mode
2022跨年祝福语#  4 - unused
#  5 - X11
#  6 - reboot (Do NOT set initdefault to this)
#
id:5:initdefault:
这⾥我们看到系统的默认启动级别是5,也就是有图形界⾯的那个。体内湿气重怎么办
但是在现实⽣活中可能会出现这种问题,我们可能忘记了⼀台主机的root密码,但是我们⼜需要通过root⽤户登录该系统去处理⼀些事情,这个时候我们怎么办呢?我们看到在
Linux的启动级别中有⼀个单⽤户模式启动,也就是启动级别1,当我们如果忘记了root⽤户的秘密,但是⼜需要修改root密码的时候,这个时候我们就要通过在启动的时候给系统
的内核传递⼀个参数 1 或者 single 来告诉内核,我需要以单⽤户模式登陆操作系统,这个时候我们就
能能够通过passwd 命令来重设root⽤户的密码。具体操作是怎样的呢?咱
们有图有有真像!!
⾸先我们重启我们的系统(我这⾥是CentOS),然后在界⾯启动时让它停留⼀下,随便按⼀下键盘上的⼀个键,此时就会进⼊到操作系统配置引导界⾯
还记得上⼀篇随笔⾥⾯/boot/f这个⽂件⾥的第⼀个 title 字段吗?没错,每⼀个title都是⼀个操作系统的配置选项,这⾥我们只有⼀个,也就是上⾯图⽚显⽰的那
于途因为英雄池深个,如果有多个title字段,这⾥就会列出来供我们选择不同的操作系统。
好了,通过下⾯的英⽂提⽰我们发现按下键盘上的 e 键就可以进⼊到编辑界⾯
看到这个界⾯是不是很熟悉呢?没错,这三个选项就是我们 /boot/f ⽂件⾥的配置信息,我们通过查看这个⽂件的内容来看⼀下:
[root@xiaoluo ~]# cat /boot/f
# f generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You do not have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /, eg.
#          root (hd0,1)
#          kernel /boot/vmlinuz-version ro root=/dev/sda2
#          initrd /boot/initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,1)/boot/grub/
hiddenmenu
title CentOS (2.6.32-358.el6.x86_64)
root (hd0,1)
kernel /boot/vmlinuz-2.6.32-358.el6.x86_64 ro root=UUID=6e24ec7a-2d19-466e-bacc-92750b1f4bef rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTA        initrd /boot/initramfs-2.6.32-358.el6.x86_64.img
这时我们需要将光标移动到第⼆个选项,也就是Linux内核那⾥,同样按下键盘上的 e 键进⼊到编辑界⾯,此时我们在后⾯追加参数 1 或者参数 single就可以告诉Linux系统的内
核,我需要以单⽤户的模式登陆该系统。
然后我们回车,进⼊到上层的界⾯,此时按下键盘上的 b 键就是启动操作系统,此时我们的Linux操作系统就是以单⽤户的模式登陆了。我们发现系统⾮常快速的就进⼊到了命令
⾏模式下的界⾯,因为单⽤户模式是不会启动任何服务的,同时也不需要输⼊root密码,就能直接进⼊到root⽤户下,此时我们就可以通过passwd 命令来重置我们的root⽤户的
密码
然后我们通过exit命令就可以退出单⽤户模式,此时操作系统内核就会根据我们之前看到的 /etc/inittab 配置⽂件中设置的默认启动级别来启动。
这样我们就可以通过在进⼊GRUB引导时在内核参数⾥⾯追加参数 1 或者 single 来进⼊单⽤户模式来修改我们的root⽤户密码。
但是,请注意,因为上⾯的操作只需要通过单⽤户模式就可以修改我们的root⽤户密码,所以说⼀旦别⼈有机会接触到我们的服务器主机,那么root⽤户的密码就很容易被别⼈修
改了,这样当然是⾮常的不安全的,所以我们还是需要通过GRUB加密来对开启⼀层密码防护。
通过在 /boot/f 启动配置中加⼊以下类似的代码来对grub进⾏加密:
password --md5 $1$6H92B1$PzoPV63kTMk4uEhZQTAZ//
其中后⾯那⼀串是MD5加密算法,这个我们可以通过 grub-md5-crypt 这个命令来⽣成加密后的算法
[root@xiaoluo ~]# grub-md5-crypt
Password:
Retype password:
$1$UGA2B1$DriIdrVTEgVg95fHHX4H./
[root@xiaoluo ~]#
在上⾯的Password、Retype password那⾥输⼊我们需要设置的密码,然后就能⽣成MD5算法加密后的密码,我们将这个加密后的密码添加到
/boot/f 这个配置⽂件⾥即可,例如:
[root@xiaoluo ~]# vi /boot/f
password --md5 $1$UGA2B1$DriIdrVTEgVg95fHHX4H./
# f generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You do not have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /, eg.
#          root (hd0,1)
#          kernel /boot/vmlinuz-version ro root=/dev/sda2
#          initrd /boot/initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,1)/boot/grub/
hiddenmenu
title CentOS (2.6.32-358.el6.x86_64)
root (hd0,1)
kernel /boot/vmlinuz-2.6.32-358.el6.x86_64 ro root=UUID=6e24ec7a-2d19-466e-bacc-92750b1f4bef rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTA        initrd /boot/initramfs-2.6.32-358.el6.x86_64.img
这个时候我们再次重启⼀下系统,试着进⼊到GRUB⾥⾯来看看,
我们发现下⾯的英⽂提⽰已经变了,之前可以按键盘上的 e 键进⼊到GRUB⾥⾯,现在按 e 键已经没⽤了,此时提⽰我们按 p 键来输⼊GRUB的密码才能进⼊到GRUB⾥⾯
此时我们输⼊之前设置的GRUB密码即可,然后界⾯就会进⼊到我们熟悉的修改GRUB那⾥了。
所以说通过GRUB的加密算法我们可以对进⼊GRUB进⾏加密,这样就能防⽌别⼈恶意进⼊单⽤户模式,从⽽修改root密码了!!
当然,如果我们连这个GRUB的秘密都忘记的话,并且⼜忘记了root密码,那就真的不能登陆到root⽤户了。。。。
本篇随笔主要记录了如何通过单⽤户模式来修改root⽤户的密码,并通过设置grub的MD5加密算法来对进⼊grub进⾏加密,从⽽限制别⼈轻易进⼊单⽤户模式,在以后的学习
Linux过程中,将继续记录学习Linux的⼼得迈克尔杰克逊的歌