1./etc/passwd
按行记录用户。
用户名:口令:UID:GID:描述性信息:主目录:默认Shell
1.1 用户名
代表用户账号的字符串,不得含有冒号(:),最好不要包含点字符(.),且不使用连字符(-)和加号(+)作为首字符。
1.2 口令
“x”或者“*”,真正的密码保存在/etc/shadow中,/etc/passwd文件所有用户均可读,/etc/shadow只有root可以读写。
1.3 UID
UID即用户ID,每个用户具有唯一的UID,Linux系统中通过UID识别不同用户。RHEL8中用户UID分类如下:
UID范围 | 用户身份 |
---|---|
0 | 系统的管理员用户。 |
1-999 | 系统用户。避免因某个服务程序出现漏洞而被黑客提权至整台服务器,默认服务程序会由独立的系统用户负责运行,进而有效控制被破坏的范围。通常不可以登录。如:shutdown(6)、bin(1)、ftp(14)、halt(7)、mail(8) |
0 | 普通用户。由管理员创建的用于日常工作的用户。 |
1.4 GID
用户初始组的组ID号。
初始组。用户登录时就拥有这个用户组的相关权限,每个用户初始组只有一个,通常将与用户名同名的组作为该用户初始组。用系统管理员创建用户“linuxprobe”时,会生成linuxprobe组即为初始组。
附加组。用户可以加入多个其他的用户组,并拥有其他组的权限,这些即为附加组,可以有多个。
1.5 描述性信息
存放任意的注释性描述文字。
1.6 主目录
用户登录到系统之后所处目录,多数情况下,各用户的主目录都在一个特定目录下,而用户主目录名称即为该用户登录名,各用户对自己的主目录具有读、执行(搜索)权限。
如root的主目录为/root,新建用户linuxprobe的主目录为/home/linuxprobe。
1.7 默认的Shell
命令解释器(Shell),将用户输入的命令转换成系统可以识别的机器语言。主流Linux默认使用的为Bash(/bin/bash)解释器,如:
linuxprobe: x:1000:1000:linuxprobe:/home/linuxprobe:/bin/bash
若改为/sbin/nologin,则表示不能该用户不能登录。
bin: x:1:1:bin:/bin:/sbin/nologin
此外,还有多种Shell,如sh,csh,ksh,tcsh等。
2./etc/shadow
按行记录用户。该文件的预设权限为[-rw------]/[---------],且只有root可以读写。
用户名:加密密码:最后一次修改时间:最小修改时间间隔:密码有效期:密码需要变更前的警告天数:密码过期后的宽限时间:账号失效时间:保留字段
2.1 用户名
同/etc/passwd中的用户名。
2.2 加密密码
经过加密算法的口令,格式为\$id\$salt\$encrypted
,id代表加密算法,salt为随机数,encrypted为加密密文。
id | 加密算法 |
---|---|
1 | MD5 |
5 | SHA256 |
6 | SHA512 |
2、2y、y | Blowfish |
salt为盐值,一个固定长度的随机字符串,每次修改密码后,随机生成该字符串,对密码进行hash一个干扰值,encrypted为散列值。
2.3 最后一次修改时间
表示最后一次修改密码的时间。19458表示从1970 年 1 月 1 日之后19458天修改了密码。
[root@hostname etc]# date -d “1970-01-01 19458 days”
Tue Apr 11 00:00:00 CST 2023
2.4 最小修改时间间隔
规定从最后一次修改密码的日期起,多长时间不能修改密码,0表示随时可以修改。
2.5 密码有效期
规定从最后一次修改密码的日期起,多长时间必须修改密码,默认99999(表示密码永久有效),常改为90。
2.6 密码需要变更前的警告天数
提醒用户“再过n天密码到期!”,默认为7,距离密码有效期的倒数第7天,每次用该用户登录系统即会发出警告。
2.7 密码过期后的宽限时间
密码过期后,仍未修改密码但还是可以登录。0表示密码过期后立即失效,-1表示永久不失效,10表示过期10天后失效。
2.8 账号失效时间
自1970 年 1 月 1 日以来的总天数作为账户失效时间,在此规定时间之外,无论过期与否,账号均无法使用。
2.9 保留字段
暂未使用。