Linux 的passwd、shadow文件介绍

文件/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 文件中提取和这个用户相匹配的密码。
相关推荐
-
「PHP」MVC框架是什么?为什么要用它2025-02-25 00:25:41
-
如何用PHP写一个比较安全的API系统(实现)2025-02-25 00:19:49
-
php 解析url获取相关信息2025-02-25 00:15:37
-
mysql命令总结和PyMysql2025-02-25 00:11:35
-
MySQL特性:深入理解ICP2025-02-25 00:11:07