在 Linux 系统中,切换用户的常用命令如下,根据使用场景选择合适的方式:
su
(Switch User)su [选项] [用户名]
su -
或 su - root
su username
需要密码:需要输入目标用户的密码(若从普通用户切换到其他用户)。
su - # 切换到root,加载环境变量
su - user1 # 切换到user1,加载其环境变量
su user1 # 切换到user1,但环境变量不变
sudo
(Superuser Do)sudo -u 用户名 命令
sudo
临时获得 root 权限(需配置 /etc/sudoers
)。需要密码:输入当前用户的密码(若未配置免密码)。
sudo -u user1 whoami # 以user1身份执行whoami
sudo su - # 切换到root(等效于su -,但依赖sudo配置)
login
命令bash
login username # 需要root权限
bash
ssh username@localhost # 通过SSH本地登录切换
命令/场景 | 加载环境变量 | 需要目标用户密码 | 需要sudo权限 | 典型用途 |
---|---|---|---|---|
su - username |
✅ | ✅ | ❌ | 完整切换到目标用户 |
su username |
❌ | ✅ | ❌ | 部分切换(不推荐) |
sudo -u username |
✅ | ❌(当前用户密码) | ✅ | 临时以其他用户执行命令 |
sudo su - |
✅ | ❌(当前用户密码) | ✅ | 替代su - (需配置) |
安全建议:
sudo
而非直接共享 root 密码。su
切换到 root,推荐 sudo command
按需提权。环境变量问题:
su -
会加载目标用户的 ~/.bashrc
等配置文件,而 su
不会。
权限配置:
sudo
报错,需检查用户是否在 /etc/sudoers
中配置权限:
bash
visudo # 编辑配置(推荐命令)
根据需求选择合适的方式,平衡安全性与便利性。