导航菜单

Linux命令大全-su命令

陆兴东 2026-04-07 18 浏览 Linux命令

一、简介

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、切换到指定用户

[root@CentOS7 ~]# su - tom 

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会话。
  • 在生产环境操作时,尽量避免使用用户身份切换,减少不必要的问题发生,如果确实需要,使用完成之后,要及时退出。