centos7修改root密码

本文介绍了一种在CentOS系统中设置root密码的方法,通过在系统启动时添加rd.break参数,利用chroot命令在早期启动阶段获取root权限,进而设置root密码。同时,文章还详细解释了如何处理SELinux相关问题,确保开机时正确设定SELinux context。

参考链接
https://blog.51cto.com/8686505/2379290?source=dra

平时用不到,用到的时候又记不住怎么操作,所有找了一个用着是可以成功的,保存一下方便以后再找^-^

1.修改思路
systemd 的管理机制中,rescure 模式和 emeryency 模式是无法直接取得 root 权限的,需要使用 root 密码才能进入 rescure 和 emeryency 环境。所以我们需要通过其他方式来设置 root 密码。我们可以为内核的启动指定 "rd.break" 参数,从而让系统在启动的早期停下来,此时我们可以通过使用 root 权限并结合 chroot 命令完成设置 root 密码的操作。
下面我们一起来看具体的操作过程。

重启之后有如下图的显示
centos7修改root密码
根据提示按【e】去编辑选择的项目,会出现下面的界面,在内核所在的行最后添加rd.break,如图
centos7修改root密码
接着按下 ctrl + x 以该设置继续启动,启动过程中操作系统会停下来,这是系统启动过程中的一个非常早的时间点:
centos7修改root密码
所以系统的根目录还挂载在 RAM disk 上(就是内存中的一个文件系统),我们可以通过 mount 命令检查系统当前挂载的文件系统,下面是我们比较关心的两条:
centos7修改root密码
上图中 mount 命令输出的第一行说明此时的根目录在一个 RAM disk 中, 即 rootfs。
图中输出的第二行说明我们的文件系统此时被挂载到了 /sysroot 目录,并且是只读的模式:

/dev/mapper/centos-root on /sysroot type xfs (ro,relatime,attr2,inode64,noquota)
而在我们正常登陆系统的情况下,系统根目录的挂载情况如下:

/dev/mapper/centos-root on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
该时间点的最大优势是我们具有 root 权限!所以让我们开始设置新的 root 密码吧。

先通过下面的命令把 /sysroot 重新挂载为可读写的模式:

switch_root:/# mount -o remount,rw /sysroot
然后用下面 chroot 命令把根目录切换到我们原来的环境中:

switch_root:/# chroot /sysroot
用下面的命令为 root 用户设置新的密码:

sh-4.2# echo "new_root_pw" | passwd --stdin root

接下来还要处理 SELinux 相关的问题。由于当前的环境中 SELinux 并未启动,所以我们对文件的修改可能造成文件的 context 不正确。为了确保开机时重新设定 SELinux context,必須在根目录下添加隐藏文件 .autorelabel:

sh-4.2# touch .autorelabel
最后从 chroot 中退出,并重启系统:

sh-4.2# exit
switch_root:/# reboot
重新进入登陆界面时就可以使用刚才设置的密码以 root 登陆了!

### 修改 CentOS 7 系统中 root 用户密码的方法 在 CentOS 7 系统中,如果用户需要修改 `root` 用户的密码,可以通过以下几种方式完成,具体取决于当前的使用场景和权限情况。 #### 1. 使用 `passwd` 命令修改 root 密码 如果当前用户具有 `sudo` 权限,可以直接使用以下命令修改 `root` 用户的密码: ```bash sudo passwd root ``` 系统会提示输入新的 `root` 密码。输入完成后,密码将立即生效。此方法适用于拥有管理员权限的普通用户[^1]。 #### 2. 在 GRUB 启动菜单中进入单用户模式重置密码 如果忘记了 `root` 密码并且没有其他具有 `sudo` 权限的用户,可以通过以下步骤重置密码: 1. **重启系统**并在 GRUB 启动菜单出现时快速按下任意键(通常是空格或方向键)以阻止系统自动启动。 2. 选择要启动的内核,按下 `e` 键进入编辑模式。 3. 找到以 `linux16` 开头的行,再次按下 `e` 键编辑该行。 4. 在该行末尾添加 `rd.break` 参数,然后按 `Ctrl+X` 启动。 5. 进入紧急模式后,依次运行以下命令挂载系统并切换到真实的根环境: ```bash mount -o remount,rw /sysroot mount -o remount,rw /dev/mapper/root chroot /sysroot ``` 6. 然后运行 `passwd root` 命令并输入新的密码7. 最后运行以下命令更新 SELinux 标签并退出: ```bash touch /.autorelabel exit reboot ``` 此方法适用于无法通过常规方式访问 `root` 的情况。 #### 3. 使用救援模式重置 root 密码 如果系统安装了救援模式,可以将系统引导至救援模式,然后挂载根文件系统并更改 `root` 密码: 1. 插入安装介质并从其启动。 2. 在安装界面选择 **Rescue a CentOS system**。 3. 系统进入救援模式后,选择 **Continue** 以挂载系统到 `/mnt/sysimage`。 4. 运行以下命令切换到挂载点并修改密码: ```bash chroot /mnt/sysimage passwd root ``` 5. 完成后退出并重启系统。 此方法适用于系统无法正常启动的情况。 --- ### 示例:修改 root 密码的完整命令流程 假设当前用户拥有 `sudo` 权限,修改 `root` 密码的完整流程如下: ```bash # 使用 sudo 修改 root 密码 sudo passwd root # 系统提示输入新密码 New password: ******** Retype new password: ******** passwd: all authentication tokens updated successfully. ``` --- ### 注意事项 - 修改 `root` 密码时,应确保新密码足够复杂,以增强系统安全性。 - 在生产环境中,建议使用 `sudo` 管理权限,而不是直接使用 `root` 账户。 - 如果系统启用了 SELinux,重置密码后可能需要重新标记文件系统标签(例如通过 `touch /.autorelabel` 命令)。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值