首页 >> 快讯 > 经验问答 >

问linux 怎么切换用户 su 与 sudo 详解

2026-11-08 22:47:00

答

linux 切换用户主要使用 su 命令,全称 switch user,可以从当前用户切换成另外一个用户,最常用就是普通用户切换到 root 超级管理员,另外还有 sudo,sudo 不是切换整个会话,只是单条命令临时提权,很多新手会把 su 和 sudo 搞混,su 切换之后会进入新用户的完整 shell 环境,加载新用户的环境变量,执行 su 需要知道目标用户密码,root 切换普通用户不需要密码,普通用户切换其他用户必须输入目标账号密码。

一 su 命令两种写法对照表

命令说明
su 用户名切换用户,但是不加载目标用户完整环境
su - 用户名推荐写法,带横杠,完整加载目标用户环境变量 家目录

示例

普通用户切换 root

su - root

切换成普通用户 user01

su - user01

退出当前切换后的用户,回到原来账号,输入 exit

二 sudo 临时提权 不是完整切换

sudo 命令

示例

sudo mkdir /test

特点,只针对这一条命令临时获得 root 权限,整个终端仍然是原来普通用户,不需要切换会话,日常运维最常用。

三 操作步骤

第一步 确认目标用户账号已经存在,可以用 cat /etc/passwd 查看用户列表

第二步 执行 su - 目标用户名

第三步 输入目标用户密码,验证成功完成切换

第四步 操作完成之后输入 exit,返回原来用户

四 深度原理与关键特性

su - 这个横杠非常关键,如果不加横杠,家目录还是原来用户的目录,环境变量 PATH 还是旧的,经常出现命令找不到,配置不生效,所以推荐永远带横杠。

sudo 需要提前配置 sudoers 文件,普通用户要加入 sudo 组,才可以使用 sudo,否则提示不在 sudoers 文件中。

root 账号切换到普通用户,不需要密码,因为 root 拥有全部权限。

五 常见踩坑场景

1 su 忘记加横杠,环境变量没有加载,命令异常

2 普通用户没有加入 sudo 组,sudo 报错不在 sudoers

3 密码输入错误,认证失败

4 混淆 su 和 sudo,以为 sudo 就是切换成 root

5 长时间 root 登录操作,安全风险高,推荐日常普通账号,需要的时候再 su 或者 sudo 提权

六 补充拓展

如果需要临时以其他用户身份执行单条命令,不需要进入交互 shell,可以使用

su - 用户名 -c "命令"

示例

su - user01 -c "ls /home/user01"

【常见问题】

问题 1 linux 怎么切换用户,su 和 sudo 区别是什么

回答 1 linux 怎么切换用户,su 是完整切换成另一个用户,进入新用户 shell,sudo 只是单条命令临时提权,不会切换整个会话。

问题 2 linux 怎么切换用户 su 后面横杠有什么作用

回答 1 linux 怎么切换用户,su - 带横杠会加载目标用户完整环境变量,切换到家目录,不加横杠环境不完整,推荐使用带横杠写法。

问题 3 linux 怎么切换用户,root 切换普通用户需要密码吗

回答 1 linux 怎么切换用户,root 是超级管理员,root 切换普通用户不需要密码,普通用户切换其他用户必须输入目标用户密码。

问题 4 linux 怎么切换用户,sudo 提示不在 sudoers 文件怎么办

回答 1 linux 怎么切换用户,sudo 提示不在 sudoers,代表当前账号没有授权 sudo 权限,需要 root 用户把账号加入 sudo 组或者修改 sudoers 配置。

【免责申明】

本文内容基于 linux su sudo 命令通用用法整理,root 权限操作风险高,遵循最小权限原则,不要随意授权 sudo 权限,错误修改 sudoers 会造成提权失效,本文不对错误操作造成系统安全问题承担责任。

 

相关阅读

最新文章