在 Linux 系统中,切换到 root 用户有很多方式,每种方式的适用场景、权限控制、安全性、使用体验都不同。下面我来详细对比所有主流的切换成 root 的方式,帮你选择最适合的方式。
🌱 1. su
(Switch User)
命令:
su
或切换到指定用户:
su - USERNAME
特点:
- 需要输入 root 的密码。
su
默认不加载目标用户的环境变量,su -
或su -l
才会加载。- 会打开一个新的 shell。
优点:
- 简单直接,不需要配置额外权限。
- 可以切换到任意用户(不仅仅是 root)。
缺点:
- 要知道 root 的密码,安全性略低(密码暴露风险)。
- 日志记录不如 sudo 清晰。
适用场景:
- 管理员手动临时切换,或需要以某个用户身份执行长时间任务。
🛡️ 2. sudo -i
命令:
sudo -i
特点:
- 不需要 root 密码,使用当前用户的密码。
- 相当于执行
login shell
,完全变成 root(包括环境变量)。
优点:
- 安全,配合
/etc/sudoers
精细化控制权限。 - 无需暴露 root 密码。
- 更适合现代系统(尤其是 Ubuntu)。
缺点:
- 需要提前配置 sudo 权限。
- 对不在 sudoers 文件中的用户无效。
适用场景:
- 正规授权用户执行管理员任务。
- 替代传统的 root 登录方式。
⚙️ 3. sudo su
(组合用法)
命令:
sudo su
特点:
- 使用当前用户的密码(sudo),然后以 root 身份打开一个 shell。
优点:
- 结合
sudo
和su
的特点,方便但不太干净。
缺点:
- 环境变量是混合状态,不如
sudo -i
清晰。 - 有争议:有时被认为是不好的习惯。
适用场景:
- 临时想开个 root shell,又不在意环境变量。
🧼 4. sudo -s
命令:
sudo -s
特点:
- 启动一个 shell,保留当前用户的环境变量,只是 UID 变成 root。
优点:
- 保持当前工作环境,仅提升权限。
- 写脚本时很有用。
缺点:
- 不是真正的 root login shell,可能会有路径或配置差异。
适用场景:
- 想以 root 权限执行操作,但不想换环境。
🔐 5. 直接登录 root(不推荐)
方式:
- 在登录界面直接输入 root(GUI 或 SSH)。
- 或者修改
/etc/ssh/sshd_config
允许 root 登录。
优点:
- 直接进入 root,不需要切换。
缺点:
- 极度不安全:暴露了 root 账户,容易被暴力破解。
- 不建议在生产环境使用。
适用场景:
- 某些极端场合,如系统恢复、紧急维护等。
✅ 总结对比
方法 | 是否需 root 密码 | 加载环境 | 安全性 | 适用场景 |
---|---|---|---|---|
su | ✅ 是 | ❌ 否(默认) | ⚠️ 中 | 手动切换、临时登录 |
su - | ✅ 是 | ✅ 是 | ⚠️ 中 | 模拟完整登录 |
sudo -i | ❌ 否 | ✅ 是 | ✅ 高 | 推荐方式,长期运维使用 |
sudo su | ❌ 否 | ⚠️ 混合 | ⚠️ 中 | 临时使用,不推荐大量依赖 |
sudo -s | ❌ 否 | ✅ 保留原用户 | ✅ 高 | 脚本/命令行下执行小任务 |
登录 root | ✅ 是 | ✅ 是 | ❌ 极低 | 非常规情况,不建议开放 |
如果你是:
- Ubuntu 用户 ➤ 推荐用
sudo -i
- 需要长时间操作 root ➤
sudo -i
orsu -
- 仅需执行几个命令 ➤
sudo -s
- 测试或恢复环境 ➤
su
/登录 root