PWAUTH(8)
π PWAUTH β the manual page, bestie edition π
okay so this is PWAUTH(8), from the System Manager's Manual, and it's literally the moment your web server learns how to check passwords properly. sit down, grab a strawberry π, we're doing this.
β¨ NAME β¨
pwauth β an authenticator for mod_authnz_external and the Apache HTTP Daemon. that's the whole job. she does one thing and she eats. π
β¨ SYNOPSIS β¨
pwauth
that's it. no flags, no drama, no options. she just is. π
β¨ DESCRIPTION β¨
pwauth is an authenticator designed to be used with mod_auth_external or mod_authnz_external and the Apache HTTP Daemon, so you can support reasonably secure web authentication out of the system password database on most versions of Unix. and likeβ¦ particularly? secure authentication against PAM. that's the flex. π₯
the simplest test for pwauth is: start a root shell and just run pwauth. she'll try to read the login and password from standard input, so type a login name, hit return, then type a password, and hit return. heads up bestie β the password will echo on your screen π. then check the status code that got returned (in csh: echo $status, in sh: echo $?).
if the login/password were correct you should get a zero status code. if not, you'll get some other value. see below for the list of status codes to find the meaning of the various values returned. and any values 50 or greater indicate a configuration error β that's not a you-forgot-your-password situation, that's a your-setup-is-cooked situation. π
π STATUS CODES π
vibe check, one number at a time:
0 STATUS_OKβ login OK. we love to see it. periodt. β¨1 STATUS_UNKNOWNβ nonexistent login, or (for some configurations) incorrect password.2 STATUS_INVALIDβ incorrect password (for some configurations).3 STATUS_BLOCKEDβ the uid number is below theMIN_UNIX_UIDvalue configured inconfig.h.4 STATUS_EXPIREDβ login ID has expired.5 STATUS_PW_EXPIREDβ login's password has expired.6 SSTATUS_NOLOGINβ logins to system have been turned off (usually by/etc/nologinfile).7 STATUS_MANYFAILESβ limit on number of bad logins exceeded. too many tries, bestie, go touch grass. π±50 STATUS_INT_USERβ pwauth was invoked by a uid not on theSERVER_UIDSlist. if you get this error code, you probably haveSERVER_UIDSset incorrectly in pwauth'sconfig.hfile. check ya config.51 STATUS_INT_ARGSβ pwauth was not given a login & password to check. this means the passing of data frommod_auth_externalto pwauth is messed up. most likely one is trying to pass data via environment variables, while the other is trying to pass data via a pipe. they're not speaking the same language, it's giving mismatched communication styles π52 STATUS_INT_ERRβ one of several rare and unlikely internal errors occurred. you'll have to read the source code to figure these out. yeah. the source. good luck, iykyk. π53 STATUS_INT_NOROOTβ pwauth was not able to read the password database. usually this means it is not running as root. (PAM andlogin.confconfigurations will return1in this case.) π
fr fr: anything 50+ is a config error, not a password error. don't be out here debugging your users when it's your config.h the whole time. π
π AUTHOR π
pwauth was written by Jan Wolter <jan@unixpapa.com>.
this manual page was written by Hai Zaar <haizaar@haizaar.com>, for the Debian project (but may be used by others). iconic of them honestly. π«Ά
and that's the whole page, babes. this version of PWAUTH(8) is dated 2009-05-02 and it's filed under PWAUTH(8) β yes, the same name twice, she's consistent, she's confident, she's slaying. go authenticate something. π
β¨π¦
π¦ where this page comes from
- debian bookworm: pwauth 2.3.11-5 Β· BSD-3-Clause
- debian trixie: pwauth 2.3.11-6 Β· BSD-3-Clause
- ubuntu jammy: pwauth 2.3.11-5 Β· BSD-3-Clause
- ubuntu noble: pwauth 2.3.11-5 Β· BSD-3-Clause
- ubuntu questing: pwauth 2.3.11-6
- ubuntu resolute: pwauth 2.3.11-6build1 Β· BSD-3-Clause
- ubuntu stonking: pwauth 2.3.11-6build1 Β· BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms