【正经教程】Linux基础(六):Linux的用户管理

用户标识符 UID 与 GID

【Linux系统中的ID】

User ID = UID 用户ID

Group ID = GID 用户组ID

用户习惯于看用户名,系统识别登陆者只看UID/GID。

【shell环境的获得与登录】

  1. 检查账号:先在 etc/passwd 中查找是否有输入的 账号 , 查找到符合条件的记录则读出 UID 与 GID (存放于/etc/group)
  2. 核对密码表:进入 etc/shadow 通过 UID 寻找对应记录,并核对用户输入的密码与记录是否一致
  3. 账号和密码核对均正确,进入 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所代表的组是初始用户组,当用户登录系统时,立刻就拥有这个用户组的相关权限。

![](/assets/images/Screen Shot 2021-02-13 at 10.24.35.png)

上图中我的用户craven存在于很多的用户组里(其实可以用groups命令直接查看的),但是我的默认用户组是1000,同时因为是自己的初始用户组,所以/etc/groups文件的第四字段没有内容。

有效用户组 effective group

在创建文件时,新文件所属的用户组跟随当前用户操作时的有效用户组,newgrp可以用来切换已有支持的用户组

4. /etc/gshadows 文件格式

1.用户组名 2.密码列 3.用户组管理员的账号 4.该用户组所属的账号

PAM模块与用户认证

PAM = Pluggable Authentication Modules 嵌入式模块

用于保证主机上对于用户身份验证的一致性。是一个独立的API,任何其他程序需要用户认证的时候,都通过调用PAM来进行,这样能保证验证结果的一致性。

![](/assets/images/Screen Shot 2021-02-13 at 22.32.16.png)

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文件

posted @ 2021-10-23 11:26  Craven胆小鬼  阅读(100)  评论(0)    收藏  举报