AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 457821
Accepted
slm
slm
Asked: 2018-07-23 12:29:15 +0800 CST2018-07-23 12:29:15 +0800 CST 2018-07-23 12:29:15 +0800 CST

如何更改 GRUB2 用户名和密码?

  • 772

我最近下载了官方的centos/7 Vagrant Cloud VM。在通过密钥重新启动期间尝试访问其 GRUB2 菜单时e,我遇到了输入用户名 + 密码的提示。

ss1

我在该 VM 的官方页面、宣布它的博客文章以及任何这些 git 存储库中都没有找到提到的这个:

  • CentOS/sig-cloud-instance-build/vagrant
  • lpancescu/sig-cloud-instance-build

也许我在某个时候修改了它,不再记得用于保护 GRUB2 启动菜单的用户名和密码。

在任何一种情况下,与其进一步寻找这个,我怎样才能简单地将 GRUB2 中的凭据更改为我想要的任何内容?

linux centos
  • 1 1 个回答
  • 6798 Views

1 个回答

  • Voted
  1. Best Answer
    slm
    2018-07-23T12:29:15+08:002018-07-23T12:29:15+08:00

    由于您通常可以sudo在启动 Vagrant VM 时访问 root,因此您可以简单地登录并成为 root,如下所示:

    $ vagrant ssh
    $ sudo -Es
    

    成为 root 后,您可以通过以下两种方式之一将凭据重置为您想要的任何内容。

    RHEL & CentOS 7.2+ & Fedora

    从 RHEL 和 CentOS 7.2+ 和 Fedora 开始,有一个帮助脚本/工具,grub2-setpassword它包含在其中,极大地简化了执行此操作的过程。

    要使用它,您需要执行以下操作:

    $ grub2-setpassword
    Enter password:
    Confirm password:
    $
    

    完成上述操作后,将在此文件中自动为您设置密码/boot/grub2/user.cfg::

    $ cat /boot/grub2/user.cfg
    GRUB2_PASSWORD=grub.pbkdf2.sha512.10000.5A95A11398D5DEAA9B205DCEA37E0FDCC069CF6D0C398E8C9FF2ED1D8DE072DDE1D916F955266C306AAC7CA62E0D29A7C6558F3B29E40008289DBE857B8354CE.DD410AA2E5D6495BA723147046B88B89A585656AF4298F07CBC93E7A4F73713A824AE1F3448F837809B6655861A1BA5F0FB615206470E4228E57F7BCF11442A3
    

    您可以通过如下方式查找 GRUB2 如何在基于 CentOS 的发行版上使用此文件/etc/grub.d:

    $ grep -l user.cfg /etc/grub.d/*
    /etc/grub.d/01_users
    

    该文件的内容:

    $ cat /etc/grub.d/01_users
    #!/bin/sh -e
    cat << EOF
    if [ -f \${prefix}/user.cfg ]; then
      source \${prefix}/user.cfg
      if [ -n "\${GRUB2_PASSWORD}" ]; then
        set superusers="root"
        export superusers
        password_pbkdf2 root \${GRUB2_PASSWORD}
      fi
    fi
    EOF
    

    啊,所以默认用户将是“root”。很好,如果我们要重新启动我们的虚拟机并尝试使用我们提供的密码凭据“root” grub2-setpassword:

    SS2

    我们现在可以进入菜单:

    ss3

    Ubuntu 16.04+

    在其他不提供脚本grub2-setpassword的发行版上,这个过程有点复杂,但并不可怕。

    1.生成加密密码

    您需要使用 GRUB2 工具来加密您的密码:

    $ grub-mkpasswd-pbkdf2
    Enter password:
    Reenter password:
    PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.465B5EE2D2F6A767304EB397D6D97C70BC38653F95AFE58B24F190D5DABB0143920F736C125B91FB9F298AFF3D0F8FBBFB8228D5C8C9DD371ADBB1044CC80BFC.52D87AFD47A5BE2D7B6CF755D26CD5F481557DBCF5E725ABA44BF003A2970D3F775E8657428EDC201D86A3DF07D7A8109AFD5764EA058BE94D840F42ED17C3E2
    

    2. 将密码添加到 GRUB2 配置

    然后获取该命令的输出,grub.pbkdf2.sha512.10000.....并将其复制/粘贴到文件中。

    $ cat /etc/grub.d/40_custom
    #!/bin/sh
    exec tail -n +3 $0
    # This file provides an easy way to add custom menu entries.  Simply type the
    # menu entries you want to add after this comment.  Be careful not to change
    # the 'exec tail' line above.
    
    set superusers="root"
    password_pbkdf2 root grub.pbkdf2.sha512.10000.465B5EE2D2F6A767304EB397D6D97C70BC38653F95AFE58B24F190D5DABB0143920F736C125B91FB9F298AFF3D0F8FBBFB8228D5C8C9DD371ADBB1044CC80BFC.52D87AFD47A5BE2D7B6CF755D26CD5F481557DBCF5E725ABA44BF003A2970D3F775E8657428EDC201D86A3DF07D7A8109AFD5764EA058BE94D840F42ED17C3E2
    

    注意:我们将用户名设置为“root”,它可以是任何你想要的。如果您更改它,请务必在两行 ( superusers="root"& password_pbkdf2 root ...) 上进行更改。

    3. 重建 GRUB2grub.cfg

    现在我们需要重新生成我们的grub.cfg:

    $ grub-mkconfig -o /boot/grub/grub.cfg
    Generating grub configuration file ...
    Found linux image: /boot/vmlinuz-4.4.0-130-generic
    Found initrd image: /boot/initrd.img-4.4.0-130-generic
    done
    

    这将获取所有内容/etc/grub.d并将其合并到一个新的grub.cfg. 所以我们的40_custom部分grub.cfg将从这个开始:

    $ cat /boot/grub/grub.cfg
    ...
    ### BEGIN /etc/grub.d/40_custom ###
    # This file provides an easy way to add custom menu entries.  Simply type the
    # menu entries you want to add after this comment.  Be careful not to change
    # the 'exec tail' line above.
    ### END /etc/grub.d/40_custom ###
    ...
    

    对此:

    $ cat /boot/grub/grub.cfg
    ...
    ### BEGIN /etc/grub.d/40_custom ###
    # This file provides an easy way to add custom menu entries.  Simply type the
    # menu entries you want to add after this comment.  Be careful not to change
    # the 'exec tail' line above.
    
    set superusers="root"
    password_pbkdf2 root grub.pbkdf2.sha512.10000.465B5EE2D2F6A767304EB397D6D97C70BC38653F95AFE58B24F190D5DABB0143920F736C125B91FB9F298AFF3D0F8FBBFB8228D5C8C9DD371ADBB1044CC80BFC.52D87AFD47A5BE2D7B6CF755D26CD5F481557DBCF5E725ABA44BF003A2970D3F775E8657428EDC201D86A3DF07D7A8109AFD5764EA058BE94D840F42ED17C3E2
    ### END /etc/grub.d/40_custom ###
    ...
    

    参考

    • 25.6。用密码保护 GRUB 2
    • 如何在 RHEL/CENTOS 7 中使用密码保护 GRUB2 引导程序
    • fedoraproject 的 wiki - GRUB2 - 为交互式编辑模式设置密码
    • 如何使用密码保护您的 GRUB 菜单
    • 5

相关问题

  • 使用键盘快捷键启动/停止 systemd 服务 [关闭]

  • 奇怪的路由器与centos 6一起工作[关闭]

  • 需要一些系统调用

  • astyle 不会更改源文件格式

  • 通过标签将根文件系统传递给linux内核

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    ssh 无法协商:“找不到匹配的密码”,正在拒绝 cbc

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    如何卸载内核模块“nvidia-drm”?

    • 13 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add 返回:“连接代理时出错:没有这样的文件或目录” 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya 为什么 Linux 使用 LF 作为换行符? 2017-12-20 05:48:21 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve