当前位置:嗨网首页>书籍在线阅读

02-密码文件

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

8.1 密码文件:/etc/passwd

针对系统的每个用户账号,系统密码文件/etc/passwd会专列一行进行描述。每行都包含7个字段,之间用冒号分隔,如下所示:

169.png 接下来,将按顺序介绍这7个字段。

  • 登录名:登录系统时,用户所必须输入的唯一名称。通常,也将其称为用户名。此外,也可将登录名视为人类可读的(符号)标识符,与数字用户标识符(稍后介绍)相对应。当使用诸如ls(1)这样的程序去显示文件的所有权时(比如,执行ls –l时),会显示出登录名,而非与文件关联的数值型用户ID。
  • 经过加密的密码:该字段包含的是经过加密处理的密码,长度为13个字符,8.5节会对此做深入讨论。如果密码字段中包含了任何其他字符串,特别是,当字符串长度超过13个字符时,将禁止此账户登录,原因是此类字符串不能代表一个经过加密的有效密码。不过,请注意,要是启用了shadow密码(这是常规做法),系统将会不解析该字段。这时,/etc/passwd中的密码字段通常会包含字母“x”(当然,也可以是任何非空字串),而经过加密处理的密码实际上却存储到 shadow 密码文件中(参见8.2节)。若/etc/passwd中密码字段为空,则该账户登录时无需密码(即便启用了shadow密码,也是如此)。

本章假定对密码的加密算法为 DES(数据加密标准),这也是一直为UNIX所广泛使用的密码加密算法。还可用其他加密算法(比如,MD5)来替代DES,针对输入生成128位的消息摘要(hash的一种)。在密码(或shadow密码)文件中,该消息摘要会以长度为34字符的字符串形式存储。

  • 用户ID(UID):用户的数值型ID。如果该字段的值为0,那么相应账户即具有特权级权限。这种账号一般只有一个,其登录名为root。在Linux 2.2或更早的版本中,用户ID为16位值,其范围为0~65535。而Linux 2.4及其以后的版本则以32位值来存储用户ID,因此能够支持更多的用户数。

在密码文件中,允许(但不常见)同一用户ID拥有多条记录,从而使得同一用户ID拥有多个登录名。如此一来,多个用户便能以不同密码(登录)去访问相同资源(比如,文件等)。此外,不同的登录名还可以关联一系列不同的组ID。

  • 组ID(GID):用户属组中首选属组的数值型ID。关于用户与属组之间从属关系的进一步信息,会在系统组文件中加以定义。
  • 注释:该字段存放关于用户的描述性文字。诸如finger(1)之类的各种程序会显示此信息。
  • 主目录:用户登录后所处的初始路径。会以该字段内容来设置HOME环境变量。
  • 登录shell:一旦用户登录,便交由该程序控制。通常,该程序为shell的一种(比如,bash),但也可以是其他任何程序。如果该字段为空,那么登录shell默认为/bin/sh(Bourne shell)。会以该字段值来设置SHELL环境变量。

在单机系统中,所有密码信息都存储在/etc/passwd文件中。然而,如果使用了NIS(网络信息系统)或LDAP(轻型目录访问协议)在网络环境中分发密码,那么部分密码信息可能会由远端系统保存。只要访问密码信息的程序采用的是本章稍后描述的函数(getpwnam()、getpwuid()等),那么无论是使用NIS还是LDAP,对应用程序来说都是透明的。类似论断同样适用于本章随后几节所讨论的shadow密码文件和组文件。