我们如何更改root密码?

mon*_*onu 41 password rhel

如果我们不知道 root 密码并且没有 root 访问机器,我们如何更改 root 密码?

Ale*_*ios 68

以下是我能想到的几种方法,从侵入性最小到侵入性最大。

无需重启

使用 sudo:如果您有sudo运行权限passwd,您可以执行以下操作:

sudo passwd root
Run Code Online (Sandbox Code Playgroud)

输入您的密码,然后为 root 输入两次新密码。完毕。

编辑文件:这个作品在偶然的情况下,你没有完全sudo访问权限,但你的编辑权限/etc/{passwd,shadow}。打开/etc/shadow,可以是sudoedit /etc/shadow,也可以是sudo $EDITOR /etc/shadow:用您自己的用户密码字段替换 root 的密码字段(第二个和第三个冒号之间的所有随机字符)。节省。本地与您的密码相同。登录并将密码更改为其他内容。

这些是容易的。

需要重启

单用户模式:这是Renan刚刚解释的。如果您可以访问 GRUB(或您的引导加载程序)并且您可以编辑 Linux 命令行,那么它就可以工作。如果您使用 Debian、Ubuntu 和其他一些系统,则它不起作用。某些引导加载程序配置需要密码才能执行此操作,您必须知道密码才能继续。无需再费周折:

  1. 重启。
  2. 输入引导时密码(如果有)。
  3. 输入引导加载程序的菜单。
  4. 如果单用户模式可用,请选择该模式(Debian 称之为“恢复模式”)。
  5. 如果没有,则运行 GRUB:
    1. 突出显示您的正常启动选项。
    2. e进入编辑模式。那里可能会要求您输入 GRUB 密码。
    3. 突出显示以kernel或开头的行linux
    4. e
    5. 在末尾添加“单身”一词。(不要忘记在前面加一个空格!)
    6. 按下Enter并启动编辑的节。有些 GRUB 使用Ctrl- X,有些使用b. 它会在屏幕底部说明它是哪一个。

您的系统将以单用户模式启动。某些发行版此时不会要求您输入 root 密码(Debian 和基于 Debian 的发行版会)。你现在是root。更改您的密码:

sudo passwd root
Run Code Online (Sandbox Code Playgroud)

reboot,或者,如果您知道您的正常运行级别,请说telinit 2(或其他任何内容)。

替换init:表面上类似于单用户模式技巧,指令大致相同,但需要更强大的命令行。你像上面一样启动你的内核,但是single你添加了init=/bin/sh. 这将/bin/sh代替运行init,并将为您提供一个几乎没有便利设施的非常早期的外壳。此时,您的目标是:

  1. 挂载根卷。
  2. 获取passwd运行。
  3. 使用passwd命令更改密码。

根据您的特定设置,这些可能是微不足道的(与单用户模式的说明相同),也可能是非常重要的:加载模块、初始化软件 RAID、打开加密卷、启动 LVM 等。没有init,您就不会运行守护进程或任何其他进程,而是运行/bin/sh它的子进程,因此您实际上是靠自己的。你也没有工作控制,所以要小心你输入的内容。一个放错地方cat,如果你不能摆脱它,你可能不得不重新启动。

Rescue Disk:这个很简单。启动您选择的救援磁盘。挂载您的根文件系统。该过程取决于您的卷的分层方式,但最终归结为:

mount / -o remount,rw
passwd # Enter your new password twice at the prompts
mount / -o remount,ro
sync # some people sync multiple times. Do what pleases you.
reboot
Run Code Online (Sandbox Code Playgroud)

显然,$SOME_ROOT_DEV是救援磁盘分配给您的根文件系统的任何块设备名称,并且$EDITOR是您最喜欢的编辑器(可能必须vi在救援系统上)。之后reboot,让机器正常开机;root 的密码将是您自己的用户的密码。以 root 身份登录并立即更改。

其他方法

显然,上面有无数的变化。它们都归结为两个步骤:

  1. 获得对计算机的 root 访问权限(catch-22 - 真正的技巧)
  2. 以某种方式更改 root 的密码。


gol*_*cks 7

我认为这应该适用于任何发行版。

如果您可以从另一个系统访问根分区,例如 Live CD,您可以从那里以 root 身份进行编辑/etc/shadow;首先你必须chmod u+w shadow。找到 的条目root,它可能是第一个,看起来像这样:

root:$6$asdG0[..etc...]ae/:15666:0:99999:7:::
Run Code Online (Sandbox Code Playgroud)

擦除前两个冒号之间的所有内容,最终得到:

root::15666:0:99999:7:::
Run Code Online (Sandbox Code Playgroud)

然后chmod u-w shadow。您现在可以重新启动系统,root 将没有密码。您只需root在登录提示处输入,它就不会要求输入。然后您可以使用passwd设置一个。

要特别小心:

  • 创建第一个备份副本/etc/shadow
  • 在设置新密码之前,不要以 root 用户身份登录。这并不重要,但可以防止非特权恶意软件制造某种冰雹通过的理论上的可能性(“嘿,也许没有 root 密码......”)。有点牵强的 IMO。