Linux /etc/passwd文件各个字段的含义

[Linux基础]/etc/passwd文件各个字段的的含义
图 01.
Image From OpenClipart-Vectors from Pixabay and Modified by ZhaoKaifeng.com

/etc/passwd 文件中存储的是操作系统中所有用户的非机密信息(/etc/passwd 文件中不包含用户密码的明文),该系统中的所有用户都可以查看该文件的全部内容。

/etc/passwd 文件中各个字段的大致含义如下:

用户名:密码位:用户 ID:主用户组 ID:备注信息:用户主目录:Shell
[Linux基础]/etc/passwd文件各个字段的的含义
图 02. 测试环境中 /etc/passwd 文件后 3 行的内容。

下面是对每个字段的详细解释:

  • 用户名:
    创建账户时指定的用户名,这个用户名主要是给人看的,因为计算机在识别用户的时候是靠下面提到的用户 ID, 而不是这里的用户名;
  • 密码位:
    早期的 Unix 系统会将密码放在这里,但后来为了安全起见,用户密码都改为保存在 /etc/shadow 文件中。因此,现在的 /etc/passwd 文件的这个密码位都变成了 x, 表示该密码已经被加密(即使新建用户后没有为用户设置密码,这里仍然显示为 x);
  • 用户 ID:
    这是系统识别用户的依据,在创建用户的时候,如果没有特别指定用户 ID, 则新建用户的用户 ID 为最后一个用户的 ID 加 1(若最后一个用户的用户 ID 是 1002, 则新建用户的 用户 ID 是 1003, 即使此时 1001 这个用户 ID 是空缺的也不会被自动使用)。此外,0 是超级管理员的固定用户 ID; 1~499 或 1~1000 为系统保留账户;这些账户一般用于给系统中的某些文件和服务使用,不需要登陆;500~4294967295 或 1001~4294967295(Linux 2.6 以下的内核仅支持 0~65535 范围的用户 ID)为普通用户 ID.
  • 主用户组 ID:
    Linux 系统识别一个用户组的方式也不是根据用户组的名称,而是根据用户组的用户组 ID. 使用用户组可以对同属于一个用户组的用户进行集中的管理。一般情况下,Linux 系统中的用户默认属于同名的用户组,在没有特别指定的情况下,用户所属的用户组会在用户被创建的时候自动创建。此外,在 Linux 中,一个用户可以同时属于多个组,但只有一个组是主组,其他的都是附加组,/etc/passwd 文件中也只记录用户所属组的主组 ID;
  • 备注信息:
    记录关于该用户的一些附加信息,如账户用途、真实姓名、联系方式等;
  • 用户主目录:
    这里是用户登录之后默认所在的目录,可以认为是用户自己的“地盘”,用户对自己的主目录拥有读、写、执行等权限。
  • Shell:
    Shell 是用户与操作系统互动的桥梁,Linux 系统中有不同特性的 Shell. 在不特别指明的情况下,新建用户默认使用的 Shell 是 /bin/bash. 在 /etc/passwd 文件中还有另外一种常见的 Shell, 即 /sbin/nologin, 使用这个 Shell 的用户只能登陆特定的服务,不能直接登录系统,可以防止用户权限过大。