Linux(Centos 7.6)命令详解:su

1.命令作用

修改生效的用户id和组id为user(Change the effective user id and group id to that of USER.),即切换当前所处的用户;-参数暗带-l参数,如果USER未指定,默认是root(A mere - implies -l.   If USER not given, assume root.)

2.命令语法

Usage: su [OPTIONS] [-] [USER [arg]...]

3.参数详解

OPTIONS:

  • -m, -p, --preserve-environment,不重置环境变量
  • -g, --group <group>,指定主用户组
  • -G, --supp-group <group>,指定附加用户组,多个用户组间用逗号分隔
  • -, -l, --login,使shell成为登录shell,即变量切换为切换后用户的shell变量
  • -c, --command <command>,用-c向shell传递一个命令;创建新会话执行命令,执行后再退出到执行的用户
  • --session-command <command>,用-c向shell传递一个命令;不创建新会话,直接在当期会话里面执行命令
  • -f, --fast,快速切换用户身份时避免加载冗余配置(对csh或者tcsh有效,bash会忽略该参数)
  • -s, --shell <shell>,指定切换用户时使用的shell 解释器‌,覆盖目标用户在/etc/passwd中配置的默认shell
  • -h, --help,显示此帮助并退出
  • -V, --version,输出版本信息并退出

4.常用用例

4.1.是否切换用户环境变量

[root@node1 ~]# su user1      # 切换用户,但不切换家目录和环境变量
[user1@node1 root]$ exit
exit
[root@node1 ~]# su - user1    # 切换用户、家目录及环境变量
Last login: Mon Jun  9 18:14:19 CST 2025 on pts/0
[user1@node1 ~]$ exit
logout
[root@node1 ~]# su -p user1   # 切换用户,但不切换家目录和环境变量
bash: /root/.bashrc: Permission denied
bash-4.2$ exit
exit
[root@node1 ~]# su -m user1   # 切换用户,但不切换家目录和环境变量
bash: /root/.bashrc: Permission denied
bash-4.2$ exit
exit
[root@node1 ~]# su -lm user1  # 切换用户、家目录及环境变量
su: ignore --preserve-environment, it's mutually exclusive to --login.     # 提示忽略--preserve-environment,他与--login互斥
Last login: Mon Jun  9 18:14:41 CST 2025 on pts/0                          # 登录信息
[user1@node1 ~]$ 

4.2.指定用户组切换用户

[root@node1 ~]# groupadd userg            # 添加用户组
[root@node1 ~]# useradd -g userg user1    # 指定用户组添加用户
[root@node1 ~]# getent passwd user1       # 查看用户,用户组ID为1006,用户ID为1001
user1:x:1001:1006::/home/user1:/bin/bash
[root@node1 ~]# su -g userg user1         # 指定用户组切换用户
[user1@node1 root]$ pwd
/root
[user1@node1 root]$ exit
exit
[root@node1 ~]# su -lg userg user1        # 指定用户组切换用户和环境变量
Last login: Mon Jun  9 18:28:40 CST 2025 on pts/0
[user1@node1 ~]$ pwd
/home/user1
[user1@node1 ~]$ exit
logout
[root@node1 ~]# 

4.3.指定用户执行命令

[root@node1 ~]# su user1 -c 'whoami'                   # 实际不切换用户
user1
[root@node1 ~]# su - user1 -c 'whoami'                 # 创建新会话执行命令,然后退到执行的用户
user1
[root@node1 ~]# su - user1 --session-command 'whoami'  # 不创建新会话,在当前会话执行命令
user1
[root@node1 ~]# 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

豆是浪个

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值