SU命令

时间:2019-04-29 03:17:29  来源:igfitidea点击:

如何使用su命令切换用户

su命令

运行su命令允许用户临时成为另一个用户。

su的基本语法:su [OPTION]…(用户(ARG)…]

如果没有向su命令传递用户,则假定为根用户。打开的外壳是/etc/passwd文件中指定的类型。(主要是/bin/bash)。当您执行su命令时,将要求您为您要成为的用户提供密码。但是,如果您使用root特权(超级用户)运行,则不会要求您输入密码。如果希望获得与传递的用户相同的环境,则必须使用su -l选项。这将环境设置为登录环境。

带和不带-l参数的su示例

请注意,当我们指定-l-选项时,PATH变量中的差异。

sles01:/home/john # id
uid=0(root) gid=0(root) groups=0(root),105(sfcb)
sles01:/home/john # echo $PATH
/sbin:/usr/sbin:/usr/local/sbin:/root/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/usr/lib/mit/bin:/usr/lib/mit/sbin

sles01:/home/john # su john
john@sles01:~> id
uid=1008(john) gid=100(users) groups=100(users),16(dialout),33(video),17000(dba)
john@sles01:~> echo $PATH
/root/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/usr/lib/mit/bin:/usr/lib/mit/sbin
john@sles01:~> exit
exit

sles01:/home/john # su -l john
john@sles01:~> echo $PATH
/home/john/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/usr/lib/mit/bin:/usr/lib/mit/sbin

以另一个用户和环境的身份运行命令

如果传递-c,则可以传递命令行以指定用户的身份运行。如果您是root用户,系统将要求您确认指定帐户的密码。

sles01:/home/john # su - john -c "TestProgram"

上面将以用户john的身份运行命令或程序TestProgram。在上面的示例中,不会提示您输入密码,因为这个命令是由用户执行的。

su可用选项

  -, -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)
  -m, --preserve-environment   do not reset environment variables
  -p                           same as -m
  -s, --shell=SHELL            run SHELL if /etc/shells allows it
      --help     display this help and exit
      --version  output version information and exit