systemctl isolate rescue.target可立即切换至等效单用户模式,停止非必要服务、保留基础服务并启动root shell;验证用systemctl list-jobs或systemctl status rescue.target;默认目标仍为multi-user.target,非开机自动进入。

在 Linux 中,systemctl 并不直接提供“单用户模式”这个传统 SysV 术语,而是通过 target(目标单元) 来实现类似功能。真正对应传统运行级别 1(单用户模式)的是 rescue.target,它提供最小化、带 root shell 的维护环境,禁用大多数网络服务和多用户登录,适合故障排查与系统修复。
如何用 systemctl 进入 rescue 模式(等效单用户)
执行以下命令可立即切换到 rescue.target(需 root 权限):
sudo systemctl isolate rescue.target
系统会:
- 停止所有非必要服务(如 nginx、sshd、dbus-user 等)
- 保留基础系统服务(如 systemd-journald、udev、local-fs)
- 启动一个 root shell 在当前控制台(tty1),无需密码(若未设 root 密码或已配置 PAM 允许)
- 不启动图形界面、不启用网络(除非显式配置了
network.target依赖)
✅ 注意:这不是关机或重启,只是临时切换运行状态;退出 shell 后默认返回前一个 target(如
multi-user.target),除非你手动切回。
如何验证当前处于 rescue 模式
systemctl get-default # 显示默认启动目标(通常仍是 multi-user.target 或 graphical.target) systemctl list-jobs # 查看当前正在执行的 job,应含 isolate rescue.target systemctl status rescue.target
还可检查当前激活的 target:
systemctl list-units --type=target --state=active | grep -E "(rescue|basic)"
如何设置开机默认进入 rescue 模式(仅测试/调试用)
⚠️ 警告:这会让系统每次启动都停在 rescue shell,不可用于生产环境。
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
sudo systemctl set-default rescue.target
之后重启即生效。恢复默认(如 multi-user):
sudo systemctl set-default multi-user.target
rescue.target 和 emergency.target 的区别
| 特性 | rescue.target |
emergency.target |
|---|---|---|
| 启动依赖 | 依赖 basic.target + sysinit.target,挂载本地文件系统 |
仅依赖 sysinit.target,不自动挂载任何非 root 文件系统
|
| Shell 启动 | 自动启动 /bin/bash(通过 rescue.service) |
同样启动 shell,但若 /usr 未挂载或 /bin/bash 不在 root 分区,可能失败 |
| 实用性 | 更安全、更常用,适合大多数单用户维护场景 | 极端情况使用(如 /usr 损坏、root fs 只读需强制修复) |
要进入 emergency 模式:
sudo systemctl isolate emergency.target
测试后快速恢复多用户环境
退出 rescue shell(输入 exit 或按 Ctrl+D),systemd 会尝试回到上一个 active target。若没自动恢复,手动切回:
sudo systemctl isolate multi-user.target
或带图形界面(如有):
sudo systemctl isolate graphical.target
不复杂但容易忽略:rescue.target 是 systemd 对单用户模式的标准实现,不是兼容层,也不依赖 /etc/inittab 或旧式 runlevel。只要确认系统使用 systemd(ps 1 | grep systemd),就可放心用上述方式隔离与测试。

















