Unix/Linux编程:组文件------/etc/group

出于各种管理方面的考虑,尤其是要控制对文件和其他系统资源的访问,对用户进行编组极具实用价值


对用户所属各组信息的定义由两部分组成:

  • 密码文件中相应用户记录的组ID字段
  • 组文件列出的用户所属各组


这种将信息分置于两个文件中的奇怪现状,自有其历史渊源。

  • 在早期 UNIX 实现中,一个用户同时只能从属于一个组。登录时,用户最初的属组关系由密码文件的组 ID 字段决定,在此之后,可使用newgrp(1)命令去改变用户属组,但需要用户提供组密码(若该组处于密码的保护之下)。
  • 4.2BSD 引入了并发多属组(multiple simultaneous group memberships)的概念,POSIX.1-1990 随后对其进行了标准化。采用这种方案,组文件会列出每个用户所属的其他属组。
  • groups(1)命令会显示当前 shell 进程所属各组的信息,如果将一个或多个用户名作为其命令行参数,那么该命令将显示相应用户所属各组的信息。

系统中的每个组在组文件/etc/group 中都对应着一条记录。每条记录包含 4 个字段,之间以冒号分隔,如下所示

$ cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
admin:x:1000:admin,aa,oca
  • 组名:组的名称。与密码文件中的登录名相似,可以将其视为与数值型组标识符相对应的人类可读(符号)标识符
  •  经过加密处理的密码:组密码属于非强制特性,对应于该字段。
  1. 随着多属组的出现,当今的 UNIX 系统已经很少使用组密码。
  2. 不过,依然可以为组设置密码(特权用户可使用 gpasswd 命令来设置组密码)。
  3.  如果用户并非某组的成员,那么在使用 newgrp(1)启动新 shell 之前(新 shell 的属组包括该组),就需要用户提供此密码。
  4.  如果启用了shadow 密码,那么系统将不解析该字段(这时,该字段通常只包含字母 x,但也允许其内容为包括空字符串在内的任何字符串),而经过加密的密码实际上则存放于shadow 组文件/etc/gshadow 中,仅供具有特权的用户和程序访问。组密码的加密方式类似于用户密码
  • 组 ID(GID):该组的数值型 ID。

 

  1. 正常情况下,对应于组 ID 号 0,只定义一个名为 root的组(与/etc/passwd 中用户 ID 为 0 的记录相近)。
  2.  在 Linux 2.2 或更早的版本中,组ID 为 16 位值,其范围为 0~65535;而自 Linux 2.4 以后的版本则以 32 位值来存储组 ID。
  •  用户列表:属于该组的用户名列表,之间以逗号分隔。(这份列表包含的是用户名,而非用户 ID,原因在于如前所述,在密码文件的各条记录中,用户 ID 并不一定唯一)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值