Linux用户(组)管理文件
在Linux里 /etc/group
与 /etc/passwd
和 /etc/shadow
还有 /etc/gshadow
文件都是有关于系统管理员对用户和用户组管理时相关的文件。
用户组(Group)管理文件
用户组(Group)配置文件主要有 /etc/group
和 /etc/gshadow
,其中 /etc/gshadow
是的加密信息文件。
将用户分组是 Linux 系统中对用户进行管理及控制访问权限的一种手段。每个用户都属于某个用户组;一个组中可以有多个用户,一个用户也可以属于不 同的组。当一个用户同时是多个组中的成员时,在 /etc/passwd
文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组。
/etc/group 文件
用户组的所有信息都存放在/etc/group文件中。此文件的格式是由冒号(:)隔开若干个字段。
/etc/group 文件字段说明:

/etc/gshadow 文件
/etc/group
与 /etc/gshadow
是互补的, /etc/gshadow
是 /etc/group
的加密信息文件,比如用户组(Group)管理密码就是存放在这个文件。
对于一些关系结构比较复杂的权限模型,设置用户组密码是极有必要的。比如通过密码验证的方式来让某些用户临时拥有一些用户组特性,而非永久拥有。
/etc/gshadow 文件字段说明:

用户(User)管理文件
用户(User)配置文件主要有 /etc/passwd
和 /etc/shadow
,其中 /etc/shadow
是加密信息文件。
/etc/passwd 文件
在用户登录系统时会用到。
/etc/passwd 文件字段说明:

/etc/shadow 文件
/etc/passwd
和 /etc/shadow
文件是互补的,/etc/shadow
是 /etc/passwd
的加密信息文件,比如用户(User)的密码口令的加密保存等。
/etc/shadow 文件字段说明:
部分字段如果不设置则默认使用/etc/login.defs 文件的设置。

附加:
/etc/login.defs 文件
/etc/login.defs
文件定义了与/etc/password
和/etc/shadow
配套的默认用户限制设定,比如:最大最小UID。这个文件是需要的,缺失并不会影响系统的使用,但是也许会产生意想不到的错误。
请注意:如果在 /etc/shadow
文件中设置了相同功能的选项,则以 /etc/shadow
里的设置为准,也就是说 /etc/shadow
的配置优先级高于 /etc/login.defs
。
UID
UID 是用户的ID 值,在系统中每个用户的UID的值是唯一的,更确切的说每个用户都要对应一个唯一的UID,系统管理员应该确保这一规则。
系统用户的UID的值从0开始,是一个正整数,至于最大值可以在/etc/login.defs
可以查到,一般Linux发行版约定为60000;
注意: Linux 是以 UID 作为用户权限的标识,并非用户名!比如: root 的 UID 是0,拥有系统最高权限;但我将其他用户 UID 同样改为0时,这个用户可以进行任何 root 用户权限的操作!这是很危险的!
一般情况下,每个Linux的发行版都会预留一定的UID和GID给系统虚拟用户占用,虚拟用户一般是系统安装时就有的,是为了完成系统任务所必须的用户,但虚拟用户是不能登录系统的,比如 ftp、nobody、adm、rpm、bin、shutdown
等;预留数量以各个系统中 /etc/login.defs
中的 UID\_MIN
的最小值为准;比如Fedora 系统 login.defs
的UID\_MIN
是500,而UID_MAX
值为60000,也就是说我们通过adduser
默认添加的用户的UID的值是500到60000之间;
GID
GID 和 UID 类似,是一个正整数或0, GID 从0开始, GID 为0的组让系统付予给 root 用户组;系统会预留一些较靠前的GID给系统虚拟用户(也被称为伪装用户)之用;查看系统添加用户组默认的 GID 范围应该查看 /etc/login.defs
中的 GID\_MIN
和GID\_MAX
值;
我们可以对照/etc/passwd和/etc/group 两个文件;我们会发现有默认用户组之说;即当一个用属于多个组时会有一个默认的组;在创建目录和文件时,会使用默认的用户组;
用户登录简要过程
/etc/passwd
是系统识别用户的一个文件,系统所有的用户都在这里有登录记载;
以 dingzd 这个账号登录为例:
- 当用户 dingzd 需要登录时,系统首先会查阅
/etc/passwd
文件,检查是否有名为 dingzd1995 的用户记录; - 然后确定 dingzd 的UID,通过UID 来确认用户和身份;
- 如果存在则读取
/etc/shadow
文件中所对应的 dingzd 的密码; - 如果密码正确,就可以登录系统,并读取用户的配置文件;