網站首頁 編程語言 正文
1、什么是grub加密
上篇文章說了,系統在開機的時候,有一個5秒的讀秒時間,方便你進入到grub
界面中。
如下圖所示:
此時我們按下Enter鍵,就可以進入到grub
界面中。
如下圖所示:
在選擇框的正下方可以看到有幾行提示:
# 使用 ↑ 和 ↓ 鍵高亮某個選項,并按回車鍵確認來引導選定的操作系統。 Use the ↑ and ↓ keys to select which entry is highlighted. Press enter to boot the selected OS, # 按e鍵在啟動之前編輯命令, 'e' to edit the connands before booting, # 按a鍵在啟動之前修改內核參數, 'a' to nodify the kernel argunents before booting, # 按c鍵切換命令行(esc鍵返回)。 or 'c' for a connand-1 ine.
可以看到提示,按e
鍵就能編輯grub
配置文件中的啟動選項內容。
按e
鍵,結果如下圖:
提示再按e
鍵可直接修改內容。
而grub
加密,就是在上面第二張圖的狀態時,需要先輸入我們設定的密碼,才能按e
鍵編輯系統啟動參數。也就是說給grub
設置一個密碼, 避免像上邊那樣能夠直接進入grub
,并編輯其中的系統啟動參數。
2、grub加密步驟
1)執行grub-md5-crypt
命令成生md5密碼。
執行命令:[root@localhost ~]# grub-md5-crypt
2)設置密碼。
輸入兩次密碼:
Pas sword: Retype pas sword:
生成MD5加密的密碼字符串:$1$Y84LB1$8tMY2PibScmu0Cc8z8U351
這樣就把你輸入的密碼進行了MD5加密,用這個加密字符串來加密grub
配置文件。
3)修改grub的配置文件。
一定在timeout
屬性之后,在splashimage
屬性之前,添加password
選項,一定是這個順序,放在其他位置不生效。
如下所示:
[root@localhost ~]# vim /boot/grub/grub.conf # 內容 default=0 timeout=5 # password選項放在整體設置處。 password --md5 $1$Y84LB1 $8tMY2PibScmu0Cc8z8U35/ splashimage=(hd 0,0)/grub/splash.xpm.gz
4)重啟系統。
重啟系統后,我們發現進入到grub
界面中,下面的提示,原來的e
鍵變成了p
鍵。
我們再按e
鍵都是沒有反應的,按p
鍵就會讓你輸入密碼,不輸入密碼你就不能編輯grub
的配置文件。
如下圖所示:
輸入后按Enter鍵,才進入到可編輯的grub
界面中,e
鍵提示又出來了。如下圖:
注意:
當你在第四步中第一個圖的時候,就算你不知道密碼,直接按Enter鍵,系統是可以直接啟動的。所以說grub
加密是對grub
配置文件的編譯進行了加密,而不是對系統的啟動進行加密。
上面的加密步驟,是對grub
菜單整體加密,整體加密后,如果想進入grub
編輯界面必須輸入正確的密碼。同時也是不影響系統的正常啟動的。
還有對單個啟動菜單進行加密,但grub
的編輯模式是不能鎖定的,還是可以按e
鍵進入編輯模式。而且進入編輯模式后,是可以刪除password
字段的,不是很好,所以不講解了。
3、grub加密的lock屬性
如果我想啟動CentOS系統時,既需要grub
的整體加密,又需要系統啟動時輸入正確的grub
加密密碼,才能正常啟動系統。那應該怎么做呢?
很簡單,方法如下:在grub
的/boot/grub/grub.conf
配置文件中,在title
字段中加入lock
,代表鎖死,如果不輸入正確的grub密碼,系統是不能啟動的。
如下圖所示:
注意:
lock
這個屬性千萬不要添加,如果添加了lock
屬性在grub
的配置文件中,當你在不輸入密碼的時候,直接按Enter鍵,是不能直接進入系統的,會報錯,如下圖:
提示了錯誤32,按任意鍵繼續,就又回來了。
為什么一定不要添加lock
的原因:
在系統啟動的時候,進入到grub
啟動引導,此時系統還沒有啟動完成,網卡是還沒加載生效,所以遠程終端是連接不上服務器的,這時候就只能拿鍵盤做本地輸入。但現在我們的服務器一般都放在機房或者遠端,你會十分的不方便。所以堅決不能用lock
鎖定grub
的配置文件。
原文鏈接:https://www.cnblogs.com/liuyuelinfighting/p/15669738.html
相關推薦
- 2022-05-10 git reset中hard與soft區別
- 2023-02-17 docker快速部署zabbix的方法_docker
- 2022-06-20 go語言實現屏幕截圖的示例代碼_Golang
- 2022-11-21 正則表達式RegExp語法與用法詳解_正則表達式
- 2022-07-21 VScode設置自定義背景
- 2022-02-14 flutter封裝自定義打印信息
- 2022-10-02 react中(含hooks)同步獲取state值的方式_React
- 2022-07-17 C#編程報錯System.InvalidOperationException問題及解決_C#教程
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支