CentOS忘记了root密码,要如何修改或重置?

在 CentOS 系统中,root 账户拥有最高权限,可以执行系统中的任何操作,root 密码的安全性直接关系到整个服务器的安全,无论是出于安全策略需要定期更换密码,还是不慎忘记了密码,掌握如何正确地修改或重置 root 密码都是每一位系统管理员的必备技能,本文将详细阐述在不同场景下管理 CentOS root 密码的方法,并提供相关的安全建议。

CentOS忘记了root密码,要如何修改或重置?

已知当前 root 密码,进行常规修改

这是最常见也是最简单的情况,当您以 root 用户身份登录,或者拥有 sudo 权限的用户账户时,可以通过 passwd 命令来更改密码。

操作步骤:

  1. 登录系统:通过 SSH 或物理终端登录到您的 CentOS 系统,如果您是普通用户,请在命令前加上 sudo

  2. 执行修改命令:在终端中输入以下命令并回车:

    passwd
  3. 验证当前密码:如果当前登录用户是 root,系统会直接提示输入新密码,如果是通过 sudo 执行,则可能需要输入当前用户的密码以获取权限。

  4. 输入新密码:系统会提示“New password:”,请输入您想要设置的新密码,出于安全考虑,您输入的密码不会在屏幕上显示。

  5. 确认新密码:系统会再次提示“Retype new password:”,请再次输入新密码以确认无误。

  6. 修改成功:如果两次输入的新密码一致,系统会显示 “passwd: all authentication tokens updated successfully.”,表示密码修改成功。

密码复杂度建议:
为了确保系统安全,建议设置一个强密码,通常应包含以下特征:

CentOS忘记了root密码,要如何修改或重置?

  • 长度至少为 12 个字符。
  • 同时包含大写字母、小写字母、数字和特殊符号(如 !@#$%^&*)。
  • 避免使用生日、姓名、常见单词或连续的键盘字符。

忘记 root 密码,进入单用户模式重置

忘记 root 密码是一个比较棘手的问题,但无需惊慌,我们可以通过重启系统并进入单用户模式(或紧急模式)来重置密码,此过程需要物理访问或控制台访问权限(如 VNC、KVM)。

操作步骤(以 CentOS 7/8 为例):

  1. 重启服务器:执行 reboot 命令或通过管理面板重启服务器。

  2. 中断 GRUB 引导:在服务器启动过程中,当看到 GRUB 引导菜单时(通常是一个选择内核的界面),立即按下键盘上的 e 键,以编辑所选的启动项。

  3. 编辑内核参数:进入编辑界面后,使用方向键找到以 linuxlinux16linuxefi 开头的行,这一行定义了内核启动参数。

    • 找到 ro(read-only)参数,将其修改为 rw(read-write)。
    • 在该行的末尾,添加一个空格,然后输入 rd.break,这个参数会中断正常的启动流程,并进入一个临时的 initramfs shell 环境。
  4. 启动到紧急模式:按下 Ctrl + X 组合键,系统将使用修改后的参数启动,并进入紧急模式的 shell 提示符,通常显示为 switch_root:/#

  5. 挂载并切换系统环境:在紧急模式下,真正的系统根目录被挂载在 /sysroot 目录下,并且是只读的,我们需要将其重新挂载为读写模式,然后切换到该环境中。

    # 重新挂载 /sysroot 为读写模式
    mount -o remount,rw /sysroot
    # 切换到真正的系统环境
    chroot /sysroot

    执行 chroot 后,提示符会变为 sh-4.2#,表示您现在已经位于实际的 CentOS 系统环境中。

  6. 重置 root 密码:您可以直接使用 passwd 命令来重置密码,系统不会再要求您输入旧密码。

    CentOS忘记了root密码,要如何修改或重置?

    passwd root

    按照提示输入两次新密码即可。

  7. 更新 SELinux 上下文(至关重要):由于我们直接修改了 /etc/shadow 文件,这会导致该文件的 SELinux 安全上下文不正确,如果不修复,系统在正常重启后将无法识别密码,导致登录失败,我们需要让系统在下次启动时自动重新标记文件。

    touch /.autorelabel
  8. 退出并重启:依次执行以下命令退出环境并重启服务器。

    exit  # 退出 chroot 环境
    exit  # 退出紧急模式,系统将自动重启

    服务器重启后,SELinux 会对整个文件系统进行重新标记,这个过程可能需要几分钟时间,请耐心等待,完成后,您就可以使用新设置的 root 密码登录了。

两种场景对比

为了更清晰地理解两种方法的区别,可以参考下表:

特性 已知密码修改 忘记密码重置
前提条件 知道当前密码或拥有 sudo 权限 拥有物理或控制台访问权限
主要方法 使用 passwd 命令 进入单用户/紧急模式,修改引导参数
操作复杂度 低,一两步即可完成 高,涉及中断启动、修改参数、chroot 等多步操作
关键步骤 输入并确认新密码 rd.break
chroot /sysroot
passwd
touch /.autorelabel

安全管理与最佳实践

仅仅知道如何修改密码是不够的,良好的安全管理习惯更为重要。

  • 禁用 root 远程登录:为了防止暴力破解,建议禁止通过 SSH 直接以 root 用户登录,可以编辑 /etc/ssh/sshd_config 文件,将 PermitRootLogin yes 修改为 PermitRootLogin no,然后重启 SSH 服务(systemctl restart sshd),日常管理应使用普通账户登录,再通过 sudo 提权。
  • :为需要管理权限的用户创建普通账户,并通过配置 /etc/sudoers 文件,授予其执行特定命令的权限,这样可以实现权限的精细化控制,并且所有操作都有日志记录。
  • 定期更换密码:制定密码策略,定期(如每 90 天)更换 root 及其他重要账户的密码。

相关问答 (FAQs)

我按照忘记密码的步骤操作后,重启系统时卡住了,屏幕上显示大量信息,这是怎么回事?
解答: 这是正常现象,当您在单用户模式下执行 touch /.autorelabel 命令后,系统在下次正常启动时会触发 SELinux 的完整文件系统重新标记过程,这个过程会遍历系统中的所有文件,并根据安全策略为其打上正确的标签,因此需要花费较长的时间,具体时长取决于磁盘性能和文件数量,请耐心等待,切勿强制重启,否则可能导致文件系统损坏,标记完成后,系统会自动正常启动。

我修改了 root 密码,并且确认是正确的,但为什么还是无法通过 SSH 登录?
解答: 这通常不是密码本身的问题,而是 SSH 服务的配置限制了登录,请检查以下两种可能:

  1. 禁用了 root 远程登录:如上文最佳实践中所述,系统可能被配置为 PermitRootLogin no,您需要使用一个具有 sudo 权限的普通账户先登录,然后通过 su -sudo -i 切换到 root 用户。
  2. :检查 /etc/ssh/sshd_config 文件中是否存在 AllowUsersAllowGroups 指令,如果存在,那么只有列在其中的用户或组成员才能通过 SSH 登录,您需要将 root 用户(或您想登录的用户)添加到该列表中,或者注释掉这行配置,修改后记得重启 SSH 服务。

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-10-02 08:55
下一篇 2025-10-02 08:58

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

QQ-14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信