Linux su命令用于把当前用户变更为其他使用者的身份,通过该命令可以实现任何身份的切换,包括从普通用户切换为 root
用户、从 root
用户切换为普通用户以及普通用户之间的切换,除 root 外,需要输入该使用者的密码,这是什么意思呢?
普通用户之间切换以及普通用户切换至root用户,都需要输入对方的密码才能实现切换;从root用户切换至其他用户,无需对方密码,直接可切换成功。
一、Linux用户切换命令:su
su 命令的格式如下:
su [选项] 用户名
该命令常用的选项及各自的含义如下:
-
-
:不仅把当前用户切换到指定用户,同时所用的工作环境也切换为此用户的环境(包括 PATH 变量、MAIL 变量等),使用 - 选项如果省略用户名,则默认切换到 root 用户。 -
-l
:作用和上一个参数-
类似,也就是在切换用户身份的同时,完整切换工作环境,但后面必须要加上需要切换的账号 -
-p
、-m
:表示切换为指定用户的身份,但不改变当前的工作环境 -
-c
:仅切换用户执行一次命令,执行后自动切换回来
1、比如当前登录系统的用户是 chuan
,我想切换到 root
用户:
$ su root
2、切换帐号为 root
并在执行 ls
命令后自动切换到原来的用户:
$ su -c ls root
具体什么意思呢?我现在登录的账号是 chuan
,在执行su -c ls root
命令之后,首先要我们输入root用户密码,输入回车之后,系统会以root
用户执行ls
命令,执行完成之后,立马自动切换回chuan
用户了。
3、注意,使用 su 命令时,有 - 和没有 - 是完全不同的
-
选项表示在切换用户身份的同时,连当前使用的环境变量也切换成指定用户的。我们知道,环境变量是用来定义操作系统环境的,因此如果系统环境没有随用户身份切换,很多命令无法正确执行。
4、切换回以前的用户
比如当前登录用户是chuan
,执行了su root
命令之后,想切换回chuan
用户,执行 exit
命令即可。
二、whoami
命令和 who am i
命令
别看这两个个命令字母都是一样,唯一的差别是第二个命令多了两个空格,但是这是两条完全是不同的,前者用来打印当前执行操作的用户名,后者则用来打印登陆当前 Linux 系统的用户名。
比如我现在登录的是chuan
用户,分别执行这两条命令看下:
然后我用su
命令切换到root
用户:
可以看出,在未切换用户之前,whoami
和 who am i
命令的输出都是chuan
用户的信息,但使用 su
命令切换用户后,使用 whoami
命令打印的是切换后的用户名,而 who am i
命令打印的仍然是登陆系统时所用的用户名。
三、添加用户组命令:groupadd
添加用户组的命令是 groupadd
,新工作组的信息将被添加到系统文件中,命令格式如下:
groupadd [选项] 组名
该命令常用的选项及各自的含义如下:
-g
:指定新建工作组的id-r
:创建系统工作组,系统工作组的组ID小于500
用户组相关的文件:
/etc/group
组账户信息。/etc/gshadow
安全组账户信息。
比如建立一个新组,组名是groupname1
,并设置组ID加入系统:
groupadd -g 344 groupname1
我们查看一下用户组文件/etc/group
:
四、修改用户组信息:groupmod
该命令用于更改群组识别码或名称,命令格式如下:
groupmod [选项] 组名
该命令常用的选项及各自的含义如下:
-g GID
:修改组 ID-n 新组名
:修改组名
比如把上一步创建的组名 groupname1
修改为 testgroup
:
$ groupmod -n testgroup groupname1
提示:组名和 GID 不要随意修改,因为非常容易导致管理员逻辑混乱。如果非要修改用户名或组名,则建议大家先删除旧的,再建立新的。
五、删除用户组信息:groupdel
groupdel
命令用于删除指定的工作组,倘若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。命令格式如下:
groupdel 组名
通过前面的学习我们知道,使用 groupdel
命令删除群组,其实就是删除 /etc/gourp
文件和 /etc/gshadow
文件中有关目标群组的数据信息。
比如现在系统中有名为 groupname2
的群组,通过查看上述两个文件可以看到该群组的信息。执行用户组删除命令之后,再次查看上述两个文件信息已经查询不到了:
注意:使用
groupdel
不能随意删除群组,如果有群组还是某用户的初始群组,则无法删除。
如上图,执行命令 groupdel chuan
删除名为chuan
的群组删除失败。
Linux用户管理到这里就基本讲解完毕了,下一章开始未大家开始讲解Linux软件包管理相关知识。