Linux用户切换命令区别详解
1. su
-
作用:默认切换到
root
用户(需要输入root
用户的密码)。 -
环境变量:保持当前用户的环境变量和工作目录(不加载
root
的配置文件如~/.bashrc
或~/.profile
)。 -
示例:
-
2.
su root
-
作用:等同于
su
,明确指定切换到root
用户(与su
完全一致)。 -
环境变量:同
su
,不加载root
的环境变量。 -
示例:
3. sudo su (临时提权)
-
作用:通过
sudo
权限切换到root
用户(需要输入当前用户的密码,而不是root
密码)。 -
环境变量:保留当前用户的环境变量(除非结合
-
)。 -
适用场景:适用于系统配置为禁止直接使用
su
(如 Ubuntu),允许通过sudo
提权。 -
示例:
4. su -
-
作用:切换到
root
用户,并模拟完整的登录环境(类似重新登录)。 -
环境变量:加载
root
的环境变量(如/root/.bash_profile
),并切换工作目录到/root
。 -
适用场景:需要完全以
root
身份操作(如安装全局软件、修改系统配置)。 -
示例:
5. sudo su -
-
作用:通过
sudo
权限切换到root
,并加载完整的登录环境。 -
环境变量:同
su -
,加载root
的环境变量。 -
适用场景:需要以
root
身份运行完整环境,但不想知道root
密码(依赖sudo
权限)。 -
示例
6. su user
-
作用:切换到指定用户(如
user
),需要输入目标用户的密码。 -
环境变量:保留当前环境变量,不加载目标用户的配置文件。
-
示例:
对比总结
命令 | 目标用户 | 密码需求 | 环境变量 | 适用场景 |
---|---|---|---|---|
su | root | root 密码 | 当前环境 | 临时切换为 root,保留当前环境 |
su root | root | root 密码 | 当前环境 | 同 su |
sudo su | root | 当前用户密码 | 当前环境 | 无 root 密码时提权(需 sudo 权限) |
su - | root | root 密码 | root 环境 | 完全以 root 身份操作系统 |
sudo su - | root | 当前用户密码 | root 环境 | 同 su - ,但依赖 sudo 权限 |
su user | user | 目标用户密码 | 当前环境 | 临时切换为普通用户 |
使用建议
-
需要完整环境:用
su -
或sudo su -
。 -
临时提权:用
sudo su
(无需知道 root 密码)。 -
切换普通用户:用
su user
或su - user
(加载环境)。