OPENPAM(3)

πŸ“¦
version 14.5 Β· 2 versions
, in freebsd 14.5, nixos 26.05, nixpkgs unstable

πŸ’– 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_cred
  • openpam_free_data
  • openpam_free_envlist
  • openpam_get_feature
  • openpam_get_option
  • openpam_log
  • openpam_nullconv
  • openpam_readline
  • openpam_readlinev
  • openpam_readword
  • openpam_restore_cred
  • openpam_set_feature
  • openpam_set_option
  • openpam_straddch
  • openpam_subst
  • openpam_ttyconv
  • pam_error
  • pam_get_authtok
  • pam_info
  • pam_prompt
  • pam_setenv
  • pam_verror
  • pam_vinfo
  • pam_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:

🌈 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