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 -isudo bash -i 安全,不需要 root 密码
系统管理员已设置 root 密码 su - 更传统,环境更干净
临时执行单条命令 sudo command 不必进入交互式 shell
想进入完整 root 登录环境 sudo -isu - 模拟真正登录 root

🧩 五、总结对比表

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

一句话总结:

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

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

相关推荐
Wpa.wk9 分钟前
性能测试-初识性能测试基础(性能测试流程,计划等)
java·运维·经验分享·测试工具·性能测试
一个平凡而乐于分享的小比特36 分钟前
Linux内核构建三剑客:Kconfig、.config与Makefile关系详解
linux·makefile·kconfig·.config
轩轶子37 分钟前
【Macbook环境配置】Macbook设置ssh免密登陆服务器
运维·服务器·ssh
Dillon Dong38 分钟前
服务器运维:Linux 磁盘查看 & 清理常用命令
linux·运维·服务器
ben9518chen43 分钟前
Linux用户管理
linux·运维·服务器
root666/1 小时前
【后端开发-nginx】proxy_pass和proxy_redirect参数作用
运维·nginx
用户6135411460161 小时前
xampplinux_v174beta11在 Linux 下的安装与配置步骤
linux
Byron Loong1 小时前
【系统】Mac系统和Linux 指令对比
linux·macos·策略模式
markvivv2 小时前
在 Kylin Linux Advanced Server for Kunpeng V10 上构建 VSCode 1.106
linux·vscode·kylin
2501_940414082 小时前
搞了一次平台工程,我把本地的 Docker Desktop 彻底卸了
运维·docker·容器