CentOS 7 设置 grub 密码及单用户登录
GRUB 是 Linux 中的一款启动管理器,它的主要任务是加载系统内核并启动操作系统。在 Linux 中,如果你拥有 root 权限,那么就相当于拥有了系统的最高权限。如果你的机器是通过 GRUB 单用户方式启动的,那么恶意用户只需要进入单用户模式就可以轻易地获取系统的 root 权限,从而对系统造成安全威胁。因此,为了加强系统的安全性,在 CentOS 7 中我们需要设置 grub 密码以及禁止单用户登录。
步骤一: 编辑 grub 配置文件
我们需要修改 grub 配置文件 /etc/grub2.cfg,但是直接修改该文件可能有风险,因为如果该文件格式不正确,可能会导致系统启动失败。因此,我们需要先将该文件的备份并拷贝出一份可编辑的文件进行修改。
1.1 首先备份 grub 配置文件:
# cp /etc/grub2.cfg /etc/grub2.cfg.bak
1.2 再将备份文件拷贝出一份可编辑文件:
# cp /etc/grub2.cfg /root/grub2.cfg.edit
1.3 用编辑器打开 /root/grub2.cfg.edit 文件:
# vim /root/grub2.cfg.edit
步骤二: 在 grub 配置文件中添加密码
2.1 在启动项配置模块中添加 --users 和 --password 命令(下面示例中用的是 sha512 加密方式):
password_pbkdf2 superuser grub.pbkdf2.sha512.10000.A3F3008E3D05F6C581A18DC897A9197D5DDBE5E5A7D6D7DAEA1A3B38C9365101810FBBC8FACD9BAA2443A3AF650258F46E74B5529ACBBC16E2EA7899C6FF3C36.C2AE7928094ACD3490E70CFCB3DDECA34F08AFA8BF9F7D702DE156AD86D07AF1AC3A9D2E23DEB8FFA5F277FBF2B2F6D4B369800E757BEC1D7ECC862AFA1EEC80
menuentry 'CentOS Linux (3.10.0-327.28.3.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-327.28.3.el7.x86_64-advanced-1edf06e2-aa3d-401d-92e5-c7d8c47e6df3' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_msdos
insmod ext2
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint='hd0,msdos1' e2372d8e-bcdf-4729-9cb3-54470d3ef1f8
else
search --no-floppy --fs-uuid --set=root e2372d8e-bcdf-4729-9cb3-54470d3ef1f8
fi
linux16 /vmlinuz-3.10.0-327.28.3.el7.x86_64 root=/dev/mapper/centos-root ro rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet selinux=0 plymouth.ignore-serial-consoles
password_pbkdf2 superuser grub.pbkdf2.sha512.10000.A3F3008E3D05F6C581A18DC897A9197D5DDBE5E5A7D6D7DAEA1A3B38C9365101810FBBC8FACD9BAA2443A3AF650258F46E74B5529ACBBC16E2EA7899C6FF3C36.C2AE7928094ACD3490E70CFCB3DDECA34F08AFA8BF9F7D702DE156AD86D07AF1AC3A9D2E23DEB8FFA5F277FBF2B2F6D4B369800E757BEC1D7ECC862AFA1EEC80
initrd16 /initramfs-3.10.0-327.28.3.el7.x86_64.img
}
set default="0"
if [ "$prev_saved_entry" ]; then
set saved_entry="$prev_saved_entry"
save_env saved_entry
set prev_saved_entry=
save_env prev_saved_entry
set boot_once=true
fi
function load_video {
insmod efi_gop
insmod efi_uga
insmod video_bochs
insmod video_cirrus
}
### 步骤三: 重新生成 grub 配置文件
3.1 用生成命令生成一个新的 grub 配置文件 /boot/grub2/grub.cfg:
grub2-mkconfig -o /boot/grub2/grub.cfg
### 步骤四:测试 grub 密码设置及单用户登录
4.1 重启系统,进入 grub 引导界面,选择 CentOS 启动项,并点击 e 键,进入编辑模式。你会看到命令行末尾已添加了一个 password 命令:
...
linux16 /vmlinuz-3.10.0-327.28.3.el7.x86_64 root=/dev/mapper/centos-root ro rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet selinux=0 plymouth.ignore-serial-consoles password_pbkdf2 superuser grub.pbkdf2.sha512.10000.A3F3008E3D05F6C581A18DC897A9197D5DDBE5E5A7D6D7DAEA1A3B38C9365101810FBBC8FACD9BAA2443A3AF650258F46E74B5529ACBBC16E2EA7899C6FF3C36.C2AE7928094ACD3490E70CFCB3DDECA34F08AFA8BF9F7D702DE156AD86D07AF1AC3A9D2E23DEB8FFA5F277FBF2B2F6D4B369800E757BEC1D7ECC862AFA1EEC80
initrd16 /initramfs-3.10.0-327.28.3.el7.x86_64.img
4.2 在命令行末尾添加一个 -1 或者单词 single(均表示进入单用户模式),并按 Ctrl+X 继续启动系统:
...
linux16 /vmlinuz-3.10.0-327.28.3.el7.x86_64 root=/dev/mapper/centos-root ro rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet selinux=0 plymouth.ignore-serial-consoles password_pbkdf2 superuser grub.pbkdf2.sha512.10000.A3F3008E3D05F6C581A18DC897A9197D5DDBE5E5A7D6D7DAEA1A3B38C9365101810FBBC8FACD9BAA2443A3AF650258F46E74B5529ACBBC16E2EA7899C6FF3C36.C2AE7928094ACD3490E70CFCB3DDECA34F08AFA8BF9F7D702DE156AD86D07AF1AC3A9D2E23DEB8FFA5F277FBF2B2F6D4B369800E757BEC1D7ECC862AFA1EEC80 -1
initrd16 /initramfs-3.10.0-327.28.3.el7.x86_64.img
4.3 系统启动后,你会看到如下提示信息,此时你需要输入 grub 密码才能进入系统(下面示例中用的是超级用户的密码:123456):
Give root password for maintenance
(or type Control-D to continue):
至此,你已经完成了设置 grub 密码及禁止单用户登录的操作。
示例 1: 通过文件生成 gz 格式密码
grub-mkpasswd-pbkdf2
Enter password:
Reenter password:
PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.A3F3008E3D05F6C581A18DC897A9197D5DDBE5E5A7D6D7DAEA1A3B38C9365101810FBBC8FACD9BAA2443A3AF650258F46E74B5529ACBBC16E2EA7899C6FF3C36.C2AE7928094ACD3490E70CFCB3DDECA34F08AFA8BF9F7D702DE156AD86D07AF1AC3A9D2E23DEB8FFA5F277FBF2B2F6D4B369800E757BEC1D7ECC862AFA1EEC80
示例 2: 通过命令行生成 gz 格式密码
grub2-mkpasswd-pbkdf2 1 ↵
Enter password:
Reenter password:
PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.C9B41FD0341F41E5902FDE1D7C3C78FC7F61AE5752C7399B268AA5D49C17E6F0FB28E1D4A356B272EA6F7ED56DF518B7A4BBAA9D32820417C16161FB31391ECE.3F0154CA56E6E11AA4FCBC685A5DC54C19C21FF016D491FFCE49F78554C5257B88EEFB15721DB7CC95F164C68D917FEED2E0B6F5AA0C4B34CB69C5EB940A70C5
```
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:centos7 设置grub密码及单用户登录实例代码 - Python技术站