Linux 中sudo bash -i 和 su root 有什么区别?

🧩 一、命令本质区别

命令 主要作用 权限来源 密码要求
sudo bash -i 用当前用户的 sudo 权限启动一个交互式 root Shell 当前用户(需在 sudoers 里) 输入当前用户密码
su root 直接切换到 root 用户 目标用户(root) 需要root 密码

🧩 二、原理区别

✅ sudo bash -i

  • sudo 表示"以超级用户身份执行命令"。

  • bash -i 表示启动交互式 Bash Shell。

  • 合在一起,就是:

    "以 root 权限运行一个交互式 Bash Shell"。

它仍然是以你当前用户的身份 启动的,只是命令执行权限是 root 。

所以一些环境变量(比如 $HOME、$USER)仍可能指向你的普通用户。


✅ su root

  • su = substitute user(切换用户)。

  • 执行后会完全切换到 root 账户,包括:

    • 用户 ID(UID/GID)

    • 环境变量($HOME=/root)

    • 登录 Shell

    • 权限上下文

也就是说,su root 是真正"变成 root 用户本身 ",而 sudo bash -i 是"以 root 权限运行当前 shell"。


🧩 三、环境变量差异

环境变量 sudo bash -i su root
$USER 原用户名 root
$HOME 原用户的 home 目录 /root
$LOGNAME 原用户 root
$SHELL bash(但继承自原用户) root 的默认 shell
$PATH 可能继承用户的 PATH root 的 PATH

✅ 如果你想让 su 切换时带 root 的完整登录环境(像真正登录一样),用:

复制代码

su - root

或简写:

复制代码

su -


🧩 四、常见使用场景

场景 推荐命令 原因
你有 sudo 权限(常见于现代系统) sudo -i 或 sudo bash -i 安全,不需要 root 密码
系统管理员已设置 root 密码 su - 更传统,环境更干净
临时执行单条命令 sudo command 不必进入交互式 shell
想进入完整 root 登录环境 sudo -i 或 su - 模拟真正登录 root

🧩 五、总结对比表

对比项 sudo bash -i su root
是否需要 root 密码 ❌ 否(用自己密码) ✅ 是
环境变量是否切换到 root 部分继承原用户 完全切换
是否进入 root 的 home 目录 否 是
权限方式 临时提升权限 完全切换用户
安全性(审计) 高(sudo 可记录日志) 相对低
推荐使用场景 普通用户临时提权 系统管理员登录 root

✅ 一句话总结:

  • sudo bash -i 是"以 root 权限打开一个交互 shell(仍保留原用户环境)";

  • su root 是"切换成真正的 root 用户(连环境也变)"。

相关推荐
朱包林3 分钟前
iTerm2终端配置指南
linux·javascript·python·云原生·容器·kubernetes·云计算
pengdott8 分钟前
Rocky linux9安装Jenkins最新版本2.585
运维·jenkins·流水线
祖力5529 分钟前
Linux系统移植、烧录与环境的搭建
linux·运维·服务器
对讲机数码科普37 分钟前
从电路原理到协议栈:模拟对讲机与数字对讲机的技术内核拆解
运维·网络·架构·软件工程
打工仔折腾 AI39 分钟前
极空间用 Docker 部署 Photopea:网页版 PS 的私有化实践
运维·后端·python·docker·容器·langchain·ai agent 实战
工具人55551 小时前
Docker 最新超详细版教程
运维·docker·容器
我送炭你添花1 小时前
ASA原理与电子维修实战:前言 一路修来,一路学习
运维·网络·学习
张小姐的猫1 小时前
【Linux】网络编程 —— 多路转接:epoll
linux·运维·网络
宋明河2 小时前
五种 IO 模型与 select、poll、epoll 对比
linux