1、用户的分类
用户的分类依据:用户的UID号
UID是用户的身份标识符,系统识别用户是根据UID进行识别,而不是根据用户名,每一个用户都有一个用户ID,一个用户对应一个UID
通过id 用户名可以查看一个用户的UID
超级管理员用户(特权用户):uid为0的用户才是超级管理员
系统的内置用户(服务用户):uid 1 - 200,201 - 999 的用户是系统的服务用户,用于运行服务,通常不可登录
人为创建的用户(普通用户):uid 1000 - 60000 是普通用户
新建的用户的UID是当前的最大UID+1,当用户被删除时,如果刚好这个用户就是UID最大的用户,那么下个用户就会继续沿用这个UID,这会造成权限和日志的混乱,应当避免这种情况。
2、用户相关文件
/etc/login.defs
定义了 Linux 系统在创建用户时,用户 ID (UID) 的分配范围和规则

UID_MIN 1000: 普通用户起始 UID
UID_MAX 60000: 普通用户最大 UID
SYS_UID_MIN 201: 系统用户起始 UID
SYS_UID_MAX 999: 系统用户最大 UID
1-200 通常预留给系统底层极其重要的预设账户
SUB UID指的是系统会给每个普通用户分配一大段(默认 65536 个)外部真实的 UID(从 100000 开始),然后容器里的 UID 会“映射”到这些高位 UID 上
/etc/passwd
用户的信息文件,保存UID和用户名之间一一对应的映射关系,每一行都是代表一个用户
root:x:0:0:root:/root:/bin/bash
root:用户名
x:密码占位符,占位符指的是,在该用户登录的时候是否需要验证密码,如果x不存在则不需要验证密码
0:第一个0 表示的是该用户的UID,也就是user id
0:第二个0 表示的是该用户的GID,也就是用户所属的组(指的是私有组)的group id
root:指的是用户的描述信息,通常在欢迎屏幕上显示
/root:指的是用户的家目录,也就是用户登录操作系统后所在的位置
/bin/bash:指的是用户登录操作系统后执行的第一个程序,通常是shell程序,因此也将该栏位称为登录shell,如果该项是/bin/bash 表示该用户可以登录;如果该项是/sbin/nologin 表示该用户不能登录
用户不能登录不代表不能使用;该用户无法登录操作系统,可以作为服务的运行用户,例如vsftpd的服务,可以交给ftp的用户来运行,如果将来该服务发生缺陷导致被入侵攻击,攻击者也只会拿到ftp这个用户的权限,而不会得到root用户的权限;通过服务用户来运行服务,可以极大的保证服务器的安全
/etc/shadow
用户的密码文件
alice:$6$KS6Or9l/vox7QjUs$Yvv6TiAvvfzw7Ew1YIDAn39y0UYQsE0DVByGHWQRTkDWWCjTiw.XU1B.lukSLX2kQVnusqElfe30/hgAErQBV/:19918:0:99999:7:2:19998:
详解:
alice 用户名
$6$KS6 用户的密码(密文)
$6$ 表示密码使用sha512 算法进行加密(主流发行版本,默认使用该方式)
openssl passwd -6 密码对密码进行sha512加密$5$ 表示密码使用sha256算法进行加密
$1$ 使用md5加密
$y$ 使用sm3进行加密
!/* 表示用户从来没有设置过密码
如果密码的前面有!则表示该用户已经被锁定
在Linux中所谓的锁定用户就是将用户的加密密码字符串前加上了感叹号,加密算法无法识别以 ! 开头的哈希值,因此用户不能登录成功;可以使用root 切换到这个用户
19918: 用户上一次修改密码的时间,表示的是从1970-01-01经过19918天是那一年那一月那一日?
date +%F -d '1970-01-01 19918days'计算从 1970-01-01 开始往后数 19918 天的日期
0:密码的最短有效期 0表示没有限制 ,最少密码可以使用多少天
99999: 密码的最长有效期,99999表示没有限制也就是一直有效 最长密码可以使用多少天
7:表示密码到期前的提醒天数(警告天数)
2:密码到期后的锁定天数
19998: 密码的失效时间 指的也是从1970-01-01 经过19998天 的日期
3、用户组
4、用户管理命令
useradd 创建用户
创建用户 useradd
-u 设置UID
-g 设置GID
-G 设置附加组
-c 指定描述信息
-d 指定用户的家目录
-s 指定登录的shell
-o 允许再创建一个uid相同,用户名不同的用户
userdel 删除用户
usermod 修改用户
chage 修改密码属性
修改的确实是 /etc/shadow 文件