Unix/Linux编程:密码文件------/etc/passwd

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

mtk:x
oceanstar:x:1000:1000:oceanstar:/home/oceanstar:/bin/bash

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值