深入理解 /etc/passwd 文件

在 Linux 系统上可以使用几种不同的身份验证方案。最常用和标准的方案是对 /etc/passwd/etc/shadow 文件执行身份验证。

/etc/passwd 是基于纯文本的数据库,其中包含系统上所有用户帐户的信息。它由 root 用户拥有,并具有 644 权限。该文件只能由 root 用户或具有 sudo 特权的用户修改,并且所有系统用户都可以读取。

除非您知道自己在做什么,否则请不要手工直接修改 /etc/passwd 文件,请始终使用专门的命令进行操作。例如,要修改用户帐户,请使用 usermod 命令,要添加新的用户帐户,请使用 useradd 命令。

/etc/passwd 格式

/etc/passwd 文件是一个文本文件,每行一个条目,代表一个用户帐户。要查看文件的内容,请使用文本编辑器或如下的命令 cat

cat /etc/passwd

通常,第一行描述根用户,然后是系统帐户和普通用户帐户。新条目将附加在文件末尾。

/etc/passwd 文件的每一行都包含七个逗号分隔的字段:

mark❌1001:1001:mark,,,:/home/mark:/bin/bash
[--] - [--] [--] [-----] [--------] [--------]
|    |   |    |     |         |        |
|    |   |    |     |         |        +-> 7\. 登录 shell
|    |   |    |     |         +----------> 6\. 主目录
|    |   |    |     +--------------------> 5\. GECOS
|    |   |    +--------------------------> 4\. GID
|    |   +-------------------------------> 3\. UID
|    +-----------------------------------> 2\. 密码
+----------------------------------------> 1\. 用户名
  1. 用户名。登录系统时输入的字符串。每个用户名在计算机上必须是唯一的字符串。用户名的最大长度限制为 32 个字符。
  2. 密码。在较旧的 Linux 系统中,用户的加密密码存储在 /etc/passwd 文件中。而在大多数的现代系统上,此字段设置为 x用户密码存储在 /etc/shadow 文件中。
  3. UID 。用户标识符是分配给每个用户的号码。操作系统使用它来引用用户。
  4. GID 。用户的组标识号,是指用户的主要组。用户创建文件时,文件的所属组将设置为此组。通常,组的名称与用户的名称相同。用户的辅助组/etc/groups 文件中列出。
  5. GECOS 或用户的全名。该字段包含逗号分隔值的列表,并包含以下信息:
    • 用户的全名或应用程序名称。
    • 房间号。
    • 工作电话号码。
    • 家庭电话号码。
    • 其他联系信息。
  6. 主目录。用户主目录的绝对路径。它包含用户的文件和配置。默认情况下,用户主目录以用户名命名,并在该 /home 目录下创建。
  7. 登录 Shell。用户登录外壳程序的绝对路径。这是用户登录系统时启动的外壳程序。在大多数 Linux 发行版中,默认的登录 shell 是 Bash 。

结论

/etc/passwd 文件中存储着系统上的所有用户。