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

yizhihongxing

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日

相关文章

  • stm32系列芯片命名规范

    STM32系列芯片命名规范 简介 STM32是意法半导体的一款32位微控制器芯片,它在嵌入式控制领域应用广泛,提供了出色的性能、低功耗和多种功能。作为一款优秀的芯片,STM32的命名规范十分重要,它有助于开发者快速选择适合自己开发需求的芯片。 命名规则 STM32系列芯片的命名规则通常包括四部分: 系列类型:用2~3个字母加数字表示。如STM32F1、STM…

    其他 2023年3月28日
    00
  • webpack 样式加载的实现原理

    Webpack 样式加载的实现原理 Webpack 是一个现代化的 JavaScript 模块打包工具,它不仅可以打包 JavaScript 文件,还可以处理其他类型的资源,包括样式文件。在本文中,我们将详细讲解 Webpack 样式加载的实现原理。 1. 安装和配置 Webpack 首先,我们需要安装 Webpack。可以使用 npm 或者 yarn 进行…

    other 2023年8月20日
    00
  • 几种常用的软件生命周期模型详解整合

    几种常用的软件生命周期模型详解整合 软件开发过程中常用的几种生命周期模型包括瀑布模型、迭代模型、螺旋模型、敏捷模型等。本篇攻略将对这几种模型进行详细讲解整合,方便读者了解这些模型的优缺点和使用场景,选择适合自己项目的开发生命周期模型。 瀑布模型 瀑布模型是软件开发生命周期的基础模型,非常适合需求明确、稳定的项目。该模型按照不同阶段的执行顺序,将软件开发过程划…

    other 2023年6月27日
    00
  • css预处理器sass使用教程(多图预警)

    CSS预处理器Sass使用教程(多图预警) 什么是Sass Sass是一款强大的CSS预处理器,它将CSS语言扩展得更加灵活和强大,可以帮助开发者更加高效地编写CSS代码。Sass提供了一系列的功能和特性,如变量、嵌套规则、MIXIN、函数、循环等,可以让我们更加方便的编写复杂的样式表。 安装Sass 如果你想在项目中使用Sass,首先需要安装它。安装可以选…

    其他 2023年3月28日
    00
  • WinForm遍历窗体所有子控件的方法

    WinForm遍历窗体所有子控件的方法 在WinForm编程中,我们有时需要遍历窗体上的所有子控件,比如找出所有的按钮、文本框等控件进行相应的操作。下面介绍两种常用的方法。 方法一:递归函数遍历子控件 首先定义一个递归函数,该函数接收一个参数parentControl,表示要遍历的窗体或控件。该函数使用foreach循环遍历parentControl控件的所…

    other 2023年6月26日
    00
  • node.js(基础四)_express基础

    Node.js(基础四)_Express基础 在Node.js开发中,我们常常需要使用Web框架。其中,Express是一个流行的开源Node.js Web应用程序框架。它为Web应用程序提供了许多有用的功能,例如路由、模板引擎等。本文将介绍如何使用Express框架。 安装Express 要使用Express框架,首先需要安装它。可以使用以下命令在命令行中…

    其他 2023年3月29日
    00
  • IOS开发自定义Button的外观和交互行为示例详解

    IOS开发自定义Button的外观和交互行为示例详解 在IOS开发中,Button是非常常见的控件之一,但默认提供的Button可能不能完全满足我们的需求,需要进行自定义来实现特定的外观和交互行为。本文将详细讲解如何自定义Button,包括外观和交互行为。 自定义外观 在自定义Button的外观时,我们需要重载Button的draw方法来绘制Button的外…

    other 2023年6月25日
    00
  • mysql5.7.18安装并修改初始密码的方法

    以下是mysql5.7.18安装并修改初始密码的完整攻略。 步骤一:下载安装包 首先,你需要从官网下载合适版本的MySQL安装包,这里以MySQL5.7.18为例,下载链接如下:https://dev.mysql.com/downloads/mysql/5.7.html。 步骤二:安装MySQL 安装MySQL的过程,这里以Mac OS X平台为例: 运行下…

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