一、简介
su(英文全拼: switch user)命令主要功能是用来切换用户身份使用。除管理员用户(root)外,其它普通用户进行用户身份切换时需要密码验证。
二、语法
语法:su [选项] [用户名]
参数说明:
-或-l或--login: 提供类似直接登录的环境
-c command: 执行指定命令后退出
-s shell: 指定要使用的shell
-m或-p或--preserve-environment: 保留当前环境变量
-g或--group:指定主组
-G或--supp-group:指定一个辅助组
-f:不读取启动文件(csh或tcsh)
-h或--help:显示帮助信息
-V或--version:显示版本信息
三、实战
1、切换到指定用户
[]2、临时使用tom身份执行命令
[root@CentOS7 ~]# su - tom -c "cat /home/tom/1.txt"this is tom's file.
3、临时使用tom身份执行脚本
[root@CentOS7 ~]# su – tom -c "sh /home/tom/1.sh"tom:/home/tom
切换到某一个用户身份,如果想退出,直接输入“exit”或“Ctrl+D”,即可退出当前su会话。
在日常工作中,大家有时使用su进行用身份切换时,有时会用“su -”进行切换用户身份,那么问题来了,“su”和“su -”有什么区别呢?这里给大家简单的总结了一下。如下:
su(非登录切换):
保持当前切换用户的环境变量 工作目录不变 PATH等环境变量不变
su - (登录切换):
加载切换用户的完整环境 切换到目标用户的家目录(如:/home/tom) 重新设置PATH、HOME等环境变量 执行目标用户的登录脚本
举列对比:
1、使用“su”进行切换用户身份
// 当前用户:root,家目录:/root[root@CentOS7 ~]# pwd/root[root@CentOS7 ~]# echo $HOME/root[root@CentOS7 ~]# su tom[tom@CentOS7 root]$ pwd/root[tom@CentOS7 root]$ echo$HOME/home/tom
使用“su”进行用户身份切换后,切换后的用户(tom)的家目录和HOME变量没有发生变化,还是切换前用户的相关信息。
2、使用“su -”进行切换用户身份
// 当前用户:root,家目录:/root[root@CentOS7 ~]# pwd/root[root@CentOS7 ~]# echo $HOME/root[root@CentOS7 ~]# su - tom上一次登录:六 3月 14 10:21:57 CST 2026pts/0 上[tom@CentOS7 ~]$ pwd/home/tom[tom@CentOS7 ~]$ echo$HOME/home/tom
使用“su -”进行用户身份切换后,切换后的用户(tom)的家目录和HOME变量都发生了变化,完整使用了tom用户的信息。
简单总结如下:
命令 | 用途 | 特点 |
su | 切换用户 | 不加载目标用户环境变量 |
su - | 切换用户(登录shell) | 加载完整环境变量,切换到家目录 |
四、注意事项
日常工作避免共享root口令,减少root口令的传播。 使用“su -”确保切换用户的完整环境。 用完用户身份之后,及时退出su会话。 在生产环境操作时,尽量避免使用用户身份切换,减少不必要的问题发生,如果确实需要,使用完成之后,要及时退出。