我还没有遇到过这种情况,但是为了以防万一,我记录了这个过程。
假设我记不起 Linux 服务器的 root 密码。我能找到的这种场景的每个示例都说首先启动到单用户模式。如果我的服务器当前在多用户模式下运行,并且我没有以 root 身份打开任何会话,该怎么办?我究竟该如何在没有 root 访问权限的情况下命令有序关机,以便开始密码恢复过程?
答案1
在大多数 Linux 系统上,如果您从控制台按下CTRL- ALT-,DEL则命令shutdown -r now
将被执行并导致系统重新启动。如果您的 init 脚本设置正确,这应该会导致安全重启。您可以修改您的inittab
- CTRL-ALT以DEL执行任何您想做的事情,包括切换到单用户模式。重新启动后,您可以使用 livecd、启动到单用户模式或任何您喜欢的模式。您应该提前测试是否需要 root 密码才能在您的系统上进入单用户模式。在某些系统上不需要(Ubuntu/Debian 禁用 root 密码时),而在其他系统上则需要。
如果你的系统使用 init,那么/etc/inittab
# What to do when CTRL-ALT-DEL is pressed.
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
对于具有 upstart 的系统,请检查文件/etc/event.d/control-alt-delete
# control-alt-delete - emergency keypress handling
#
# This task is run whenever the Control-Alt-Delete key combination is
# pressed. Usually used to shut down the machine.
start on control-alt-delete
exec /sbin/shutdown -r now "Control-Alt-Delete pressed"
答案2
避免因丢失 root 密码而烦恼的一些想法:
- 不要使用 root 帐户,而是使用启用了 sudo 的用户帐户。
- 使用以下方式管理您的服务器木偶。仅使用 Puppet 更改您的 root 密码。这样,即使您丢失了 root 密码,也只需修改 Puppet 清单中的密码,然后等待您的服务器获取它。
- 配置您的服务器以允许基于 LDAP 的身份验证。
答案3
根据操作系统的不同,一种快捷的方法是使用 SLAX,即使用实时分发版手动或通过 chroot 编辑 /etc/passwd 或 /etc/shadow 文件...或者...启动到单用户模式并使用特定于操作系统的恢复程序。