# 重置 Linux Root 密码


![](/images/reset-linux-passwd.jpg)

系统管理员可以轻松地为忘记密码的用户重置密码。但是如果系统管理员忘记了 root 密码会发生什么？本指南将向您展示如何在 Red Hat 兼容系统上重置丢失或忘记的 root 密码。

<br/>

### 概述
请注意，如果整个系统硬盘已使用 LUKS 加密，您需要在提示时提供 LUKS 密码。此外，此过程适用于运行 systemd 的系统，systemd 是自 Fedora 15、CentOS 7 和 RHEL 7 以来的默认 init 系统。

### 中断启动过程
首先，您需要中断启动过程。按键盘上的 `e` 或 `Tab` 键，使用箭头键移动到 `linux16` 行：

![](../images/grub2.png)
<br/>

使用 `Delete` 键或退格键，删除 `rhgb quiet` 并替换为以下内容：
```bash
rd.break enforcing=0
```

![](../images/grub3.png)

设置 `enforcing=0` 将允许您避免执行完整的系统 SELinux 重新标记。系统重新启动后，您只需为 `/etc/shadow` 文件恢复正确的 SELinux 上下文。我也将向您展示如何执行此操作。

按 `Ctrl-x` 开始。

### 通过 chroot 访问系统
系统现在将处于紧急模式。以读写访问权限重新挂载硬盘：
```bash
# mount –o remount,rw /sysroot
```

运行 `chroot` 以访问系统：
```bash
# chroot /sysroot
```

您现在可以更改 root 密码：
```bash
# passwd
```

提示时输入两次新的 root 密码。如果成功，您应该看到一条消息，内容为 "all authentication tokens updated successfully"（所有身份验证令牌已成功更新）。

输入 `exit` 两次以重新启动系统。

### 恢复系统
以 root 身份登录并将 SELinux 标签恢复到 `/etc/shadow` 文件。
```bash
# restorecon -v /etc/shadow
```

将 SELinux 重新设置为强制模式：
```bash
# setenforce 1
```

### 参考
- https://opensource.com/article/18/4/reset-lost-root-password

