passwd(5)
๐ passwd(5) โ the password file, explained by your fave Unix bestie ๐
okay so real talk: this is a File Formats Manual page, and it's about the passwd file. it's giving "the guest list of your whole system" energy and honestly? iconic. let's get into it ๐ซถ
โจ NAME โจ
passwd โ the password file. that's it, that's the name, slay.
๐ธ DESCRIPTION ๐ธ
The /etc/passwd file is a text file that describes user login accounts for the system. read permission should be allowed for all users โ lots of utilities use it, like ls(1), to map user IDs to usernames โ but write access? superuser only, bestie. don't let just anyone be editing the guest list ๐
back in the good old days there was no great problem with this general read permission. everybody could read the encrypted passwords, but the hardware was way too slow to crack a well-chosen password, and ngl the basic assumption used to be that of a friendly user-community. those days are so over. these days many people run some version of the shadow password suite, where /etc/passwd has an 'x' character in the password field, and the encrypted passwords live in /etc/shadow, which is readable by the superuser only. privacy era ๐ฅ
If the encrypted password โ whether in /etc/passwd or in /etc/shadow โ is an empty string, login is allowed without even asking for a password. ๐ญ yes fr, no password at all. note that this functionality may be intentionally disabled in applications, or configurable (for example using the "nullok" or "nonull" arguments to pam_unix(8)).
If the encrypted password in /etc/passwd is "*NP*" (without the quotes, bestie โ the quotes aren't part of it), the shadow record should be obtained from an NIS+ server. iykyk.
Regardless of whether shadow passwords are used, many system administrators use an asterisk (*) in the encrypted password field to make sure that this user can not authenticate themself using a password. (But see NOTES below โ there's a whole plot twist ๐.)
If you create a new login, first put an asterisk (*) in the password field, then use passwd(1) to set it. that's the order, don't skip steps ๐
๐ฆ the seven fields ๐ฆ
Each line of the file describes a single user, and contains seven colon-separated fields:
name:password:UID:GID:GECOS:directory:shell
The fields are as follows:
nameโ This is the user's login name. It should not contain capital letters. lowercase only, no cap (literally). ๐passwordโ This is either the encrypted user password, an asterisk (*), or the letter'x'. (Seepwconv(8)for an explanation of'x'โ that's where the lore lives.)UIDโ The privileged root login account (superuser) has the user ID0. zero, the main character of numbers ๐GIDโ This is the numeric primary group ID for this user. (Additional groups for the user are defined in the system group file; seegroup(5).)GECOSโ This field (sometimes called the "comment field") is optional and used only for informational purposes. Usually, it contains the full username. Some programs (for example,finger(1)) display information from this field.
GECOS stands for "General Electric Comprehensive Operating System", which was renamed to GCOS when GE's large systems division was sold to Honeywell. Dennis Ritchie has reported: "Sometimes we sent printer output or batch jobs to the GCOS machine. The gcos field in the password file was a place to stash the information for the $IDENTcard. Not elegant." not elegant ๐ญ but historic. we respect the ancestry.
directoryโ This is the user's home directory: the initial directory where the user is placed after logging in. The value in this field is used to set theHOMEenvironment variable. your home base, your little nest ๐shellโ This is the program to run at login (if empty, use/bin/sh). If set to a nonexistent executable, the user will be unable to login throughlogin(1). The value in this field is used to set theSHELLenvironment variable. choose wisely bestie, this is your whole aesthetic โจ
๐ FILES ๐
/etc/passwd
that's the one. the file. the moment.
โญ NOTES โญ
If you want to create user groups, there must be an entry in /etc/group, or no group will exist. no entry, no group, no exceptions, periodt.
If the encrypted password is set to an asterisk (*), the user will be unable to login using login(1), but may still login using rlogin(1), run existing processes and initiate new ones through rsh(1), cron(8), at(1), or mail filters, etc. ๐ณ yeah. the asterisk is not the full lockout people think it is.
Trying to lock an account by simply changing the shell field yields the same result and additionally allows the use of su(1). so if you're out here trying to lock an account by editing the shell field โ that's not a lock, that's a vibe check that failed. do not rely on it ๐จ
๐ SEE ALSO ๐
chfn(1), chsh(1), login(1), passwd(1), su(1), crypt(3), getpwent(3), getpwnam(3), group(5), shadow(5), vipw(8)
go read them, they're all bangers, fr fr ๐ฅ
and that's the whole page bestie ๐ this one's from Linux man-pages 6.18, dated 2025-09-21 โ so you know it's fresh. now go forth and respect the colon-separated fields. mwah ๐ซถโจ
๐ฆ where this page comes from
- alpine 3.24: man-pages 6.18-r0 ยท GPL-2.0-or-later
- nixos 26.05: man-pages 6.18
- ๐ the page's license: GPL-2.0-or-later
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms