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 用户(连环境也变)"。

相关推荐
加勒比之杰克4 小时前
从阻塞 IO 到 epoll:把 Linux 网络 IO 一次讲透
linux·网络·windows·select·多路转接·epoll·poll
开开心心_Every5 小时前
文字转语音无字数限,对接微软接口比付费爽
运维·服务器·人工智能·edge·pdf·paddle·segmentfault
龙卷风卷云5 小时前
【BUG】Nginx使用upstream后端接口报 400
运维·nginx·bug
书到用时方恨少!5 小时前
Linux 常用指令使用指南:从入门到“救命”
linux·运维·服务器
默|笙5 小时前
【Linux】线程同步与互斥_同步(1)
linux
Deitymoon5 小时前
linux——条件变量
linux
阿常呓语5 小时前
Bash `readonly` 详解:只读变量、数组与函数
bash·linux command
wwj888wwj5 小时前
Ansible基础(复习2)
linux·运维·服务器·ansible
无心水5 小时前
2、5分钟上手|PyPDF2 快速提取PDF文本
java·linux·分布式·后端·python·架构·pdf
薛定谔的悦5 小时前
IEC 60870-5-104协议解析——电力系统远动通信实战
linux·状态模式·储能·ems