# ubuntu切换用户su命令
在 Ubuntu 中切换用户有多种方法,我来为你详细介绍:
# 基本语法
su [选项] [用户名]
1
选项 | 说明 |
---|---|
- 或 -l 或 --login | 完全切换,模拟用户登录 |
-c | 执行单条命令后返回 |
-s | 指定 shell |
-m | 保持当前环境变量 |
- 基本功能
su
允许当前用户临时切换到另一个用户身份,以便执行需要该用户权限的操作。
- 工作原理
- 执行
su
时会提示输入目标用户的密码 - 验证成功后,获得目标用户的权限
- 使用
exit
或Ctrl+D
返回原用户
# su
实际应用场景
场景1:系统管理
# 普通用户需要安装软件
su -
apt install nginx
exit
1
2
3
4
2
3
4
场景2:多用户开发
# 开发者 gun 需要检查同事 john 的项目
su - john
cd /projects/john-project
ls -la
exit
1
2
3
4
5
2
3
4
5
场景3:服务管理
# 管理 PostgreSQL 数据库
su - postgres
psql
\q
exit
1
2
3
4
5
2
3
4
5
# su
与 sudo
的区别
特性 | su | sudo |
---|---|---|
需要密码 | 目标用户的密码 | 当前用户的密码 |
权限范围 | 获得完整用户权限 | 按配置授权特定命令 |
环境变量 | 可切换完整环境 | 通常保持当前环境 |
审计跟踪 | 简单 | 详细的日志记录 |
# su
命令(Switch User)
切换到其他用户
# 切换到指定用户(不改变环境变量)
su username
# 完全切换(推荐)- 模拟用户登录
su - username
su -l username
1
2
3
4
5
6
2
3
4
5
6
# 切换到 john 用户
su - john
# 切换到 root 用户
su -
su - root
1
2
3
4
5
6
2
3
4
5
6
# sudo
命令
# 以其他用户身份执行单条命令
sudo -u username command
# 示例:以 john 用户创建文件
sudo -u john touch /home/john/test.txt
1
2
3
4
5
2
3
4
5
切换到其他用户的 shell
# 切换到其他用户的 shell
sudo -u username -s
sudo -i -u username
1
2
3
2
3
# login
命令
# 重新登录为其他用户
login username
1
2
2
普通用户切换
# 当前用户是 gun,要切换到 john
su - john
# 输入 john 的密码
# 切换回 gun
exit
# 或者
logout
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
切换到 root 用户
# 方法1:使用 su
su -
# 输入 root 密码
# 方法2:使用 sudo(如果当前用户在 sudo 组)
sudo -i
sudo su -
# 输入当前用户密码
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
临时以其他用户执行命令
# 以 postgres 用户执行命令
sudo -u postgres psql
# 以 www-data 用户查看文件
sudo -u www-data ls -la /var/www/html
1
2
3
4
5
2
3
4
5
# 查看用户信息
检查当前用户
# 查看当前用户名
whoami
# 查看详细信息
id
# 查看登录用户
who
w
1
2
3
4
5
6
7
2
3
4
5
6
7
检查用户切换历史
# 查看当前会话信息
echo $USER
echo $HOME
pwd
1
2
3
4
2
3
4
# su
历史背景
su
起源于 1970 年代的 Unix 系统- 是 multi-user 系统的基础功能
- 现代系统中常与
sudo
配合使用
# 总结
su
的核心作用:
- 🔄 临时切换用户身份
- 🔐 获得目标用户的全部权限
- 🏠
su -
提供完整的用户环境
使用建议:
- 日常使用
su -
获得完整环境 - 管理任务结合使用
su
和sudo
- 操作完成后及时
exit
这就是 su
命令的完整说明!它是 Linux 系统管理的基础工具之一。