passwd(1) on Solnix vs Linux and the BSDs

On Solnix, passwd is the illumos /usr/bin/passwd. It changes passwords and also the login shell (-e), gecos (-g) and home directory (-h), and it can target files, ldap or nis with -r. Linux scripts break on flag meaning: Solnix -s shows status, -e and -h are not expire and help, and -S does not exist.

What Solnix runs

A default Solnix system runs the illumos passwd at /usr/bin/passwd; no other variants are shipped. It calls PAM (service name passwd) and reads /etc/default/passwd for PASSLENGTH, complexity and dictionary checks. The -d, -f, -n, -u, -w and -x descriptions are cut off in the bundle, so only their presence in the synopsis is stated here.

Differences

Compared withTopicWhat differs
Linux-s meaning and status flagSolnix passwd -s shows password attributes (-s -a for all users). Linux uses -S for status, and Linux -s is --stdin, which reads the new password from standard input. Solnix has no -S and no --stdin in its synopsis.
Source: Solnix passwd(1) SYNOPSIS, OPTIONS -s, -a; Linux passwd(1) -S, -a, -s, --stdin
Linux-e and -h meaningSolnix -e changes the login shell and -h changes the home directory. On Linux, -e immediately expires the password and -h prints help. Running a Linux passwd -e or passwd -h line on Solnix does something different.
Source: Solnix passwd(1) OPTIONS -e, -h; Linux passwd(1) -e, --expire, -h, --help
Linuxstatus output formatSolnix prints 'name status mm/dd/yy min max warn', with status LK, NL, NP or PS. Linux -S prints 7 fields, adding an inactivity period, and its status letters are L, NP or P. Output parsers need changing.
Source: Solnix passwd(1) DESCRIPTION (format of the display, status values); Linux passwd(1) -S
FreeBSD, NetBSD-l meaningSolnix and Linux -l lock the account's password. On FreeBSD and NetBSD, -l updates only the local password file; NetBSD documents it as equivalent to -d files. Do not use -l to lock accounts on the BSDs.
Source: Solnix passwd(1) Security (-l); Linux passwd(1) -l; FreeBSD passwd(1) -l; NetBSD passwd(1) -l
FreeBSD, OpenBSD, NetBSD-d meaning and password database selectionNetBSD -d takes a database argument (files, nis or krb5). Solnix selects a repository with -r files, ldap or nis. FreeBSD uses -l for local-only and a yppasswd link for NIS; OpenBSD's synopsis has no options.
Source: NetBSD passwd(1) -d database; Solnix passwd(1) OPTIONS -r; FreeBSD passwd(1) SYNOPSIS, NOTES; OpenBSD passwd(1) SYNOPSIS
Linux-d delete passwordLinux -d deletes the password and leaves the account passwordless. The Solnix -d description is cut off in the bundle. The page only says a privileged user entering an empty password at the prompt differs from -d because the prompt still appears.
Source: Linux passwd(1) -d, --delete; Solnix passwd(1) DESCRIPTION (null password paragraph)
Linuxeffect of lockingSolnix -l blocks password login and delayed execution (at, batch, cron); -N blocks password login only. Linux -l prefixes the hash with '!' and notes that an SSH key may still work. The Solnix page documents no '!' mechanism.
Source: Solnix passwd(1) Security; Linux passwd(1) -l
FreeBSD, OpenBSD, NetBSDshell, gecos and home directorySolnix passwd changes the login shell (-e), gecos (-g) and home directory (-h) itself. The BSD passwd pages document none of these options and list chpass(1) under SEE ALSO.
Source: Solnix passwd(1) OPTIONS -e, -g, -h; FreeBSD, OpenBSD, NetBSD passwd(1) SYNOPSIS and SEE ALSO
FreeBSD, OpenBSD, NetBSDpassword policy configurationSolnix reads /etc/default/passwd (PASSLENGTH 6, complexity, dictionary). OpenBSD uses the passwordcheck variable in login.conf(5). NetBSD sets the cipher in passwd.conf(5). FreeBSD uses the passwordtime login-class capability for the next change date.
Source: Solnix passwd(1) DESCRIPTION (requirements list); OpenBSD passwd(1); NetBSD passwd(1); FreeBSD passwd(1)
Linuxoptions absent on SolnixLinux has -R/--root, -P/--prefix, -q, -i, -k and long options. None of these appears in the Solnix synopsis. Solnix has -N, -f and the -r files|ldap|nis repository list, which Linux lacks.
Source: Linux passwd(1) OPTIONS; Solnix passwd(1) SYNOPSIS
all fourname services and ADSolnix updates repositories from nsswitch.conf passwd and passwd_compat entries, only for the listed configurations. It ignores ad, so an Active Directory password must be changed with kpasswd(1). The counterpart pages describe no nsswitch.conf lookup.
Source: Solnix passwd(1) DESCRIPTION (password update configurations, ad keyword)

Everyday tasks

TaskSolnixLinuxFreeBSDOpenBSDNetBSD
lock a user's passwordpasswd -l namepasswd -l LOGIN———
show status of one userpasswd -s namepasswd -S LOGIN———
show status of all userspasswd -s -apasswd -S -a———
change login shellpasswd -e [name]—see chpass(1)see chpass(1)see chpass(1)
change password in one repositorypasswd -r files|ldap|nis [name]passwd -r REPOSITORYpasswd -l [user] (local only)—passwd -d files|nis|krb5 [user]

Standards

  • POSIX: passwd is not a POSIX.1-2024 utility.
  • Solnix: The visible part of the Solnix page has no STANDARDS or ATTRIBUTES section; the bundle text is trimmed.
  • Linux: The Linux page in the bundle has no STANDARDS section.

Writing portable scripts

  • Only plain 'passwd [user]' behaves the same everywhere. Avoid -s, -S, -e, -h, -l and -d in portable scripts, since their meaning differs between Solnix, Linux, FreeBSD and NetBSD.
  • Branch on the OS for locking and status: Solnix passwd -l and -s, Linux passwd -l and -S. The BSD pages in the bundle document neither.

Every difference here is taken from the manual pages linked above: Solnix's published page, Linux (man-pages and the GNU and util-linux manuals), FreeBSD, OpenBSD and NetBSD. Each row names its source. Where a manual is silent, this page is too. Compiled 2026-10-26. Found a mistake? Mail hackers@lists.solnix.io.