1,/etc/passwd
这个文件主要存放着用户信息.一个用户一行,由7个域组成.如:
root:x:0:0:Heidern,ThizLinux,789456:/root:/bin/bash
第一个域(root):用户名
第二个域(x):密码(使用了遮蔽技术shadowd)
第三个域(0):UID(0-99保留为系统用户,最大为65535)
第四个域(0):GID
第五个域(Heidern,ThizLinux,789456):用户信息
第六个域(/root):用户主目录(如不指定系统会使用/作为用户主目录,但普通用户在/下没有权限,所以基本无意义)
第七个域(/bin/bash):登陆的SHELL(如不指定或指定错误则用户会停留在登陆界面而无法登陆)
2,/etc/group
这个文件存放着LINUX用户组的信息.每组占一行,由4个域组成,如:
root:x:0:root,heidern,admin
第一个域(root):组名
第二个域(x):组密码(如不指定,则任何用户都可以提升自己到这个组)
第三个域(0):GID
第四个域(root,heidern,admin):组成员(不要在任何位置留有空格,否则会让系统停止响应;一个单独的用户可以归属的最多的组数默认为16个,否则系统会出现很多莫名其妙的错误)
3,/etc/shadow
这个文件存放着用户的相关参数设置信息(对/etc/passwd的补充),同样是每个用户占一行,由9个域组成,如:
root:$1$JKHSDqioujDKLsdjqioudjKLdjq/:12773:15:30:7:15:12804:
第一个域(root):用户名
第二个域($1$quwasdnkl....):密码散列值(如果空则无密码,为*则用户无法登陆)
第三个域(12773):最后一次修改密码的时间(从1970年1月1日新纪元点开始到最后一次用户更改密码的日期为止中间经过的天数)
第四个域(15):用户两次修改密码之间的最小天数(0则为禁用)
第五个域(30):用户密码保持有效的最大天数,当前为用户需要每隔30天更改一次密码(0标志仅当天有效,99999表示永远不用更改密码)
第六个域(7):用户密码实效之前系统提前向用户发出警告的天数(本例中为第23(30-7)天系统会向用户发出更改密码的警告)
第七个域(15):是指用户密码实效(超过了第五个域指定的有效最大天数)后,帐号被禁用之前的等待天数(在这段时间内,用户用次帐号密码登陆时系统会强制使用户更改密码后才能正常登陆;超出这段时间后,则此帐号将被禁用,只有管理员才能重新启用帐号;如果为空则用户可以随时上来为自己设置新的密码并正常登陆)
第八个域(31):指定了帐号的使用期限,与第三个域的计算方法一致(超出此期限则帐号被禁用,空为无使用期限)
第九个域(空):保留域,以备将来扩展功能之用
4,/etc/gshadow
这个文件是用户组的相关参数设置信息(对/etc/group的补充),每组一行,分4个域,如:
students:x:root,teacher:root,teacher,monitor,student1,student2
第一个域(students):组名(要与/etc/group里的相匹配)
第二个域(x):组密码散列值
第三个域(root,teacher):组管理员成员
第四个域(root,teacher,monitor,student1,student2):组成员
另外,LINUX提供了两条完成性检查命令,pwck对应/etc/passwd,grpck对应/etc/shadow
pwck检查以下各项信息:
正确的域数目
用户名的组成,存在性和唯一性
UID的组成,存在性和唯一性
GID的存在性,无论它是否在/etc/group中
用户主目录的存在性
登陆SHELL的存在性和可执行性
grpck检查以下各项信息:
正确的域数目
组名的组合,存在性和唯一性
GID的组成,存在性和唯一性
是否所有用户都在/etc/passwd中出现
是否有用户所属的组数超过了系统允许的最大数目的情况
各域本身是否超过了512个字符
这两个工具只能汇报错误而不能修正错误
5,/etc/passwd和/etc/shadow的相互转换
由于/etc/shadow是对/etc/passwd的补充,所以说/etc/shadow是冲/etc/passwd文件中产生的,这项任务有命令pwconv来完成,它将检查/etc/shadow文件是否存在和是否完整,如果有必要则创建和修改这个文件.
对于新的/etc/shadow文件,pwconv命令将:
为每个用户创建一个新项
向新项中添加用户名,密码散列值和密码有效期信息
更新"最后一次更改密码时间"域
对于现有的/etc/shadow文件,pwconv命令将:
在/etc/passwd文件中检查每个用户项的第二个域,看是否存在*,如存在,则不修改/etc/shadow文件中的用户密码散列值
为在/etc/passwd文件中出现而没有在/etc/shadow文件中出现的用户添加项,向新项中添加用户名,密码散列值和密码有效期信息
删除在/etc/shadow中出现,没有在/etc/passwd中出现的项
为每个原来的项更新密码散列值,密码有效期信息和最后一次修改时间域
取消使用遮蔽技术,可以用pwunconv命令
它对/etc/shadow文件中的项进行解析,然后更新/etc/passwd文件中相应用户名和密码散列值(/etc/passwd中第二个域将从x转换成密码散列值),这个命令忽略任何只在/etc/passwd中出现而没有在/etc/shadow中出现的项.在成功的运行pwunconv后,将丢失一些密码有效期信息
6,/etc/group和/etc/gshadow的相互转换
/etc/gshadow也是对/etc/group的补充,他们之间的相互转换可以用grpconv和grpunconv这两个命令.
与pwconv类似,grpconv会根据/etc/group中的每个项,都在/etc/gshadow文件中创建相应的项,并使用组名来关联.如果/etc/gshadow文件已经存在,grpconv只是更新相应的密码散列值.
而grpunconv命令对/etc/gshadow中的项进行解析,并根据相应的组名在/etc/group文件中更新密码散列值.这个命令会忽略任何在/etc/group中出现而没有在/etc/gshadow中出现的项.在成功的运行后,会丢失一些信息,如组的管理员.