焕然一新的 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 | $ pwd |
所以大家在切换用户时,尽量用su - [user],否则可能会出现环境变量不对的问题。