Linux中切换用户并执行命令

在Linux中使用 su - testuser && ls 这样方式来指定命令的执行身份时会出问题,切换用户后,后面的命令将被忽略掉,还是使用su命令,加一些参数即可实现在Linux命令行中实现切换用户后立即执行命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[root@iZ25olg4lg9Z ~]# su -h

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

Change the effective user id and group id to that of USER.
A mere - implies -l. If USER not given, assume root.

Options:
-m, -p, --preserve-environment do not reset environment variables
-g, --group <group> specify the primary group
-G, --supp-group <group> specify a supplemental group

-, -l, --login make the shell a login shell
-c, --command <command> pass a single command to the shell with -c
--session-command <command> pass a single command to the shell with -c
and do not create a new session
-f, --fast pass -f to the shell (for csh or tcsh)
-s, --shell <shell> run shell if /etc/shells allows it

-h, --help display this help and exit
-V, --version output version information and exit

For more details see su(1).
  • 在Linux命令行切换用户并执行命令
1
su - testuser -c whoami
  • 在Linux命令行切换用户并执行脚本
1
su - testuser -s /bin/bash shell.sh