在上一篇隨筆裏面詳細講解了Linux系統的啓動過程 (Linux學習之CentOS(二十一)--Linux系統啓動詳解),咱們知道Linux系統的啓動級別一共有6種級別,經過 /etc/inittab 這個文件咱們就能看到:html
[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字段,這裏就會列出來供咱們選擇不一樣的操做系統。post
好了,經過下面的英文提示咱們發現按下鍵盤上的 e 鍵就能夠進入到編輯界面學習
看到這個界面是否是很熟悉呢?沒錯,這三個選項就是咱們 /boot/grub/grub.conf 文件裏的配置信息,咱們經過查看這個文件的內容來看一下:ui
[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系統的內核,我須要以單用戶的模式登錄該系統。this
而後咱們回車,進入到上層的界面,此時按下鍵盤上的 b 鍵就是啓動操做系統,此時咱們的Linux操做系統就是以單用戶的模式登錄了。咱們發現系統很是快速的就進入到了命令行模式下的界面,由於單用戶模式是不 會啓動任何服務的,同時也不須要輸入root密碼,就能直接進入到root用戶下,此時咱們就能夠經過passwd 命令來重置咱們的root用戶的密碼加密
而後咱們經過exit命令就能夠退出單用戶模式,此時操做系統內核就會根據咱們以前看到的 /etc/inittab 配置文件中設置的默認啓動級別來啓動。url
這樣咱們就能夠經過在進入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裏面來看看,
0
咱們發現下面的英文提示已經變了,以前能夠按鍵盤上的 e 鍵進入到GRUB裏面,如今按 e 鍵已經沒用了,此時提示咱們按 p 鍵來輸入GRUB的密碼才能進入到GRUB裏面
此時咱們輸入以前設置的GRUB密碼便可,而後界面就會進入到咱們熟悉的修改GRUB那裏了。
因此說經過GRUB的加密算法咱們能夠對進入GRUB進行加密,這樣就能防止別人惡意進入單用戶模式,從而修改root密碼了!!
固然,若是咱們連這個GRUB的祕密都忘記的話,而且又忘記了root密碼,那就真的不能登錄到root用戶了。。。。
本篇隨筆主要記錄瞭如何通