/ect/group 文件是用户组配置文件,即用户组的所有信息都存放在此文件中。

此文件是记录组 ID(GID)和组名相对应的文件。前面讲过,etc/passwd 文件中每行用户信息的第四个字段记录的是用户的初始组 ID,那么,此 GID 的组名到底是什么呢?就要从 /etc/group 文件中查找。

/etc/group 文件的内容可以通过 Vim 看到:

[root@localhost ~]#vim /etc/group
root:x:0:
bin:x:1:bin,daemon
daemon:x:2:bin,daemon
…省略部分输出…
lamp:x:502:

可以看到,此文件中每一行各代表一个用户组。在前面章节中,我们曾创建 lamp 用户,系统默认生成一个 lamp 用户组,在此可以看到,此用户组的 GID 为 502,目前它仅作为 lamp 用户的初始组。

各用户组中,还是以 ":" 作为字段之间的分隔符,分为 4 个字段,每个字段对应的含义为:

组名:密码:GID:该用户组中的用户列表

接下来,分别介绍各个字段具体的含义。

组名

也就是是用户组的名称,有字母或数字构成。同 /etc/passwd 中的用户名一样,组名也不能重复。

组密码

和 /etc/passwd 文件一样,这里的 "x" 仅仅是密码标识,真正加密后的组密码默认保存在 /etc/gshadow 文件中。

不过,用户设置密码是为了验证用户的身份,那用户组设置密码是用来做什么的呢?用户组密码主要是用来指定组管理员的,由于系统中的账号可能会非常多,root 用户可能没有时间进行用户的组调整,这时可以给用户组指定组管理员,如果有用户需要加入或退出某用户组,可以由该组的组管理员替代 root 进行管理。但是这项功能目前很少使用,我们也很少设置组密码。如果需要赋予某用户调整某个用户组的权限,则可以使用 sudo 命令代替。

组ID (GID)

就是群组的 ID 号,Linux 系统就是通过 GID 来区分用户组的,同用户名一样,组名也只是为了便于管理员记忆。

这里的组 GID 与 /etc/passwd 文件中第 4 个字段的 GID 相对应,实际上,/etc/passwd 文件中使用 GID 对应的群组名,就是通过此文件对应得到的。

组中的用户

此字段列出每个群组包含的所有用户。需要注意的是,如果该用户组是这个用户的初始组,则该用户不会写入这个字段,可以这么理解,该字段显示的用户都是这个用户组的附加用户。

举个例子,lamp 组的组信息为 "lamp:x:502:",可以看到,第四个字段没有写入 lamp 用户,因为 lamp 组是 lamp 用户的初始组。如果要查询这些用户的初始组,则需要先到 /etc/passwd 文件中查看 GID(第四个字段),然后到 /etc/group 文件中比对组名。

每个用户都可以加入多个附加组,但是只能属于一个初始组。所以我们在实际工作中,如果需要把用户加入其他组,则需要以附加组的形式添加。例如,我们想让 lamp 也加入 root 这个群组,那么只需要在第一行的最后一个字段加入 lamp,即 root:x:0:lamp 就可以了。

一般情况下,用户的初始组就是在建立用户的同时建立的和用户名相同的组。

到此,我们已经学习了/etc/passwd、/etc/shadow、/etc/group,它们之间的关系可以这样理解,即先在 /etc/group 文件中查询用户组的 GID 和组名;然后在 /etc/passwd 文件中查找该 GID 是哪个用户的初始组,同时提取这个用户的用户名和 UID;最后通过 UID 到 /etc/shadow 文件中提取和这个用户相匹配的密码。

Linux /etc/group文件解析(超详细)相关推荐

  1. 常用Linux命令及其作用(超详细,带演示)

    常用Linux命令及其作用(超详细,带演示) 文章目录 常用Linux命令及其作用(超详细,带演示) 1. 提前了解 1.1 终端命令格式 1.2 --help 1.3 man command 查询使 ...

  2. 2022年全国职业院校技能大赛中职组网络安全竞赛——隐写术应用解析(超详细)

    2022年全国职业院校技能大赛中职组网络安全竞赛--隐写术应用解析(超详细) B-8任务八:隐写术应用 *任务说明:仅能获取Server8的IP地址 环境需求私信博主 1.找出文件夹1中的文件,将文件 ...

  3. linux /etc/group文件详解

    2019独角兽企业重金招聘Python工程师标准>>> Linux /etc/group文件与/etc/passwd和/etc/shadow文件都是有关于系统管理员对用户和用户组管理 ...

  4. Linux学习笔记 文件服务Vsftp详细介绍

    Linux学习笔记 文件服务Vsftp详细介绍 知识点: 1.FTP使用TCP连接和TCP端口 2.在进行通信时,FTP需要建立两个TCP连接: 一个用于控制信息,TCP端口号缺省为21 一个用于数据 ...

  5. 苹果手机mov文件如何复制到电脑_如何在手机上访问电脑上的文件(超详细步骤) iPhone版...

    之前分享了如何在两台电脑上共享文件,如需访问可点击如下链接: Town-Tree:如何在两台电脑之间共享文件(超详细步骤)​zhuanlan.zhihu.com 如何在安卓手机上访问电脑上的文件,可点 ...

  6. linux安装mysql8⼀步⼀步超详细教程

    1.linux安装mysql8⼀步⼀步超详细教程 cd /usr/local/src 2.下载mysql8 wget https://dev.mysql.com/get/Downloads/MySQL ...

  7. Linux系统双网卡聚合超详细教程

    Linux系统双网卡聚合超详细教程 将多个物理网卡聚合在一起,从而实现冗错和提高吞吐量 网络组不同于旧版中bonding技术,提供更好的性能和扩展性 网络组由内核驱动和teamd守护进程实现. 主要分 ...

  8. 区间DP解析超详细版!!街边老奶奶也喜欢看的好博客

    区间DP解析超详细版!! 文章目录 区间DP解析超详细版!! 1. 概念入门 2. 线性石子归并 3. 环形石子归并 4. 奇怪的题题目目 5. 区间DP的优化 附录 在上章 背包 (<-点击传 ...

  9. Linux 命令 用法 大全(超详细)

    文章目录 一.命令的基本格式 1. 命令的提示符 2. 命令的基本格式 二.基本命令 (一)目录操作命令 1.ls 命令 2.cd 命令 3.pwd 命令 4.mkdir 命令 5.rmdir 命令 ...

最新文章

  1. python 正则表达质 re.sub() 的使用
  2. 2017年中国自动驾驶最全产业研究报告 99页
  3. Spring(三)AOP面向切面编程
  4. php+mssql 分页,一个PHP+MSSQL分页的例子
  5. (七)boost库之单例类
  6. Git版本控制管理系统_企业实战上篇
  7. C语言指向结构体的指针的例子
  8. 关于使用runtimeStyle属性问题讨论
  9. concurrent包下线程池类小结
  10. Gdiplus的使用 gdi+
  11. json字符串转json对象
  12. Recurdyn与AMESim联合仿真出现无法加载DLL错误解决方法
  13. 二调建设用地地类代码_二调地类代码表[1]
  14. 一款基于TCP协议/Netty框架开发的一款基本简单的屏幕共享软件(局域网内)
  15. 微原创——好用的文章转换工具自媒体利器
  16. 城市矢量边界数据下载
  17. 计算机毕业设计之java+SSM酒店客房预定管理系统
  18. SVN版本库备份和恢复
  19. 5G商用牌照正式发放!万亿级市场大门开启
  20. LTE 怎么从信令里提取 IMSI

热门文章

  1. 判断字典中指定key是否存在
  2. Java知多少(96)绘图之设置字型和颜色
  3. sql数据黑马程序员——SQL入门
  4. 让我们开一家医生假条商店吧/E
  5. 用for和do..while两种方法:键盘录入一个数 求阶乘的和
  6. [网络安全自学篇] 十六.Python攻防之弱口令、自定义字典生成及网站防护
  7. HarmonyOS之常用布局AdaptiveBoxLayout的使用
  8. HarmonyOS之搭建和配置开发环境的流程
  9. 491. Increasing Subsequences 递增子序列
  10. oracel 中序列