su、su -、sudo、sudo -i、sudo -s之间的区别
2026-07-01
运维
00

目录

1. su 用户名
2. su - 用户名(等价 su -l 用户名)
3. sudo 命令
4. sudo -s
5. sudo -i(最常用,推荐替代su - root)
快速对比总结

1. su 用户名

仅变更操作身份,不加载目标用户环境变量,当前所在工作目录保持不变,PATH、HOME等环境变量仍先用原登录用户

示例:su root

2. su - 用户名(等价 su -l 用户名)

模拟完整重新登录流程:

  1. 清空当前环境变量,加载目标用户完整环境(~/.bash_profile、~/.bashrc)
  2. 自动切换到目标用户家目录
  3. PATH、HOME、用户自定义变量全部更新为目标用户配置

示例:su - root

3. sudo 命令

临时以管理员权限执行单条命令,不会切换shell会话,仅当前这一条命令提权,执行完立刻退回原用户

  • 仅临时借用root权限,环境变量基本保留当前用户
  • 需要输入当前用户密码,不是root密码

示例:sudo cat /etc/shadow

4. sudo -s

切换至root shell,但不完整加载root登录环境

  1. 身份变为root,工作目录不变
  2. 仅部分root环境生效,不会读取root的登录配置文件
  3. 输入当前用户密码验证

适用:临时root交互shell,不需要完整root环境

5. sudo -i(最常用,推荐替代su - root)

完全模拟root登录。效果等同su - root

  1. 完整加载root用户全部登录环境变量
  2. 自动进入root家目录/root
  3. 读取root/.bash_profile/root/bashrc
  4. 输入当前普通用户密码,无需知道root密码

快速对比总结

命令是否切换环境是否切换家目录验证密码使用场景
su rootroot密码知道root密码,临时换身份
su - rootroot密码需要完整root登录环境
sudo 指令不换shell不切换当前用户单条命令临时提权
sudo -s部分加载不切换当前用户简易root交互shell
sudo -i完整加载root切换至/root当前用户日常运维,完整root登录环境

本文作者:zzz

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!