持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第4天,点击查看活动详情
Hi~,我是一碗周,如果写的文章有幸可以得到你的青睐,万分有幸~
🍎 写在前面
先来介绍一下新开的这个专栏:《前端&运维那点事儿》将会从前端的角度,依次学习Linux→Nginx→Docker→持续集成→k8s,从而打造一个属于站在前端角度的运维专栏。
这篇文章来介绍一下Linux中的用户和组以及相关命令;
Linux同Windows一样,都是多用户多任务的操作系统,在Linux中为了防止资源发生冲突,不同的用户拥有不同的权限,每个用户可以在权限允许的范围内完成不同的任务,通过这种权限的划分与管理从而实现了多用户多任务的运行机制。
🥝 用户和用户组
🧃 用户
在Linux中,每次登录系统都必须使用用户的身份去登录,登录后的权限会根据该用户的权限来确定;每个用户又都有自己的用户ID和组ID,后文中将其UID和GID。
在Linux系统中存在三种类型的用户,如下:
-
root用户: 又称超级用户或者超级管理员,该用户的UID和GID都是0,是Linux中的"上帝",该用户拥有最大的权限,无所不能;
-
系统用户: 该用户用于运行服务,无家目录,也不能登录系统,系统用户的UID在Centers7中是1-999;
-
普通用户: 普通用户是由root创建,该用户可以登录,拥有属于自己的家目录;该用户的权限由root用户分配。
🥭 用户组
用户组是具有相同特征用户的逻辑集合,简单的说就是一个用户组内的所有用户具有相同的权限,用户组又分为:
-
标准组:一个组内可以容纳多个用户
-
私有组:组内只有自己一个用户
🍇 用户组和用户的关系
在Linux系统中,每个用户必定属于一个主组,默认情况下属于与其同名的用户组,最多可以有31个附属组,从用户权限的角度看,主组和附属组其实差别不大,用户也会拥有其附属组的相关权限。
🍍 与用户相关的配置文件
在Linux中的用户实际上就是系统中的标识,而这些标识是用文件进行存储的,接下来我们先来看一下这些文件
🍌 /etc/passwd
该文件中存储的是用户的所有信息,如下图所示:
该文件中一行是一个用户,一行信息中通过:
将其拆分为7个字段,分别是:
🍋 /etc/shadow
该文件存储的是用户密码和一些用户的信息,如下图所示:
该文件中还是一行一个用户,每个字段的含义如下:
🍊 /etc/group
该文件保存的是用户组及其相关信息,如下图所示:
每个字段的含义如下:
🍈 /etc/gshadow
该文件保存的是组的密码信息,不太常用,字段解释如下:
在创建一个新的用户后,会分别更新这几个文件;但是我们尽量不要直接修改这些文件从而达到修改用户的目的,避免出现一些错误。
🍓 相关命令
🍒 用户相关
和用户相关的命令主要由三个:
-
useradd
: 创建用户useradd [-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <主组>][-G <附加组>][-u <uid>][用户帐号]
-
userdel
: 删除用户userdel [-r][用户帐号] # -r 选项用于删除家目录
-
usermod
: 修改用户usermod [-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <主组>][-G <附加组>][-l <帐号名称>][-u <uid>][用户帐号]
-
passwd
: 设置密码passwd [-l] [-u] [-d] [username] ############################################# # -l 停止账户的使用 仅root权限可以用 # -u 启用被停用的账户 # -d 清空密码 仅root权限可以用 # 注意:passwd命令会出现一个交互,根据提示输入即可 ##############################################
一些示例命令如下:
# 创建用户
[root@ywanzhou ~]$ useradd y # 创建普通用户 y
[root@ywanzhou ~]$ useradd -g root ywz # 创建普通用户 ywz 并指定主组为 root
[root@ywanzhou ~]$ useradd -d /home/ywanzhou -g root ywzhou # 指定家目录和主组
[root@ywanzhou ~]$ tail -3 /etc/passwd # 查看最新创建的3个用户
y:x:1003:1003::/home/y:/bin/bash
ywz:x:1004:0::/home/ywz:/bin/bash
ywzhou:x:1005:0::/home/ywanzhou:/bin/bash
# 修改用户
[root@ywanzhou ~]$ usermod -d /home/yyy ywz # 修改用户家目录
[root@ywanzhou ~]$ usermod -u 5432 ywz # 修改用户的UID
[root@ywanzhou ~]$ tail -3 /etc/passwd # 查看修改结果
y:x:1003:1003::/home/y:/bin/bash
ywz:x:5432:0::/home/yyy:/bin/bash
# 删除用户
[root@ywanzhou ~]$ userdel -r y # 删除用户并删除家目录
🍑 用户组相关
跟组相关的命令也是3个,分别是:
-
groupadd
: 创建组,可以添加-g
参数自定义GID; -
groupdel
: 删除组; -
groupmod
: 修改组,-g
参数修改修改GID,-n
参数修改组名; -
gpasswd
: 用于将一个用户添加到组或者从组中删除。
示例代码如下:
[root@ywanzhou demo]$ groupadd yGroup # 创建组
[root@ywanzhou demo]$ groupadd -g 8848 ywzGroup # 创建组指定GID
[root@ywanzhou demo]$ tail -2 /etc/group # 查看创建的结果
yGroup:x:1003:
ywzGroup:x:8848:
[root@ywanzhou demo]$ groupmod -n y_group yGroup # 修改名称
[root@ywanzhou demo]$ groupmod -g 9999 ywzGroup # 修改GID
[root@ywanzhou demo]$ tail -2 /etc/group
ywzGroup:x:9999:
y_group:x:1003:
[root@ywanzhou demo]$ groupdel y_group # 删除组
[root@ywanzhou demo]$ groupdel ywzGroup # 删除组
[root@ywanzhou demo]$ gpasswd -a zhou root # 向组内添加成员
Adding user zhou to group root
[root@ywanzhou demo]$ gpasswd -d zhou root # 删除组内成员
Removing user zhou from group root
🍎 其他命令
现在介绍一下其他命令,用于查询当前用户的一些信息:
-
id
:显示用户当前的UID、GID和用户所属的组列表; -
groups
:显示指定用户所属的组列表; -
whoami
:显示当前用户的名称; -
w/who
:显示登录用户及相关信息。
🍐 写在最后
这篇文章到这也就结束了,如果对你有帮助可以三连支持一下,下一篇文章我们来介绍Linux中的文件及其目录权限;