Linux用户管理之su、whoami、groupadd、groupmod、groupdel命令讲解

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

image
具体什么意思呢?我现在登录的账号是 chuan,在执行su -c ls root命令之后,首先要我们输入root用户密码,输入回车之后,系统会以root用户执行ls命令,执行完成之后,立马自动切换回chuan用户了。

3、注意,使用 su 命令时,有 - 和没有 - 是完全不同的

- 选项表示在切换用户身份的同时,连当前使用的环境变量也切换成指定用户的。我们知道,环境变量是用来定义操作系统环境的,因此如果系统环境没有随用户身份切换,很多命令无法正确执行。

4、切换回以前的用户

比如当前登录用户是chuan,执行了su root命令之后,想切换回chuan用户,执行 exit 命令即可。

二、whoami 命令和 who am i 命令

别看这两个个命令字母都是一样,唯一的差别是第二个命令多了两个空格,但是这是两条完全是不同的,前者用来打印当前执行操作的用户名,后者则用来打印登陆当前 Linux 系统的用户名。

比如我现在登录的是chuan用户,分别执行这两条命令看下:

image

然后我用su命令切换到root用户:

image

可以看出,在未切换用户之前,whoamiwho 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:

image

四、修改用户组信息:groupmod

该命令用于更改群组识别码或名称,命令格式如下:

groupmod [选项] 组名

该命令常用的选项及各自的含义如下:

  • -g GID:修改组 ID
  • -n 新组名:修改组名

比如把上一步创建的组名 groupname1 修改为 testgroup

$ groupmod -n testgroup groupname1

image

提示:组名和 GID 不要随意修改,因为非常容易导致管理员逻辑混乱。如果非要修改用户名或组名,则建议大家先删除旧的,再建立新的。

五、删除用户组信息:groupdel

groupdel 命令用于删除指定的工作组,倘若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。命令格式如下:

groupdel 组名

通过前面的学习我们知道,使用 groupdel 命令删除群组,其实就是删除 /etc/gourp 文件和 /etc/gshadow 文件中有关目标群组的数据信息。

比如现在系统中有名为 groupname2的群组,通过查看上述两个文件可以看到该群组的信息。执行用户组删除命令之后,再次查看上述两个文件信息已经查询不到了:

image

注意:使用 groupdel 不能随意删除群组,如果有群组还是某用户的初始群组,则无法删除。

image

如上图,执行命令 groupdel chuan 删除名为chuan的群组删除失败。

Linux用户管理到这里就基本讲解完毕了,下一章开始未大家开始讲解Linux软件包管理相关知识。

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!