【正经教程】Linux基础(六):Linux的用户管理
用户标识符 UID 与 GID
【Linux系统中的ID】
User ID = UID 用户ID
Group ID = GID 用户组ID
用户习惯于看用户名,系统识别登陆者只看UID/GID。
【shell环境的获得与登录】
- 检查账号:先在
etc/passwd中查找是否有输入的账号, 查找到符合条件的记录则读出 UID 与 GID (存放于/etc/group) - 核对密码表:进入
etc/shadow通过UID寻找对应记录,并核对用户输入的密码与记录是否一致 - 账号和密码核对均正确,进入
shell管理阶段
值得注意的是: macOS不使用这样的文件来管理密码。对应的它给每个用户单独分配了一个shadow file,扩展名是.plist 存放路径是/var/db/dslocal/nodes/Default/users/,只有root有访问权限。(所以我在/etc/passwd里面是找不到自己的用户名的记录的)
1.etc/passwd文件结构 (管理UID GID)
| root | 😗 | :0 | :0 | :System Administrator | :/var/root | :/bin/sh |
| 1.账号名称 | 2.密码 | 3.UID | 4.GID | 5.用户信息说明栏 | 6.主目录 home directory |
7.shell |
| 人类使用账号,与UID相对应 | 以前存在这,现在移动到/etc/shadow里 | User ID | Group ID | 解释账号名称的意义 没啥用 | 该账户登录shell时的默认目录 | 默认使用shell的位置 |
其中 GID 的有关信息保存在 etc/group 是个形式与erc/passwd差不多的文件。 |
2. etc/shadow文件结构 (管理密码)
| root | ! | 18611 | 0 | 99999 | 7 | |||
| 1.账号名称 | 2.密码 | 3.最近变动密码日期 | 4.密码不可被更动的天数 | 5.密码需要重新更改的天数 | 6.更改前警告天数 | 7.密码过期后的账号宽限时间 | 8.账号失效日期 | 9.保留 |
| 这个字段是加密的密码,并不是密码明文 | 从1971年1月1日开始的累积天数 | 0表示可以随时更改 | 99999表示永远不需要更改 | 密码过期后还能用来登录的期限,但是登录会要求强制密码修改 | 保留给未来可能存在的新功能 |
3./etc/group 文件结构
| wheel | 😗 | :0 | :root |
| 1.用户组名称 | 2.用户组密码 | 3.GID | 4.用户组支持的账号名称 |
| 一般这个不用设置,实际的密码存在/etc/gshadow里 | 每个用户可以拥有多个用户组的支持,因此引出有效用户组与初始用户组的概念 |
初始用户组 initial group
保存在/etc/passswd中的GID所代表的组是初始用户组,当用户登录系统时,立刻就拥有这个用户组的相关权限。

上图中我的用户craven存在于很多的用户组里(其实可以用groups命令直接查看的),但是我的默认用户组是1000,同时因为是自己的初始用户组,所以/etc/groups文件的第四字段没有内容。
有效用户组 effective group
在创建文件时,新文件所属的用户组跟随当前用户操作时的有效用户组,newgrp可以用来切换已有支持的用户组
4. /etc/gshadows 文件格式
| 1.用户组名 | 2.密码列 | 3.用户组管理员的账号 | 4.该用户组所属的账号 |
PAM模块与用户认证
PAM = Pluggable Authentication Modules 嵌入式模块
用于保证主机上对于用户身份验证的一致性。是一个独立的API,任何其他程序需要用户认证的时候,都通过调用PAM来进行,这样能保证验证结果的一致性。

PAM通过查看配置文件 /etc/pam.d/ 中,与调用PAM的程序同名的配置文件,来引用相关的PAM模块逐步进行验证分析。
E.g : 比如我使用 passwd 来调用PAM,那么PAM所查看的文件就是etc/pam.d/passwd
一个验证过程包括三个部分:验证类型+控制标准+PAM模块与相关参数
password optional pam_gnome_keyring.so
验证类型 控制标准 PAM模块
1.验证类型
- auth(authentication) 认证用户身份,需要用户密码
- account
- session
- password
2.控制标准
- required
- requisite
- sufficient
- optional
3.PAM模块
这就多得是了。基本上是一些.so文件

浙公网安备 33010602011771号