0%

焕然一新的 su

焕然一新的 su

.. note::
几处早莺争暖树,谁家新燕啄春泥。
白居易《钱塘湖春行》

su的官方定义为:

su - run a command with substitute user and group ID

一言以蔽之,su - user 能切换到一个用户中去执行一个指令或脚本,而 su 应该是switch user的概念,这个命令可以让我们开启一个进程,赋予新的身份、用户ID、组ID等关联的各种读写访问权限。

所以,理所当然是需要密码的介入的。

而如果没有user的参数,默认就是进入到root账户了。

命令格式

该命令格式如下所示:

1
$ su [options...] [-] [user [args...]]

其中一些比较重要的选项如下所示:

  • -f –fast:快速启动,不读取启动文件,这个取决于具体的shell。
  • -l–login:这个参数让你有焕然一新的感觉,基本类似于重新登录。如果不指定,默认情况下是root环境。
  • -g--group:指定主要组,这个只能由root用户指定。
  • -m-p–preserve-environment:保留环境变量,除非指定了-l。
  • -s SHELL--shell=SHELL:切换使用的SHELL。

切换到用于user执行命令command

执行如下命令,会切换到user用户,然后执行ls命令

1
$ su - user -c ls

切换使用的SHELL

不同的人,可能对不同的SHELL情有独钟,A喜欢bash,B可能喜欢csh,这个就可以通过-s来切换,如下可以切换到csh

1
$ su - user -s /bin/csh

关于SHELL,根据安装的环境不同,基本有如下几个:

  • /bin/bash
  • /bin/tcsh
  • /usr/bin/sh
  • /bin/csh
  • /sbin/nologin
  • /bin/sh

加与不加-的区别还是有的 su [user] 和 su - [user]

su [user]切换到其他用户,但是不切换环境变量,su - [user]则是完整的切换到新的用户环境。

如:

1
2
3
4
5
6
7
8
9
10
11
12
$ pwd
/root

$ su oper
$ pwd
/root


$ su - oper
Password:
$ pwd
/home/oper

所以大家在切换用户时,尽量用su - [user],否则可能会出现环境变量不对的问题。

处无为之事,行不言之教;作而弗始,生而弗有,为而弗恃,功成不居!

欢迎关注我的其它发布渠道