如果我们不知道root密码并且没有机器的root访问权限,我们该如何更改root密码呢?
答案1
以下是我能想到的几种方法,从干扰性最小到干扰性最大。
无需重启
使用须藤:如果您有sudo
权限运行passwd
,您可以执行以下操作:
sudo passwd root
进入你的密码,然后输入 root 的新密码两次。完毕。
编辑文件:这在不太可能的情况下有效,您没有完全sudo
访问权限,但是您做有权编辑/etc/{passwd,shadow}
.打开/etc/shadow
,用sudoedit /etc/shadow
或 用sudo $EDITOR /etc/shadow
。将 root 的密码字段(第二个和第三个冒号之间的所有随机字符:
)替换为您自己的用户的密码字段。节省。本地的密码和你的一样。登录并将密码更改为其他内容。
这些都是简单的。
需要重新启动
单用户模式:这是 Renan 刚刚解释的。如果您可以访问 GRUB(或引导加载程序)并且可以编辑 Linux 命令行,那么它就可以工作。如果您使用 Debian、Ubuntu 和其他一些系统,则它不起作用。某些引导加载程序配置需要密码才能执行此操作,您必须知道该密码才能继续。无需再费周折:
- 重启。
- 输入启动时密码(如果有)。
- 输入引导加载程序的菜单。
- 如果单用户模式可用,请选择该模式(Debian 称之为“恢复模式”)。
- 如果没有的话,运行 GRUB:
- 突出显示您的正常启动选项。
- 按e进入编辑模式。那里可能会要求您输入 GRUB 密码。
kernel
突出显示以或开头的行linux
。- 按e。
- 最后加上“单身”两个字。 (别忘了前面加一个空格!)
- 按下Enter并启动编辑的节。有些 GRUB 使用Ctrl- X,有些使用b.它在屏幕底部说明了它是哪一个。
您的系统将以单用户模式启动。某些发行版此时不会要求您输入 root 密码(Debian 和基于 Debian 的发行版会要求您输入 root 密码)。你现在是 root 了。更改您的密码:
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
,并且会给你一个非常早期的外壳几乎没有便利设施。此时您的目标是:
- 挂载根卷。
- 快跑
passwd
吧。 - 使用命令更改密码
passwd
。
根据您的特定设置,这些可能很简单(与单用户模式的说明相同),也可能非常重要:加载模块、初始化软件 RAID、打开加密卷、启动 LVM 等等。如果没有init
,您就不会运行守护进程或任何其他进程,而是运行/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 身份登录并立即更改。
其他方法
显然,上述内容有无数种变化。它们都归结为两个步骤:
- 获得计算机的 root 访问权限(第 22 条军规 — 也是真正的技巧)
- 以某种方式更改 root 的密码。
答案2
我认为这应该适用于任何发行版。
如果您可以从另一个系统(例如 Live 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/shadow
。 - 在设置新密码之前,请勿以 root 以外的任何人身份登录。这并不重要,但可以防止非特权恶意软件制造某种类型的理论上的可能性冰雹玛丽山口(“嘿,也许没有 root 密码......”)。在我看来,有点牵强。
答案3
从标签来看,我认为您正在使用 RHEL,但此解决方案应该同样适用于所有发行版。
如果忘记 root 密码,您可以以单用户模式启动并使用它来更改密码。这种方法描述于红帽分步指南:
- 进入 GRUB 菜单并按e。
- 选择以 开头的行
kernel
,再次按e。 - 在此行的末尾放置
single
.然后按下ENTER并b退出它。
您最终会看到一个提示,您可以在其中输入passwd root
并更改密码。然后键入reboot
以重新启动系统。