linux sudo su su - 三者区别

在 Linux 中,sudosusu - 都与权限切换相关,但用途和效果不同


1. sudo

普通用户执行特权命令

bash 复制代码
sudo command
以 root 权限执行单条命令

需要输入 当前用户的密码

权限由 /etc/sudoers 文件控制

执行后环境变量保持当前用户不变

示例:

bash 复制代码
sudo apt update  # 以 root 权限更新软件包列表

2. su (Switch User)

切换到其他用户(默认 root)

bash 复制代码
su [用户名]
切换到指定用户(不指定则切换到 root)

需要输入 目标用户的密码

保持 当前的工作目录和环境变量

主要用于用户身份切换

示例:

bash 复制代码
su          # 切换到 root(需 root 密码)
su alice    # 切换到用户 alice(需 alice 的密码)

3. su - (su + 登录 shell)

切换到其他用户的登录环境

bash 复制代码
su - [用户名]
连字符 - 或 -l 表示登录 shell

需要输入 目标用户的密码

切换到目标用户的 家目录

加载目标用户的 完整环境变量(~/.bashrc, ~/.profile 等)

类似于重新登录

示例:

bash 复制代码
su -        # 切换到 root 的登录环境
su - alice  # 切换到 alice 的登录环境

对比表格

命令 需要密码 环境变量 工作目录 典型用途
sudo cmd 当前用户密码 当前用户环境 当前目录 临时执行特权命令
su 目标用户密码 当前用户环境 当前目录 切换用户身份但保持环境
su - 目标用户密码 目标用户环境 目标用户家目录 完全切换到目标用户环境

使用建议

  • 日常管理 :使用 sudo 执行单条特权命令(更安全,有操作日志)

  • 需要 root shell :使用 sudo -isudo su -(比直接 su - 更安全)

  • 完全切换用户环境 :使用 su - username

  • 临时切换身份 :使用 su username


安全提示

bash 复制代码
# 推荐的安全做法:
sudo -i          # 切换到 root 的登录环境(使用当前用户密码)
sudo -u alice bash  # 以 alice 身份启动 shell

# 不推荐(除非必要):
直接使用 root 密码通过 su/su - 切换

最佳实践 :配置 sudo 权限给普通用户,避免共享 root 密码,使用 sudo 代替直接 su 到 root。

相关推荐
Johny_Zhao8 小时前
OpenClaw安装部署教程
linux·人工智能·ai·云计算·系统运维·openclaw
YuMiao1 天前
gstatic连接问题导致Google Gemini / Studio页面乱码或图标缺失问题
服务器·网络协议
chlk1232 天前
Linux文件权限完全图解:读懂 ls -l 和 chmod 755 背后的秘密
linux·操作系统
舒一笑2 天前
Ubuntu系统安装CodeX出现问题
linux·后端
改一下配置文件2 天前
Ubuntu24.04安装NVIDIA驱动完整指南(含Secure Boot解决方案)
linux
碳基沙盒2 天前
OpenClaw 多 Agent 配置实战指南
运维
深紫色的三北六号2 天前
Linux 服务器磁盘扩容与目录迁移:rsync + bind mount 实现服务无感迁移(无需修改配置)
linux·扩容·服务迁移
SudosuBash2 天前
[CS:APP 3e] 关于对 第 12 章 读/写者的一点思考和题解 (作业 12.19,12.20,12.21)
linux·并发·操作系统(os)
哈基咪怎么可能是AI3 天前
为什么我就想要「线性历史 + Signed Commits」GitHub 却把我当猴耍 🤬🎙️
linux·github
十日十行4 天前
Linux和window共享文件夹
linux