我们如何更改root密码?


Answers:


63

从最小的干扰到最大的干扰,以下是我可以想到的几种方法。

无需重启

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

sudo passwd root

输入您的密码,然后输入root两次新密码。做完了

编辑文件:在您没有完全sudo访问权限,但您确实具有编辑权限的情况下,这种方法不太可能发生/etc/{passwd,shadow}/etc/shadowsudoedit /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. 在末尾添加单词“ single”。(别忘了加一个空格!)
    6. 按下Enter并启动编辑的节。有些GRUB使用Ctrl- X,有些使用b。它说它在屏幕底部。

您的系统将以单用户模式启动。某些发行版目前不会要求您提供root密码(Debian和基于Debian的则是这样)。你现在是根。更改您的密码:

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

reboot,或者,如果您知道自己的正常运行水平,请说出telinit 2(或说什么)。

替换init:从表面上类似于单用户模式的技巧,使用的指示基本相同,但在命令行方面需要更多技巧。您按照上面的方法引导内核,但是single添加了init=/bin/sh。这将运行/bin/sh在的地方init,并会给你一个非常,几乎没有设施早外壳。此时,您的目标是:

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

根据您的特定设置,这些操作可能很简单(与单用户模式的说明相同),或者非常不重要:加载模块,初始化软件RAID,打开加密卷,启动LVM等。没有init,您将不会运行dæmons或任何其他进程,而是运行/bin/sh其子进程,因此您实际上是一个人。您也没有工作控制权,因此请小心输入。一个放错了位置cat,如果无法离开它,您可能必须重新启动。

救援磁盘:这很容易。引导您选择的应急磁盘。挂载您的根文件系统。该过程取决于卷的分层方式,但最终归结为:

 # do some stuff to make your root volume available.
 # The rescue disk may, or may not do it automatically.
 mkdir /tmp/my-root
 mount /dev/$SOME_ROOT_DEV /tmp/my-root
 $EDITOR /tmp/my-root/etc/shadow
 # Follow the `/etc/shadow` editing instructions near the top
 cd /
 umount /tmp/my-root
 reboot

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

其他方法

显然,上述内容有无数种变化。他们都归结为两个步骤:

  1. 获得对计算机的root访问权限(第22章-以及真正的窍门)
  2. 以某种方式更改root的密码。

无论如何要远程执行此操作?假设SSH已关闭。
CMCDragonkai 2014年

1
如果没有SSH(或者假设其他任何情况,通常都是不安全的方法,如rsh或telnet),则您将无法远程访问计算机,因此无法更改密码。当然,除非目标计算机有一个已知的可远程利用的问题,该问题可以以某种方式帮助您生成shell。这种想法使我震惊的不只是在其上运行的telnet守护程序。:)
Alexios

因此,我将不得不物理传输到那里进行修复?
CMCDragonkai 2014年

WRT“以某种方式更改root的密码”,请参见此处:unix.stackexchange.com/a/168422/25985
goldilocks 2014年

7

我认为,这几乎适用于任何发行版。

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

root:$6$asdG0[..etc...]ae/:15666:0:99999:7:::

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

root::15666:0:99999:7:::

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

要特别小心:

  • 创建/etc/shadowfirst 的备份副本。
  • 在设置新密码之前,请勿以root用户身份登录。这不是至关重要的,但可以防止理论上无特权的恶意软件通过某种形式的冰雹玛丽通过的可能性(“嘿,也许没有root密码...”)。金达牵强的海事组织。

那会起作用,但是男孩确实让我*勉强*删除了根帐户上的密码。我认为Ubuntu不会将您放在运行级别1的根shell中吗?还是将passwdLive CD 运行在chroot环境中不是更好的主意吗?
SailorCire

如果您觉得先尝试其他方法更安全,请继续。但是,只要您没有root密码就离开系统,就可以了。恶意软件不会试图利用此漏洞,因为如果它在引导时运行,则无论如何它已经具有root特权。因此,我猜不要首先以其他任何人的身份登录(在不允许通过显示管理器进行root用户登录的系统上,除非您可以切换到控制台,否则这可能是一个问题)。即使那样,似乎也不太可能。
goldilocks 2014年

@SailorCire ^^^
goldilocks

我也非常怀疑这种恶意软件的可能性。但是,我提出的建议背后的想法是,它禁止我们很多人都陷入这种“哦,我稍后会更改它,因为它现在可以工作”的心态。
SailorCire

您也可以参考此答案以获取手动生成密码的方法/etc/shadow
NullUser 2015年

4

从我认为您正在使用RHEL的标签来看,但是该解决方案对于所有发行版都应该同样有效。

如果忘记了root密码,则可以在单用户模式下引导并使用它来更改密码。红帽分步指南中介绍了这种方法:

  1. 进入GRUB菜单,然后按e
  2. 选择以开头的行kernel,再按e一次。
  3. 在此行的末尾,放single。然后按ENTERb从中取出。

您最终将得到一个提示,您可以在其中键入passwd root和更改密码。然后键入reboot以重新引导系统。


1
仅当您没有任何引导密码时,此方法才有效。
pradeepchhetri 2012年

1
而且,如果您不对单用户shell使用/ sbin / sulogin(它将提示输入root的密码)。
James O'Gorman

如果可以访问文件系统,则可以进行编辑/boot/grub/grub.conf以删除引导程序密码,/etc/inittab并将单用户外壳程序更改为/ bin / sh(cc @pradeepchhetri)
NullUser 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.