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

相关推荐
数智工坊7 小时前
Zotero自建Ubuntu WebDAV附件同步方案(完美解决存储空间不足)
linux·运维·ubuntu
ltl8 小时前
HTTP/3 实战:从 QUIC 到 H3 的完整请求链路
linux
独隅8 小时前
GitHub Actions 自动化运维实战:CI/CD 流水线一体化效果展示
运维·自动化·github
ltl9 小时前
POSIX 文件锁:flock、fcntl 与 NFS 上的工程陷阱
linux
ltl9 小时前
CUDA 生态:cuBLAS、cuDNN、NCCL、Triton、CUTLASS
linux
饺子大魔王的男人9 小时前
CentOS部署Cockpit:图形化查看系统、日志与服务状态
linux·运维·centos
不会就选b9 小时前
Linux之信号(二)
linux·运维·服务器
我是小灰灰吖10 小时前
QT在线安装器使用指南:从下载到配置完整教程
linux·qt·ubuntu
GlueNa2SiO310 小时前
第十八章 Linux故障排查与恢复
linux·服务器·笔记·学习
qq_2676128910 小时前
Gitee项目管理推荐:从工具链割裂到DevOps全链路贯通的企业级协作实践
运维·gitee·devops