OPENPAM(3)
π OPENPAM(3) β the Pluggable Authentication Modules Library π
okay bestie, welcome to the OpenPAM squad page β¨ this is the OPENPAM(3) manual, and it's literally the home of the Pluggable Authentication Modules Library β yes, that's the whole vibe π
πΈ NAME πΈ
This page is the group chat for all these OpenPAM functions, and they all belong to the Pluggable Authentication Modules Library:
openpam_borrow_credopenpam_free_dataopenpam_free_envlistopenpam_get_featureopenpam_get_optionopenpam_logopenpam_nullconvopenpam_readlineopenpam_readlinevopenpam_readwordopenpam_restore_credopenpam_set_featureopenpam_set_optionopenpam_straddchopenpam_substopenpam_ttyconvpam_errorpam_get_authtokpam_infopam_promptpam_setenvpam_verrorpam_vinfopam_vprompt
π LIBRARY π
It's the Pluggable Authentication Module Library β parenthetical flex: (libpam, -lpam). Slay π«Ά
β¨ SYNOPSIS β¨
#include <security/openpam.h>
int
openpam_borrow_cred(pam_handle_t *pamh, const struct passwd *pwd);
void
openpam_free_data(pam_handle_t *pamh, void *data, int status);
void
openpam_free_envlist(char **envlist);
int
openpam_get_feature(int feature, int *onoff);
const char *
openpam_get_option(pam_handle_t *pamh, const char *option);
void
openpam_log(int level, const char *fmt, ...);
int
openpam_nullconv(int n, const struct pam_message **msg,
struct pam_response **resp, void *data);
char *
openpam_readline(FILE *f, int *lineno, size_t *lenp);
char **
openpam_readlinev(FILE *f, int *lineno, int *lenp);
char *
openpam_readword(FILE *f, int *lineno, size_t *lenp);
int
openpam_restore_cred(pam_handle_t *pamh);
int
openpam_set_feature(int feature, int onoff);
int
openpam_set_option(pam_handle_t *pamh, const char *option,
const char *value);
int
openpam_straddch(char **str, size_t *size, size_t *len, int ch);
int
openpam_subst(const pam_handle_t *pamh, char *buf, size_t *bufsize,
const char *template);
int
openpam_ttyconv(int n, const struct pam_message **msg,
struct pam_response **resp, void *data);
int
pam_error(const pam_handle_t *pamh, const char *fmt, ...);
int
pam_get_authtok(pam_handle_t *pamh, int item, const char **authtok,
const char *prompt);
int
pam_info(const pam_handle_t *pamh, const char *fmt, ...);
int
pam_prompt(const pam_handle_t *pamh, int style, char **resp,
const char *fmt, ...);
int
pam_setenv(pam_handle_t *pamh, const char *name, const char *value,
int overwrite);
int
pam_verror(const pam_handle_t *pamh, const char *fmt, va_list ap);
int
pam_vinfo(const pam_handle_t *pamh, const char *fmt, va_list ap);
int
pam_vprompt(const pam_handle_t *pamh, int style, char **resp,
const char *fmt, va_list ap);
π¦ DESCRIPTION π¦
Okay so real talk: these functions are OpenPAM extensions to the PAM API. The ones named pam_*() are, in the author's opinion, logical and necessary extensions to the standard API β iconic behavior, honestly π β while the ones named openpam_*() are either simple convenience functions, or functions intimately tied to OpenPAM implementation details, and therefore not well suited to standardization. No cap, that's the whole breakdown π
π SEE ALSO π
The whole friend group is linked here, bestie:
openpam_borrow_cred(3)openpam_free_data(3)openpam_free_envlist(3)openpam_get_feature(3)openpam_get_option(3)openpam_log(3)openpam_nullconv(3)openpam_readline(3)openpam_readlinev(3)openpam_readword(3)openpam_restore_cred(3)openpam_set_feature(3)openpam_set_option(3)openpam_straddch(3)openpam_subst(3)openpam_ttyconv(3)pam_error(3)pam_get_authtok(3)pam_info(3)pam_prompt(3)pam_setenv(3)pam_verror(3)pam_vinfo(3)pam_vprompt(3)
π STANDARDS π
The standard it's repping: X/Open Single Sign-On Service (XSSO) - Pluggable Authentication Modules, June 1997. Periodt π°οΈ
π AUTHORS π
The OpenPAM library and this manual page were developed for the FreeBSD Project by ThinkSec AS and Network Associates Laboratories, the Security Research Division of Network Associates, Inc. under DARPA/SPAWAR contract N66001-01-C-8035 (βCBOSSβ), as part of the DARPA CHATS research program. That's a whole lot of lore, but we keep every detail π
The OpenPAM library is maintained by Dag-Erling SmΓΈrgrav <des@des.no>. Protect him at all costs π«Ά
π okay that's the whole vibe check β this one's sourced from Debian, dated June 27, 2023, and it's the OPENPAM(3) page. bye bestie! πβ¨
π¦ where this page comes from
- freebsd 14.5: base 14.5
- nixos 26.05: openpam 20230627
- nixpkgs unstable: openpam 20230627
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms