/etc/passwd
文件中存储的是操作系统中所有用户的非机密信息(/etc/passwd
文件中不包含用户密码的明文),该系统中的所有用户都可以查看该文件的全部内容。
/etc/passwd
文件中各个字段的大致含义如下:
用户名:密码位:用户 ID:主用户组 ID:备注信息:用户主目录:Shell
下面是对每个字段的详细解释:
- 用户名:
创建账户时指定的用户名,这个用户名主要是给人看的,因为计算机在识别用户的时候是靠下面提到的用户 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 的用户只能登陆特定的服务,不能直接登录系统,可以防止用户权限过大。