Each line contains seven attributes or fields: name, password, user ID, group ID, gecos, home directory and shell.
Each attribute is separated from the adjacent attributes by colons but with no spaces. Colons must not be used in the attributes themselves, in order to avoid confusing the system. If there is no data for an attribute, there is no space, but, rather, two consecutive colons.
Name is the user’s login name, that is the name that a user types in when logging into the system. Each such name must be unique string (i.e., sequence of characters).
The password field originally contained an encrypted login password. However, for security reasons, the encrypted passwords are now contained on another file, /etc/shadow, that cannot be read by ordinary users2. This field now merely contains the letter x to indicate that a password has been assigned to the user and is required for authentication. If this field is empty, the user can log in without a password.
User ID is the user’s unique numeric identification number, which is used by the system for access control. Zero is reserved for the root account, and one through 99 are reserved for other predefined accounts. 100 through 999 are available for ordinary users and groups.
Group ID specifies the user’s principal group identification number. This is usually the same as the user ID.
Named for historical reasons3, gecos contains general information about the user that is not needed by the system, most commonly the user’s real name. This field can be empty, in which case there is no space between the two delimiting colons. Alternatively, it can contain multiple entries, each separated by a comma.
Home directory is the full path (i.e., the location relative to the root directory) of the user’s home directory. This is the directory that the user is first in when logging into the system and which contains programs and configuration files specific to that user.
Shell is the full path of the default shell for the user. A shell is a program that provides a text-only user interface and whose main purpose is to execute commands typed in by a user and display the results. The default shell on Linux is bash, whose absolute path is /bin/bash.