一、前言
1、root用户的重要性
系统安全:root用户是Linux系统中的超级用户,拥有对系统的完全控制权。如果root密码被恶意用户获取,他们就可以完全控制整个系统,包括读取、修改或删除任何文件,安装或卸载软件,甚至改变系统配置。因此,一个强大且复杂的root密码是保护系统免受未授权访问和潜在破坏的第一道防线。
数据保护:系统中的重要数据,如用户信息、配置文件、业务数据等,都可能被恶意用户通过root权限进行窃取或篡改。一个安全的root密码可以确保这些数据不被非法访问。
服务稳定性:如果root密码被滥用,恶意用户可能会关闭重要的系统服务,导致服务中断,影响业务的正常运行。一个安全的root密码可以防止这种情况的发生。
合规性要求:许多企业和组织都有严格的安全政策和合规性要求,其中包括对root密码的管理和保护。符合这些要求有助于维护企业的声誉和避免潜在的法律风险。
因此,为了确保系统的安全和稳定,以及保护重要数据,必须设置一个强大且复杂的root密码,并定期更换。同时,还应采取其他安全措施,如使用密钥认证、限制root登录方式、监控和审计系统日志等,以进一步提高系统的安全性。
2、GRUB 概述
在系统启动过程中,从引导装载程序开始,到装载内核之前都由GRUB负责。内核被保在/boot/,通过GRUB 将内核装载到内存。GRUB 全称GRand Unified Bootloader,作为一种多重操作系统启动管理器。除引导Linux之外,也可在多操作系统共存时管理多重操作系统的引导。可对GRUB进行配置管理来实现对系统启动选项的控制,干预系统的启动。
二、忘记root密码
1、设置GRUB主要环境
vim /etc/default/grub进入主要环境编辑。
设置进入默认启动项的等候时间GRUB_TIMEOUT=5改为GRUB_TIMEOUT=-1,即每次启动时需手动确认。
执行grub2-mkconfig -o /boot/grub2/grub.cfg命令更新 GRUB 配置文件。reboot重启虚拟机。
如下图所示最下面一行已无倒计时显示:
2、设置GRUB密码
由上例得知,任何人不需密码都能进入GRUB编辑模式,这具有相当大的安全隐患,为此可以设置GRUB口令,只有拥有口令的用户才能修改GRUB参数。方法是修改GRUB配置文件,设定密码,以防止非法者进行GRUB 编辑。
设置GRUB明文密码:
(1)编辑/etc/grub.d/00_header 文件
在末尾添加以下内容后保存该文件:
cat << EOF
set superusers="admin''
password admin <密码>
EOF
保存并退出。
(2)执行grub2-mkconfig 命令重新生成grub.cfg文件:
grub2-mkconfig -o /boot/grub2/grub.cfg
reboot重新启动系统。
(3)在GRUB开始界面中按下<e>键进入GRUB编辑模式。
输入用户和密码。
可以进入到如下界面即成功:
以上设置的密码是明文的,GRUB 可对这个密码进行加密。
加密GRUB密码:
使用工具grub2-mkpasswd-pbkdf2生成加密的密码:
复制/etc/grub.d/00_header 文件的password语句中的密码。
执行vim /etc/grub.d/00header命令编辑/etc/grub.d/00header 文件。
将/etc/grub.d/00_header 文件的password语句中的密码更换成上述以grub.pbkd2sha
开头的密文。如下图所示再在开头加上password_pbkdf2 admin
保存并退出。
最后执行grub2-mkconfig命令重新生成 grub.cfg文件。reboot重启虚拟机。
同样输入用户和密码。
可以进入到如下界面即成功:
三、重置root密码
一旦忘记root用户密码,就无法执行任何面向整个系统的变更工作。不过Linux中很容
易使用root账户重置密码。具体方法如下。
1、方法一
(1)启动系统进入GRUB2界面后,按下<e>键进入GRUB 编辑模式。
(2)按向下箭头找到以 linux16开头的那一行,在行尾先输入一个空格,再输入
“rd.break console-tty0"或者“rd.break enforcing=0”。
(3)按<Ctrl>+<x>组合键启动系统。
(4)执行以下命令重新挂载文件系统:mount -o remount,rw /sysroot
(5)执行以下命令改变系统目录为临时挂载目录:
chroot /sysroot
(6)执行passwd命令修改root密码。
(7)在根目录下创建相关文件(用于重新标记SELinux环境值):
touch /.autorelabel
(8)执行exit 命令退出chroot环境,再执行exit重启系统。
(9)测试是否重置root密码成功:
切换到root用户,输入上文新设置的root用户密码,若切换成功,即root密码重置成功。
2、方法二
如果在VMWare 虚拟机上操作不成功,可以尝试将linux16开头的那一行中的“rhgb quiet”
先删除。
rd.break 这种方法一般用于修改root 密码或者出现重大问题,临时中断运行,未装载任
何文件系统,比上述救援模式还要精简。
如果使用rd.break不能进入系统启动,则可以向内核传递“init=/bin/bash”参数,使用Shell 替代默认的daemon 进程来重置root密码。
参照上一小节的操作进入Shel引导界面,再继续以下步骤。
(1)执行以下命令以可写方式重新挂载根目录:
mount -o remount,rw /
(2)执行以下命令修改root密码:
passwd root
(3)如果系统启动了SELinux,必须执行以下命令,否则将无法正常启动系统:
touch /.autorelabel
(4)执行excc /sbin/init 命令启动系统,或者执行exec/sbin/reboot命令重启系统。
(5)同样测试是否重置root密码成功:
切换到root用户,输入上文新设置的root用户密码,若切换成功,即root密码重置成功。
感谢您的阅读,希望此文章对您有所帮助!