Linux下/etc/passwd与/etc/shadow配置文件详解

1./etc/passwd

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

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 保留字段

暂未使用。

猜你喜欢

转载自blog.csdn.net/weixin_47505548/article/details/130833278