想像一个环境,如果你管理的是一间计算机教室,这间计算机教室因为可对外开放,但是你又担心某些 partition 被学生不小心的弄乱,因此你可能会想要将某些启动菜单作个保护。这个时候,为每个菜单作个加密的口令就是个可行的方案啦!那如何在启动的过程里面提供口令保护呢?首先,你必须要创建口令,而且还需要是加密过后的喔!否则人家跑到 /boot/grub/menu.lst 不就可以探查到你的启动口令了?那如何创建加密的口令呢?我们可以透过 grub 提供的 md5 编码来处理的,如下所示:
[root@www ~]# grub-md5-crypt Password: <==输入口令 Retype password: <==再输入一次 $1$kvlI0/$byrbNgkt/.REKPQdfg287. <==这就是产生的 md5 口令! |
上面产生的最后一行,由 $ 开始到 . 结束的那行,就是你的口令经过 md5 编码过后的咚咚!将这个口令复制下来吧!假设我们要将第一个选项加入这个口令,而第四个选项加入另外的口令,那你应该要这样做:
[root@www ~]# vim /boot/grub/menu.lst ....(前面省略).... title CentOS (2.6.18-92.el5) password --md5 $1$kvlI0/$byrbNgkt/.REKPQdfg287. root (hd0,0) kernel /vmlinuz-2.6.18-92.el5 ro root=LABEL=/1 rhgb quiet vga=790 initrd /initrd-2.6.18-92.el5.img ....(中间省略).... title single user mode password --md5 $1$GFnI0/$UuiZc/7snugLtVN4J/WyM/ root (hd0,0) kernel /vmlinuz-2.6.18-92.el5 ro root=LABEL=/1 rhgb quiet single initrd /initrd-2.6.18-92.el5.img |
上表的案例中,我们两个菜单进入的口令并不相同,可以进行同学的分类啦!不过这样也造成一个问题,那就是一定要输入口令才能够进入启动流程,如果你在远程使用 reboot 重新启动,并且主机前面并没有任何人的话....你的主机并不会主动进入启动程序喔! ^_^
你必须要注意的是:password 这个项目一定要在 title 底下的第一行。不过,此项功能还是可能被破解的,因为使用者可以透过编辑模式 (e) 进入菜单,并删除口令栏位并按下 b 就能够进行启动流程了!真糟糕!那怎办?只好透过整体的 password (放在所有的 title 之前) ,然后在 title 底下的第一行配置 lock ,那使用者想要编辑时,也得要输入口令才行啊!配置有点像这样:
[root@www ~]# vim /boot/grub/menu.lst default=0 timeout=30 password --md5 $1$kvlI0/$byrbNgkt/.REKPQdfg287. <==放在整体配置处 splashimage=(hd0,0)/grub/splash.xpm.gz #hiddenmenu title CentOS (2.6.18-92.el5) lock <==多了锁死的功能 root (hd0,0) kernel /vmlinuz-2.6.18-92.el5 ro root=LABEL=/1 rhgb quiet vga=790 initrd /initrd-2.6.18-92.el5.img |
那么重新启动后,画面会像这样:
你可以看到最下方仅出现 p 的功能,由於 2, 3, 4 菜单并没有使用 lock ,因此这三个菜单使用者还是可以运行启动程序,但是第一个菜单由於有 lock 项目,因此除非你输入正确的口令,否则第一个菜单是无法被加载运行的。另外,这个项目也能够避免你的 menu.lst 在启动的过程中被乱改,是具有保密 menu.lst 的功能啦!与刚刚的菜单口令功能不同。