su用于切换用户会话需目标密码,sudo用于临时提权执行命令需当前用户密码;su -可完全切换环境,sudo更安全且支持权限审计,日常推荐使用sudo并用visudo编辑配置。

在Linux系统中,切换用户是日常运维和使用中的常见需求。主要通过 su 和 sudo 两个命令实现,它们用途不同,机制也不同。下面详细介绍这两个命令的使用方法和注意事项。
su 命令:切换到另一个用户
su(switch user)用于切换当前登录用户到另一个用户账户,默认切换到 root 用户。
基本语法:su [选项] [用户名]
常见用法:
-
su—— 切换到 root 用户,需要输入 root 密码 -
su -或su --login—— 切换到 root 并加载其完整环境变量(推荐) -
su username—— 切换到指定用户,需输入该用户的密码 -
su - username—— 切换并加载目标用户的登录环境
区别说明:
-
su username:仅切换用户身份,不改变当前工作目录和环境变量 -
su - username:完全切换,相当于以该用户重新登录,环境干净
提示:普通用户使用 su 切换到其他用户需要知道对方密码;root 用户使用 su 可以无需密码直接切换到任何用户。
sudo 命令:以其他用户身份执行单条命令
sudo(superuser do)允许授权用户以其他用户(通常是 root)身份执行命令,而无需知道目标用户的密码。
基本语法:
sudo [选项] 命令
常见用法:
-
sudo command—— 以 root 身份执行某条命令,需输入当前用户的密码 -
sudo -i—— 模拟登录 root 用户,进入 root 的 shell 环境 -
sudo -u username command—— 以指定用户身份执行命令 -
sudo su -—— 先用 sudo 获取权限,再切换到 root(某些系统允许)
配置文件:/etc/sudoers,可通过 visudo 命令安全编辑。
例如,允许用户 alice 使用 sudo:
alice ALL=(ALL:ALL) ALL
优点:
- 不需要共享 root 密码
- 可精细控制用户能执行哪些命令
- 操作记录可审计(日志保存在 /var/log/auth.log 或 /var/log/secure)
su 与 sudo 的主要区别
- 目的不同:su 是切换用户会话,sudo 是临时提权执行命令
- 密码要求不同:su 需要目标用户密码,sudo 需要当前用户密码(若被授权)
- 安全性:sudo 更安全,便于权限管理和审计
- 使用场景:长期操作用 su -;临时管理任务推荐 sudo
实用建议
- 日常运维尽量使用 sudo,避免直接登录 root
- 使用
su -而不是su,确保环境正确 - 不要随意修改 sudoers 文件,应使用
visudo防止语法错误导致无法提权 - 检查当前用户权限可用
sudo -l
基本上就这些。掌握 su 和 sudo 的使用,能更安全高效地管理 Linux 系统权限。










