这里有新鲜出炉的 Linux 常用命令,程序狗速度看过来!
Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 UNIX 工具软件、应用程序和网络协议。
这篇文章主要介绍了 Linux 学习之 CentOS(二十二)-- 进入单用户模式下修改 Root 用户的密码,有需要的可以了解一下。
在上一篇随笔里面详细讲解了 Linux 系统的启动过程、,我们知道 Linux 系统的启动级别一共有 6 种级别,通过 /etc/inittab 这个文件我们就能看到:
- [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 / init / rcS.conf##Individual runlevels are started by / etc / init / rc.conf##Ctrl - Alt - Delete is handled by / etc / init / control - alt - delete.conf##Terminal gettys are handled by / etc / init / tty.conf and / etc / init / serial.conf,
- #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#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/grub/grub.conf 这个文件里的第一个 title 字段吗? 没错,每一个 title 都是一个操作系统的配置选项,这里我们只有一个,也就是上面图片显示的那个,如果有多个 title 字段,这里就会列出来供我们选择不同的操作系统。
好了,通过下面的英文提示我们发现按下键盘上的 e 键就可以进入到编辑界面
看到这个界面是不是很熟悉呢?没错,这三个选项就是我们 /boot/grub/grub.conf 文件里的配置信息,我们通过查看这个文件的内容来看一下:
- [root@xiaoluo~]#cat / boot / grub / grub.conf#grub.conf 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 / splash.xpm.gz 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 KEYTABLE = us rd_NO_DM rhgb quiet 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/grub/grub.conf 启动配置中加入以下类似的代码来对 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/grub/grub.conf 这个配置文件里即可,例如:
- [root@xiaoluo~]#vi / boot / grub / grub.conf password--md5 $1$UGA2B1$DriIdrVTEgVg95fHHX4H. /
- #grub.conf 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 / splash.xpm.gz 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 KEYTABLE = us rd_NO_DM rhgb quiet 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 的心得!!!!
来源: http://www.phperz.com/article/17/0716/307199.html