Linux 的passwd、shadow文件介绍

878人浏览   2024-06-15 17:26:46

文件/etc/passwd

我们每创建一个用户的时候,这个用户的信息会也会被同时创建到两个文件当中,一个/etc/passwd,另一个是/etc/shadow,也称影子文件。

/etc/passwd文件是用户管理工作涉及的最重要的一个文件

Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行,它记录了这个用户的一些基本属性

先看看/etc/passwd文档中的信息

[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

可以看到每一行都是以冒号(:)作为分隔符,把该行分成了7个字段,这7个字段分别表示:

(1):root 该用户的用户名

(2):x是该用户的密码,这个字段存放的只是用户口令的加密串,不是明文,但是由于/etc/passwd文件对所有用户都可读,所以把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符

(3):用户id号,因为root是超级用户所以他的id是0

(4):用户组id也称gid,同样因为root用户组也是超级用户组所以gid也是0

(5):用户描述,用来描述用户的信息,比如地址、电话。但基本没人会对用户做描述

(6):用户的家目录,也就是用户的起始工作目录

(7):用户登录使用的shell默认是bashshell

系统中有一类用户称为伪用户(pseudo users)

这些用户在/etc/passwd文件中也占有一条记录,但是不能登录,因为它们的登录Shell为/sbin/nologin。它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。

常见的伪用户有:

bin

daemon

games

nobody

sshd


文件/etc/shadow

接下来再看看另一个文件/etc/shadow同样以冒号(:)作为分隔符,一共分成9段如下:

由于/etc/passwd文件是所有用户都可读的,如果用户的密码太简单或规律比较明显的话,一台普通的计算机就能够很容易地将它破解,因此对安全性要求较高的Linux系统都把加密后的口令字分离出来,单独存放在一个文件中,这个文件是/etc/shadow文件。 有超级用户才拥有该文件读权限,这就保证了用户密码的安全性。

(1):该用户的用户名

(2):用户密码,因为没设置密码所以是两个感叹号(!!),而且不可登录

(3):密码被修改的天数,从1970年1月1日算起

(4):密码不可被更改的天数,0表示可以在任何时间修改

(5):密码需要被修改的时间,99999表示不用修改

(6):密码变更前几天警告

(7):账号失效日期

(8):账号取消日期

(9):目前做保留以备后续之用

[root@localhost ~]# cat /etc/shadow
root:$6$fTJjTAbLkfOKyUG5$i2Oj4IystADBRgcmCKGJ8QBXQ1yoT1JbUvmtFM072SEgoKllvg5XRMn.3JUJAvcd/olQKQvQmuBnvUa60So3n0:17780:0:99999:7:::
bin:*:16372:0:99999:7:::
daemon:*:16372:0:99999:7:::
adm:*:16372:0:99999:7:::
lp:*:16372:0:99999:7:::

文件/etc/group

/ect/group 文件是用户组配置文件,即用户组的所有信息都存放在此文件中。

此文件是记录组 ID(GID)和组名相对应的文件

(1)用户组的名称,字母或数字构成。同 /etc/passwd 中的用户名一样,组名也不能重复。

(2)组密码/etc/passwd 文件一样,这里的 "x" 仅仅是密码标识,真正加密后的组密码默认保存在 /etc/gshadow 文件中。

(3)组ID (GID)就是群组的 ID 号,Linux 系统就是通过 GID 来区分用户组的,同用户名一样,组名也只是为了便于管理员记忆。

这里的组 GID 与 /etc/passwd 文件中第 4 个字段的 GID 相对应,实际上,/etc/passwd 文件中使用 GID 对应的群组名,就是通过此文件对应得到的。

(4)组中的用户,此段包含组中的所有用户。

总结到此,我们已经学习了/etc/passwd、/etc/shadow、/etc/group,它们之间的关系可以这样理解,即先在 /etc/group 文件中查询用户组的 GID 和组名;然后在 /etc/passwd 文件中查找该 GID 是哪个用户的初始组,同时提取这个用户的用户名和 UID;最后通过 UID 到 /etc/shadow 文件中提取和这个用户相匹配的密码。

相关推荐