5.1 系统用户与组
目录
Linux 中的用户与用户组
本章我们将学习 Linux 中的用户,用户组及权限。这些都是Linux 运维的基础知识,并不难。通过四节我们将学习以下内容:
- Linux 中的用户及用户组
- Linux 权限及权限的管理
- 用户及用户组的管理命令
对于 Linux 的用户及用户组,主要是学习 /etc/passwd
, /etc/shadow
, /etc/group
三个文件,它们保存着 Linux 用户、用户组及密码。用户管理相关命令的核心,也只是操作这几个文件而已。
有关用户包括三个方面的内容,简称 3A
- 用户认证 - Authentication: 用户登录时需要输入用户名和密码
- 用户授权 - Authorization: Linux 上文件有属主和属组,并为属组属组以及其他第三方定义了权限
- 授权审计 - Audition: 登录和认证会记录到日志文件中,以便于日后审计
本节我们将围绕第一方面,讲述如下内容:
- Linux 用户与组的基本概念,包括用户的分类,与ID标识
- Linxu 用户的认证
1. Linux 用户基础
计算机容易识别的是数字,因此用户和组在Linux 都标识为 16 位二进制数字,称为 UserID(UID),GroupID,(GID),范围是0-65535 Linux 与用户相关的配置文件如下:
/etc/passwd
: 保存用户及属性信息/etc/group
: 组及其属性信息/etc/shadow
: 用户密码及相关属性/etc/gshaow
: 组密码及相关属性/etc/login.defs
: 用户创建和设置规则的配置/etc/skel
: 用户家目录的默认包含的文件/etc/default/useradd
: 用户创建的默认值配置/etc/shells
: 系统包含的所有shells
1.1 用户基础
Linux 中的用户具有如下特征
- 用户标识: UserID(UID)
- 用户分类与 ID 范围:
- 管理员: 0
- 普通用户:1-65535
- 系统用户: 1-499(CentOS6), 1-999(CentOS7)
- 作用: 为了能够让那后台进程或服务类进程以非管理员的身份运行,通常需要为此创建多个普通用户;这类用户从不用登录系统;
- 登录用户: 500-60000(CentOS6), 1000-60000(CentOS7)
- 系统用户: 1-499(CentOS6), 1-999(CentOS7)
- 配置文件:
/etc/passwd
: 名称解析库,保存了用户名,UID等基础信息/etc/shadow
: 保存了用户的密码
1.2 Linux 用户组
Linux 用户组
- 组标识:GroupID, GID
- 组分类与 ID 范围:
- 管理员组:0
- 通用户组:1-65635
- 系统用户组:1-499(CentOS6), 1-999(CentOS7)
- 登录用户组:500-60000(CentOS6), 1000-60000(CentOS7)
- 配置文件:
/etc/group
: 保存了组名,组ID,组员等基本信息/etc/gshadow
: 保存了组的密码
- 组的其他分类:
- 从单个用户出发,分为:
- 用户的基本组
- 用户的附加组
- 按照名称:
- 私有组:组名同用户名,且只包含一个用户;
- 公共组:组内包含了多个用户;
- 从单个用户出发,分为:
1.3 密码的使用策略:
- 使用随机密码;
- 最短长度不要低于8位;
- 应该使用大写字母、小写字母、数字和标点符号四类字符中至少三类;
- 定期更换;
加密算法:
- 对称加密:加密和解密使用同一个密码;
- 非对称加密:加密和解密使用的一对儿密钥;
- 公钥:public key
- 私钥: private key
- 单向加密:只能加密,不能解密;提取数据特征码;
- 定长输出
- 雪崩效应
单向加密算法及对应命令:
- md5: message digest, 128bits – md5sum
- sha:secure hash algorithm, 160bits – shasum
- sha224 – sha224sum
- sha256 – sha256sum
- sha384 – sha284sum
- sha512 – sha512sum
2. 用户相关文件解析
2.1 /etc/passwd 用户信息库
name:password:UID:GID:GECOS:directory:shell
- name: 用户名
- password:可以是加密的密码,也可是占位符x;
- UID:
- GID:用户所属的主组的ID号;
- GECOS:注释信息
- directory:用户的家目录;
- shell:用户的默认shell,登录时默认shell程序;
2.2 /etc/shadow:用户密码
用户名:加密的密码:最近一次修改密码的时间:最短使用期限:最长使用期限:警告期段:非活动期限:过期期限:保留字段
- 加密的密码: 使用 $ 符分割为 3 段分别表示:
- 数字,表示使用的加密算法
- salt,表示加密过程中添加的随机数
- 加密之后的密码文本
2.3 /etc/group:组的信息库
group_name:password:GID:user_list
- user_list:该组的用户成员;以此组为附加组的用户的用户列表;