关于Linux grub加密禁止非密码用户进入单用户模式

运行环境:Ubuntu 14.04.3

简单说一下怎么设置Grub加密吧!

首先来说一下,需要我们修改的一些文件

1./etc/grub.d目录
此目录放置档案,会在sudo update-grub时,合并到/boot/grub/grub.cfg中。
注意这些档案名称结构,前面都有数字。数字越小的,在合并时放在越前面。常有人问到,grub menu要怎麼更改选项的顺序?就是更改数字的大小。
此外请你在这目录下输入ls -l,看一下各档案的属性,有没有看到都有x属性(可执行)?变动x属性,可以决定这个选项要不要出现在选单内。

  • 00_header

  • 设置环境变量,比如 系统文件位置、video设置和之前保存的入口(previously saved entries 。这个也导入了一些相关的东西(存储在/etc/default/grub)。用户通常不需要改变这个文件。

  • 05_debian_theme

  • 这个文件的主要目的是设置GRUB2的背景图片,文本颜色,选择高亮和主题。这些文件初始化菜单显示。关于如何设置字体和显示等请参考:Grub2/Displays  (https://help.ubuntu.com/community/Grub2/Displays)

  • 10_linux

  • 识别在 root device中操作系统正在使用的内核,并且为这些内核创建(menu entries) . 这个包含了相应的“recovery mode (恢复模式)”选项。在GRUB 1.99和之后的版本中, 在 启动主菜单页面,仅显示最新的内核。其他的内核被包含在了子启动菜单中( submenu)。 更多submenu相关信息请参考Grub2/Submenus  。

    Note:对于早期的GRUB 2版本, 所有位于 boot目录的内核都包含在 main menu 中. 如果要减少显示的内核,那就要删除/boot文件夹下的旧内核,或者使用一个有效的的grub2自定义应用。

  • 20_memtest86+

  • 寻找 /boot/memtest86+.bin ,并且把它作为一个选项加入到 GRUB 2 启动菜单(boot menu)当中。当前没有任何方式可以从这个启动菜单当中去除这个“memtest86+”的入口。但是,可以通过去掉文件可执行权限,并运行update-grub的方式来禁止ofmemtest86+ 的显示:

    • sudo chmod -x /etc/grub.d/20_memtest86+
      sudo update-grub
  •  

  • 30_os-prober

  • 这个脚本使用“os-prober” 去搜索linux和其他操作系统,并且把结果放置到GRUB 2 的菜单中。

    1. 这个文件包含如 Windows, Linux, OSX, 和 Hurd 这些操作系统的选项。
    2. 在这个文件中的一些变量,决定了 在/boot/grub/grub.cfg  文件中 和 GRUB 2 menu 中 最终被显示的某系名字的格式(format of the displayed names)。 熟悉基本脚本的用户可以改变这些变量,以达到改变 GRUB2菜单入口格式 的目的。

  • 41_custom 

    这个文件是一个添加自定义启动菜单入口的模板。当执行 update-grub的时候,这个文件的内容会被加入到grub.cfg总。



2./etc/default/grub
此档案为使用者修改grub设定的主要档案,真的改烂了请不要急,在/usr/share/grub/default/里还有一份,复制回来即可。
要修改这个档案,请输入vim /etc/default/grub

GRUB_DEFAULT=0 ->设置默认启动项,按menuentry顺序。比如要默认从第四个菜单项启动,数字改为3,若改为 saved,则默认为上次启动项。
GRUB_HIDDEN_TIMEOUT=0

GRUB_HIDDEN_TIMEOUT_QUIET=true ->隐藏菜单,grub2不再使用,不管
GRUB_TIMEOUT=2  ->设置进入默认启动项的等候时间,默认值10秒,按自己需要修改
GRUB_DISTRIBUTOR=`lsb_release -i -s 2>/dev/null || echo Debian`

GRUB_CMDLINE_LINUX_DEFAULT="quietsplash" ->添加内核启动参数,这个为默认

设置开机启动进入文本模式:(我的是GRUB_CMDLINE_LINUX_DEFAULT="";因为我设成文本模式开机什么都没有)

修改这一行GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" 为:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash text"

GRUB_CMDLINE_LINUX="noresume"->手动添加内核启动参数,比如 acpi=off noapic等可在这里添加(我的是GRUB_CMDLINE_LINUX="")


3. /boot/grub/grub.cfg
此档案中包含了GRUB菜单资讯。
注意他的开头,说明了这是由/etc/grub.d与/etc/default/grub所生成的,不要自己编辑。一旦执行update-grub;之前修改的就全被覆盖了


了解以后下面开始设置grub密码

1、制作密文密码

 

输入命令:grub-mkpasswd-pbkdf2

 

提示输入要加密的密码,如123456

生成后:

grub.pbkdf2.sha512.10000.9EF3C9F86CD72353A5C1ED54884AD7728F6DFE9C78F685C1FBB85DF49F07503395DADBC1BCBE5B59CC2572B097D8D7F20C7383

34D494AD17384708E4F81CA0D2.B246381262DEF7575543A28EAC642FA32EB01DCD30E1D31889188889B64D13BB7541CE7B4E32368402FB4A049100DDE84

F76785F553EDEA44CCCEF1811B1A184

生成要加密后的密码,将grub.pbkdf2.后面的数据复制下来

 

2、修改/etc/grub.d/00_header,在末尾追加:

 

cat <<EOF

 

set superusers="root"                    //root即是给grub设置的加密账户

 

password_pbkdf2  root  grub.pbkdf2.xxxxxxxx      //后面xxxxxxxx 即是上面做的加密密码(需要注意 root 是用户名 前后有空格!!!)

 

EOF

 

3、更新grub

 

输入命令:update-grub2

至此grub密码已经设置成功!立马尝试一下吧!

然后进行重启,等待,看见grub菜单了吗?是不是两秒以后便出现要求输入密码;你每次进行重启都会要求键入grub密码;这样一来我们正常启动是不是变得很麻烦了?

哈哈,我刚设置好的时候也是这样,后来仔细研究了一下/boot/grub/grub.conf 和/etc/grub.d/目录下的脚本;发现我们将密码写入/etc/grub.d/00_header其实就相当于一进入grub就要键入密码就相当于全局的,而我们开机重启就会自动运行grub(GNU GRUB 和GRUB是GRand Unified Bootloader的缩写,它是一个多重操作系统启动管理器。用来引导不同系统,如windows,linux。);再去查看/etc/grub.d/10_linux是识别在 root device中操作系统正在使用的内核(因为10_linux是加载系统内核和30_os-prober是加载系统);然后对此文件进行了修改泳衣验证心中的想法,结果是可行的;提醒一句:由于系统版本不一样,文件的名字可能就不一样;请对号入座(并且你还可以通过修改前面的数字来调整加载顺序,但是不建议此操作)

打开/etc/grub.d/10_linux:

找到这一句:

echo "submenu '$(gettext_printf "Advancedoptions for %s" "${OS}" | grub_quote)' \$menuentry_id_option'gnulinux-advanced-$boot_device_id' {"

然后在下面一行写入:

cat <<EOF

set superusers="root"                    //root即是给grub设置的加密账户

password_pbkdf2  root  grub.pbkdf2.xxxxxxxx      //后面即是上面做的加密密码(需要注意 root 是用户名 前后有空格!!!)

EOF

执行update-grub,然后再重新启动

接下来可以尝试一下修改root密码;来验证一下grub密码是否设置成功;

关于Ubantu如何在单用户模式修改root密码请看这里:http://blog.csdn.net/qq_33571718/article/details/51605665点击打开链接



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值