Linux常用命令-su

命令

su

描述

run a command with substitute user and group ID
切换用户执行命令

用法

1
su [options] [-] [USER [arg]...]

选项

1
2
3
4
5
6
7
8
Options:
-m, -p, --preserve-environment 不更改环境变量
-g, --group <group> 指定所属组
-G, --supp-group <group> 指定附加组
-, -l, --login 切换为登录shell
-c, --command <command> 传递单个命令
--session-command <command> 传递单个命令,但不创建新的会话
-s, --shell <shell> 指定shell

注意

su命令仅用于需要临时切换用户时使用,使用完毕后一定记得exit退出,不建议长时间使用
root通过su切换至其他用户无需密码,非root用户切换时需要密码
切换到root用户时,最后的root可以省略su - [root]

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$ useradd usera
# 非登录方式切换,即不会读取目标用户的配置文件,不改变当前工作目录
$ su usera
$ whoami
usera
$ pwd
/root
$ exit
logout
# 登录方式切换,会读取目标用户的配置文件,并切换家目录,即完全切换
$ su - usera
$ whoami
usera
$ pwd
/home/usera
# 注意两种切换方式的环境变量差异
$ su usera -c "umask"
0022
$ su - usera -c "umask"
0002
$ su usera -c "echo aaa > /tmp/aaa"
$ su - usera -c "echo bbb > /tmp/bbb"
$ ll /tmp/aaa /tmp/bbb
-rw-r--r-- 1 usera usera 4 Mar 16 18:59 /tmp/aaa
-rw-rw-r-- 1 usera usera 4 Mar 16 19:00 /tmp/bbb