centos7 设置grub密码及单用户登录实例代码

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技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • C语言实现Fibonacci数列递归

    下面是实现C语言Fibonacci数列递归的攻略,包含以下几个步骤: 步骤一:理解Fibonacci数列 Fibonacci数列指的是:1, 1, 2, 3, 5, 8, 13, 21, 34, 55……每个数等于前两个数之和。例如,第三个数为1+1=2,第四个数为1+2=3。 步骤二:理解递归 递归是一种同时使用函数或子过程等基本单位和重复语句,以便将问题…

    other 2023年6月27日
    00
  • html5原生拖拽/拖放(drag&drop)详解

    HTML5原生拖拽/拖放(drag&drop)详解 HTML5为Web开发者带来了丰富的应用场景和功能实现,其中之一就是拖放(drag and drop)功能。通过拖放,用户可以更加方便快捷地实现一些操作,如拖动元素进行排序或移动它们到其他地方,或者拖动文件到网页中进行上传等。 拖拽操作的基本流程 拖放操作的基本流程分为以下四步: 用户触发拖放事件(…

    其他 2023年3月28日
    00
  • Java 实现链表结点插入

    Java 实现链表结点插入 概述 链表是一种动态数据结构,Java 中其实现可以分为单向链表、双向链表和循环链表,链表结点插入是链表的基本操作之一。下文将详细讲解 Java 实现链表结点插入的完整攻略。 步骤 1. 定义结点类 链表中每个元素都是结点,一个结点有两个属性: value:表示当前结点的值 next:表示当前结点的下一个结点 Java 中可以定义…

    other 2023年6月27日
    00
  • 玩转Git入门篇

    玩转Git入门篇的完整攻略 本文将为您详细讲解Git的入门知识,包括Git的基本概念、常用命令和示例说明等内容。 Git的基本概念 Git是一种分布式版本控制系统,它可以记录文件的修改历史,并支持多人协作开发。Git的基本概念包括: 仓库(Repository):用于存储文件的修改历史和版本信息。 分支(Branch):用于管理不同的版本和修改历史。 提交(…

    other 2023年5月6日
    00
  • SpringBoot 自定义starter yaml提示失效问题及解决方法

    方案概览: 在使用SpringBoot自定义starter时,我们经常需要使用application.yaml来为starter提供配置项,但是当我们在其他项目中使用自定义的starter时,IDE可能没有自动提示可用的yaml配置,这是一种很烦人的情况。这篇攻略将会解决这个问题。 解决方法: 在自定义starter的jar包中添加以下两个文件: META-…

    other 2023年6月27日
    00
  • GHOST参数、命令操作指南

    GHOST参数详解 在命令行中调用 Ghost 时,可以使用以下参数对 Ghost 进行配置和优化: –no-prompt : 表示在运行时不显示提示信息 –development : 将 Ghost 配置为开发环境 –production : 将 Ghost 配置为生产环境 –db sqlite3 : 使用 SQLite3 作为数据库 –db m…

    other 2023年6月26日
    00
  • QQ认证空间的常见问题解答搜集整理

    QQ认证空间的常见问题解答搜集整理 什么是QQ认证空间? QQ认证空间是腾讯公司提供的一种免费网站建设平台,旨在为用户提供快速便捷的建站体验。通过QQ认证,用户可以获得更多的社交功能,如发表动态、添加好友等。同时QQ认证还提供了一些常见的网站模板供用户选择,方便用户进行页面设计。 QQ认证空间常见问题及解答 1. 在QQ认证空间中如何上传图片? 在QQ认证空…

    other 2023年6月27日
    00
  • 关于awk:打印文件中一行的最后一列

    在awk中,我们可以使用$NF变量来打印文件中一行的最后一列。以下是关于如何在awk中打印文件中一行的最后一列的完整攻略,包括使用$NF变量和substr函数的两个示例说明。 步骤1:使用$变量 在awk中,$NF变量表示当前行的最后一列。可以使用$NF变量来打印文件中一行的最后一列。以下是一个示例: $ cat file.txt 1 2 3 4 5 6 7…

    other 2023年5月9日
    00
合作推广
合作推广
分享本页
返回顶部