PAM-CONFIG(8)

πŸ“¦ version 2.13+git.20250715, in opensuse-leap 16.0

πŸŽ€ PAM-CONFIG(8) πŸŽ€

okay so welcome to the Reference Manual page for pam-config, bestie πŸ’– this is the part where the system's PAM config files get adjusted, and honestly? it's giving "small tool, big responsibility." let's get into it πŸ¦‹


✨ NAME ✨

pam-config β€” adjusts common PAM config files πŸ’…


🌸 SYNOPSIS 🌸

       pam-config [--debug] [--list-modules] [--service service-name] -a | -c |
                  -d | -q  [-f] [module-name]

       pam-config --version

πŸ’œ DESCRIPTION πŸ’œ

pam-config adjusts predefined PAM config files. that's the whole sentence, no cap ✨ it's the little tool that goes in and edits the config files that were already set up for you 🫢


πŸ”₯ OPTIONS πŸ”₯

πŸ’« COMMON OPTIONS πŸ’«

  • --debug β€” prints debug messages πŸ› so you can actually see what's going on
  • -f, --force β€” the new configuration gets activated regardless of whether there are other local changes. yeah, it does not care, it's giving main character energy πŸ’€
  • --list-modules β€” prints a list of all supported modules to stdout πŸ“‹
  • --nullok β€” adds nullok to all modules which support this πŸ•³οΈ
  • --pam-debug β€” adds debug to all modules which support this πŸ”
  • --confdir directory β€” use a custom configuration directory πŸ“
  • --initialize β€” converts the old config and creates a new one 🧚
  • --update β€” reads the current config and writes them new πŸ”„

πŸ¦‹ MODIFIER OPTIONS πŸ¦‹

use these to specify the action you want pam-config to apply, bestie. they need to be followed by a supported module option β€” like, non-negotiable. see the section called "SUPPORTED PAM MODULES" πŸ‘‘

  • -a, --add β€” adds options or new PAM modules to the existing PAM configuration files βž•
  • -c, --create β€” creates new PAM configuration files for plain UNIX authentication, overwriting the existing ones ⚠️ (yes, overwriting β€” drama)
  • -d, --delete β€” removes options or PAM modules from the existing PAM configuration files βž–
  • -q, --query β€” prints a list of types and the corresponding module options for the queried PAM module πŸ”Ž
  • --verify β€” does some sanity checks on the current common PAM configuration files βœ…

πŸ‘‘ SUPPORTED PAM MODULES πŸ‘‘

this is the list of modules pam-config supports. they're split into two categories: global and single service modules 🌈

🌟 GLOBAL MODULES 🌟

the global modules get inserted into the common-{account,auth,password,session} files, which are included by the single service files πŸ’«


πŸšͺ pam_access

  • --access β€” pam_access, for account access rules
  • --access-debug β€” adds debug to all pam_access.so invocations
  • --access-nodefgroup β€” adds nodefgroup to all pam_access.so invocations
  • --access-noaudit β€” adds noaudit to all pam_access.so invocations
  • --access-accessfile=value β€” adds accessfile=value option to pam_access.so
  • --access-fieldsep=value β€” adds fieldsep=value option to pam_access.so
  • --access-listsep=value β€” adds listsep=value option to pam_access.so

πŸ›‘οΈ pam_apparmor

  • --apparmor β€” enable/disable pam_apparmor.so
  • --apparmor-debug β€” adds debug to all pam_apparmor.so invocations

πŸͺ pam_ccreds

  • --ccreds β€” enable/disable pam_ccreds.so

πŸ” pam_cracklib

  • --cracklib β€” enable/disable pam_cracklib.so
  • --cracklib-debug β€” adds debug to all pam_cracklib.so invocations
  • --cracklib-reject_username β€” adds reject_username to all pam_cracklib.so invocations
  • --cracklib-gecoscheck β€” adds gecoscheck to all pam_cracklib.so invocations
  • --cracklib-enforce_for_root β€” adds enforce_for_root to all pam_cracklib.so invocations
  • --cracklib-authtok_type=value β€” adds authtok_type=value option to pam_cracklib.so
  • --cracklib-retry=value β€” adds retry=value option to pam_cracklib.so
  • --cracklib-difok=value β€” adds difok=value option to pam_cracklib.so
  • --cracklib-difignore=value β€” adds difignore=value option to pam_cracklib.so
  • --cracklib-minlen=value β€” adds minlen=value option to pam_cracklib.so
  • --cracklib-dcredit=value β€” adds dcredit=value option to pam_cracklib.so
  • --cracklib-ucredit=value β€” adds ucredit=value option to pam_cracklib.so
  • --cracklib-lcredit=value β€” adds lcredit=value option to pam_cracklib.so
  • --cracklib-ocredit=value β€” adds ocredit=value option to pam_cracklib.so
  • --cracklib-minclass=value β€” adds minclass=value option to pam_cracklib.so
  • --cracklib-dictpath=value β€” adds dictpath=value option to pam_cracklib.so
  • --cracklib-maxrepeat=value β€” adds maxrepeat=value option to pam_cracklib.so
  • --cracklib-maxsequence=value β€” adds maxsequence=value option to pam_cracklib.so
  • --cracklib-maxclassrepeat=value β€” adds maxclassrepeat=value option to pam_cracklib.so

πŸ—„οΈ pam_ecryptfs

  • --ecryptfs β€” enable/disable pam_ecryptfs.so
  • --ecryptfs-unwrap β€” adds unwrap to all pam_ecryptfs.so invocations

🌱 pam_env

  • --env β€” enable/disable pam_env.so
  • --env-debug β€” adds debug to all pam_env.so invocations
  • --env-conffile=value β€” adds conffile=value option to pam_env.so
  • --env-envfile=value β€” adds envfile=value option to pam_env.so
  • --env-readenv=value β€” adds readenv=value option to pam_env.so

⚑ pam_exec

  • --exec β€” pam_exec, for password management
  • --exec-debug β€” adds debug to all pam_exec.so invocations
  • --exec-expose_authtok β€” adds expose_authtok to all pam_exec.so invocations
  • --exec-seteuid β€” adds seteuid to all pam_exec.so invocations
  • --exec-quiet β€” adds quiet to all pam_exec.so invocations
  • --exec-log=value β€” adds log=value option to pam_exec.so
  • --exec-option=value β€” adds option=value option to pam_exec.so

⏳ pam_faildelay

  • --faildelay β€” enable/disable pam_faildelay.so
  • --faildelay-debug β€” adds debug to all pam_faildelay.so invocations
  • --faildelay-delay=value β€” adds delay=value option to pam_faildelay.so

πŸ«† pam_fp

  • --fp β€” enable/disable pam_fp.so
  • --fp-debug β€” adds debug to all pam_fp.so invocations

πŸ«† pam_fprint

  • --fprint β€” enable/disable pam_fprint.so
  • --fprint-debug β€” adds debug to all pam_fprint.so invocations

πŸ«† pam_fprintd

  • --fprintd β€” enable/disable pam_fprintd.so
  • --fprintd-debug β€” adds debug to all pam_fprintd.so invocations

πŸ”’ pam_fscrypt

  • --fscrypt β€” enable/disable pam_fscrypt.so

πŸ”‘ pam_gnome_keyring

  • --gnome_keyring β€” enable/disable pam_gnome_keyring.so
  • --gnome_keyring-auto_start β€” adds auto_start to all pam_gnome_keyring.so invocations
  • --gnome_keyring-only_if=value β€” adds only_if=value option to pam_gnome_keyring.so

πŸ‘₯ pam_group

  • --group β€” enable/disable pam_group.so

🌀️ pam_himmelblau

  • --himmelblau β€” enable/disable pam_himmelblau.so
  • --himmelblau-debug β€” adds debug to all pam_himmelblau.so invocations

πŸͺͺ pam_kanidm

  • --kanidm β€” enable/disable pam_kanidm.so
  • --kanidm-debug β€” adds debug to all pam_kanidm.so invocations

🎫 pam_krb5

  • --krb5 β€” enable/disable pam_krb5.so
  • --krb5-debug β€” adds debug to all pam_krb5.so invocations
  • --krb5-ignore_unknown_principals β€” adds ignore_unknown_principals to all pam_krb5.so invocations
  • --krb5-minimum_uid=value β€” adds minimum_uid=value option to pam_krb5.so

πŸ—οΈ pam_kwallet5

  • --kwallet5 β€” enable/disable pam_kwallet5.so

πŸ•°οΈ pam_lastlog2

  • --lastlog2 β€” enable/disable pam_lastlog2.so
  • --lastlog2-debug β€” adds debug to all pam_lastlog2.so invocations
  • --lastlog2-silent β€” adds silent to all pam_lastlog2.so invocations
  • --lastlog2-database=value β€” adds database=value option to pam_lastlog2.so
  • --lastlog2-silent_if=value β€” adds silent_if=value option to pam_lastlog2.so

πŸ“‡ pam_ldap

  • --ldap β€” enable/disable pam_ldap.so
  • --ldap-debug β€” adds debug to all pam_ldap.so invocations

πŸ“Š pam_limits

  • --limits β€” enable/disable pam_limits.so
  • --limits-debug β€” adds debug to all pam_limits.so invocations
  • --limits-change_uid β€” adds change_uid to all pam_limits.so invocations
  • --limits-utmp_early β€” adds utmp_early to all pam_limits.so invocations
  • --limits-conf=value β€” adds conf=value option to pam_limits.so

🏠 pam_localuser

  • --localuser β€” enable/disable pam_localuser.so
  • --localuser-debug β€” adds debug to all pam_localuser.so invocations
  • --localuser-file=value β€” adds file=value option to pam_localuser.so

πŸ“‚ pam_mkhomedir

  • --mkhomedir β€” enable/disable pam_mkhomedir.so
  • --mkhomedir-debug β€” adds debug to all pam_mkhomedir.so invocations
  • --mkhomedir-silent β€” adds silent to all pam_mkhomedir.so invocations
  • --mkhomedir-umask=value β€” adds umask=value option to pam_mkhomedir.so
  • --mkhomedir-skel=value β€” adds skel=value option to pam_mkhomedir.so

πŸ§ͺ pam_mktemp

  • --mktemp β€” enable/disable pam_mktemp.so
  • --mktemp-debug β€” adds debug to all pam_mktemp.so invocations

🏷️ pam_nam

  • --nam β€” enable/disable pam_nam.so

πŸ”‘ pam_passwdqc

  • --passwdqc β€” enable/disable pam_passwdqc.so
  • --passwdqc-ask_oldauthtok β€” adds ask_oldauthtok to all pam_passwdqc.so invocations
  • --passwdqc-check_oldauthtok β€” adds check_oldauthtok to all pam_passwdqc.so invocations
  • --passwdqc-use_first_pass β€” adds use_first_pass to all pam_passwdqc.so invocations
  • --passwdqc-use_authtok β€” adds use_authtok to all pam_passwdqc.so invocations
  • --passwdqc-min=value β€” adds min=value option to pam_passwdqc.so
  • --passwdqc-max=value β€” adds max=value option to pam_passwdqc.so
  • --passwdqc-passphrase=value β€” adds passphrase=value option to pam_passwdqc.so
  • --passwdqc-match=value β€” adds match=value option to pam_passwdqc.so
  • --passwdqc-similar=value β€” adds similar=value option to pam_passwdqc.so
  • --passwdqc-random=value β€” adds random=value option to pam_passwdqc.so
  • --passwdqc-enforce=value β€” adds enforce=value option to pam_passwdqc.so
  • --passwdqc-retry=value β€” adds retry=value option to pam_passwdqc.so

πŸͺͺ pam_pkcs11

  • --pkcs11 β€” enable/disable pam_pkcs11.so
  • --pkcs11-debug β€” adds debug to all pam_pkcs11.so invocations
  • --pkcs11-configfile=value β€” adds configfile=value option to pam_pkcs11.so

πŸ”‘ pam_pwcheck

  • --pwcheck β€” enable/disable pam_pwcheck.so module in the password section
  • --pwcheck-debug β€” adds debug to all pam_pwcheck.so invocations
  • --pwcheck-nullok β€” adds nullok to all pam_pwcheck.so invocations

okay so we're still deep in OPTIONS and honestly? there's a lot of them πŸ’€ but every single one matters, so let's go, no skipping, we're eating this whole list πŸ“

  • --pwcheck-cracklib β€” adds the cracklib option to pam_pwcheck.so ✨
  • --pwcheck-no_obscure_checks β€” adds no_obscure_checks to pam_pwcheck.so
  • --pwcheck-enforce_for_root β€” adds enforce_for_root to pam_pwcheck.so πŸ”₯
  • --pwcheck-cracklib_path=path β€” adds cracklib_path=path to pam_pwcheck.so
  • --pwcheck-maxlen=N β€” adds maxlen=N to pam_pwcheck.so
  • --pwcheck-minlen=N β€” adds minlen=N to pam_pwcheck.so
  • --pwcheck-tries=N β€” adds tries=N to pam_pwcheck.so
  • --pwcheck-remember=N β€” adds remember=N to pam_pwcheck.so

  • --pwhistory β€” enables/disables pam_pwhistory.so πŸ‘‘
  • --pwhistory-debug β€” adds debug to all pam_pwhistory.so invocations
  • --pwhistory-use_authtok β€” adds use_authtok to all pam_pwhistory.so invocations
  • --pwhistory-enforce_for_root β€” adds enforce_for_root to all pam_pwhistory.so invocations
  • --pwhistory-remember=value β€” adds remember=value to pam_pwhistory.so
  • --pwhistory-retry=value β€” adds retry=value to pam_pwhistory.so
  • --pwhistory-authtok_type=value β€” adds authtok_type=value to pam_pwhistory.so
  • --pwhistory-file=value β€” adds file=value to pam_pwhistory.so

  • --pwquality β€” enables/disables pam_pwquality.so πŸ¦‹
  • --pwquality-debug β€” adds debug to all pam_pwquality.so invocations
  • --pwquality-reject_username β€” adds reject_username to all pam_pwquality.so invocations
  • --pwquality-gecoscheck β€” adds gecoscheck to all pam_pwquality.so invocations
  • --pwquality-enforce_for_root β€” adds enforce_for_root to all pam_pwquality.so invocations
  • --pwquality-local_users_only β€” adds local_users_only to all pam_pwquality.so invocations
  • --pwquality-use_authtok β€” adds use_authtok to all pam_pwquality.so invocations
  • --pwquality-authtok_type=value β€” adds authtok_type=value to pam_pwquality.so
  • --pwquality-retry=value β€” adds retry=value to pam_pwquality.so
  • --pwquality-difok=value β€” adds difok=value to pam_pwquality.so
  • --pwquality-minlen=value β€” adds minlen=value to pam_pwquality.so
  • --pwquality-dcredit=value β€” adds dcredit=value to pam_pwquality.so
  • --pwquality-ucredit=value β€” adds ucredit=value to pam_pwquality.so
  • --pwquality-lcredit=value β€” adds lcredit=value to pam_pwquality.so
  • --pwquality-ocredit=value β€” adds ocredit=value to pam_pwquality.so
  • --pwquality-minclass=value β€” adds minclass=value to pam_pwquality.so
  • --pwquality-dictpath=value β€” adds dictpath=value to pam_pwquality.so
  • --pwquality-maxrepeat=value β€” adds maxrepeat=value to pam_pwquality.so
  • --pwquality-maxsequence=value β€” adds maxsequence=value to pam_pwquality.so
  • --pwquality-maxclassrepeat=value β€” adds maxclassrepeat=value to pam_pwquality.so
  • --pwquality-dictcheck=value β€” adds dictcheck=value to pam_pwquality.so
  • --pwquality-usercheck=value β€” adds usercheck=value to pam_pwquality.so
  • --pwquality-enforcing=value β€” adds enforcing=value to pam_pwquality.so
  • --pwquality-badwords=value β€” adds badwords=value to pam_pwquality.so

like, that's the whole password-quality buffet, we love a thorough queen πŸ’…


  • --selinux β€” enables/disables pam_selinux.so
  • --selinux-debug β€” adds debug to all pam_selinux.so invocations
  • --ssh β€” enables/disables pam_ssh.so 🧚
  • --ssh-debug β€” adds debug to all pam_ssh.so invocations
  • --ssh-nullok β€” adds nullok to all pam_ssh.so invocations
  • --ssh-keyfiles=value β€” adds keyfiles=value to pam_ssh.so
  • --sss β€” enables/disables pam_sss.so
  • --sss-debug β€” adds debug to all pam_sss.so invocations

  • --systemd β€” enables/disables pam_systemd.so ⭐
  • --systemd-debug β€” adds debug to all pam_systemd.so invocations
  • --systemd-kill_session_processes=value β€” adds kill_session_processes=value to pam_systemd.so
  • --systemd-kill_only_users=value β€” adds kill_only_users=value to pam_systemd.so
  • --systemd-kill_exclude_users=value β€” adds kill_exclude_users=value to pam_systemd.so
  • --systemd-controllers=value β€” adds controllers=value to pam_systemd.so
  • --systemd-reset_controllers=value β€” adds reset_controllers=value to pam_systemd.so
  • --systemd_home β€” enables/disables pam_systemd_home.so 🌸
  • --systemd_home-debug β€” adds debug to all pam_systemd_home.so invocations
  • --systemd_home-suspend=value β€” adds suspend=value to pam_systemd_home.so

yeah the underscore in --systemd_home is not a typo bestie, that's literally how it's spelled, don't come for me 😭


  • --thinkfinger β€” enables/disables pam_thinkfinger.so
  • --thinkfinger-debug β€” adds debug to all pam_thinkfinger.so invocations

  • --umask β€” adds pam_umask.so as an optional session module πŸŽ€
  • --umask-debug β€” adds debug to all pam_umask.so invocations in session management
  • --umask-silent β€” adds silent to all pam_umask.so invocations in session management
  • --umask-usergroups β€” adds usergroups to all pam_umask.so invocations in session management
  • --umask-umask=mode β€” adds umask=mode to pam_umask.so

note how the first three are session-management girlies specifically, and --umask-umask is just plain module-level 🫢


  • --unix β€” enables/disables pam_unix.so πŸ‘‘
  • --unix-debug β€” adds debug to all pam_unix.so invocations
  • --unix-audit β€” adds audit to all pam_unix.so invocations
  • --unix-nodelay β€” adds nodelay to all pam_unix.so invocations
  • --unix-nullok β€” adds nullok to all pam_unix.so invocations
  • --unix-shadow β€” adds shadow to all pam_unix.so invocations
  • --unix-md5 β€” adds md5 to all pam_unix.so invocations
  • --unix-bigcrypt β€” adds bigcrypt to all pam_unix.so invocations
  • --unix-sha256 β€” adds sha256 to all pam_unix.so invocations
  • --unix-sha512 β€” adds sha512 to all pam_unix.so invocations
  • --unix-blowfish β€” adds blowfish to all pam_unix.so invocations
  • --unix-nis β€” adds nis to all pam_unix.so invocations
  • --unix-broken_shadow β€” adds broken_shadow to all pam_unix.so invocations
  • --unix-use_first_pass β€” adds use_first_pass to all pam_unix.so invocations
  • --unix-try_first_pass β€” adds try_first_pass to all pam_unix.so invocations
  • --unix-authtok_type=value β€” adds authtok_type=value to pam_unix.so
  • --unix-remember=value β€” adds remember=value to pam_unix.so
  • --unix-rounds=value β€” adds rounds=value to pam_unix.so
  • --unix-minlen=value β€” adds minlen=value to pam_unix.so

the way pam_unix.so has the most options… main character energy fr fr πŸ’€


  • --unix2 β€” uses pam_unix2.so as the standard UNIX PAM module πŸ”₯
  • --unix2-nullok β€” adds nullok to all pam_unix2.so invocations
  • --unix2-debug β€” adds debug to all pam_unix2.so invocations
  • --unix2-trace β€” adds trace to pam_unix2.so
  • --unix2-none β€” adds the option none to pam_unix2.so
  • --unix2-call_modules=modules,... β€” adds call_modules= plus the list of modules to pam_unix2.so
  • --unix2-nisdir=path β€” adds nisdir=path to pam_unix2.so

  • --winbind β€” enables/disables pam_winbind.so
  • --winbind-debug β€” adds debug to all pam_winbind.so invocations
  • --wtmpdb β€” enables/disables pam_wtmpdb.so ✨
  • --wtmpdb-debug β€” adds debug to all pam_wtmpdb.so invocations
  • --wtmpdb-silent β€” adds silent to all pam_wtmpdb.so invocations
  • --wtmpdb-database=value β€” adds database=value to pam_wtmpdb.so
  • --wtmpdb-skip_if=value β€” adds skip_if=value to pam_wtmpdb.so

🫢 SINGLE SERVICE MODULES 🫢

okay so these ones are special β€” they can only be added to single service files. also peep the section called β€œUSAGE EXAMPLES” for the full picture, iykyk πŸ’œ

  • --ck_connector β€” enables/disables pam_ck_connector.so
  • --ck_connector-debug β€” adds debug to all pam_ck_connector.so invocations

  • --cryptpass β€” enables/disables pam_cryptpass.so
  • --csync β€” enables/disables pam_csync.so πŸ¦‹
  • --csync-use_first_pass β€” adds use_first_pass to all pam_csync.so invocations
  • --csync-try_first_pass β€” adds try_first_pass to all pam_csync.so invocations
  • --csync-soft_try_pass β€” adds soft_try_pass to all pam_csync.so invocations
  • --csync-nullok β€” adds nullok to all pam_csync.so invocations
  • --csync-debug β€” adds debug to all pam_csync.so invocations
  • --csync-silent β€” adds silent to all pam_csync.so invocations

  • --google_authenticator β€” enables/disables pam_google_authenticator.so πŸ”βœ¨
  • --google_authenticator-noskewadj β€” adds noskewadj to all pam_google_authenticator.so invocations
  • --google_authenticator-nullok β€” adds nullok to all pam_google_authenticator.so invocations
  • --google_authenticator-secret=value β€” adds secret=value to pam_google_authenticator.so

  • --keyinit β€” enables/disables pam_keyinit.so
  • --keyinit-debug β€” adds debug to all pam_keyinit.so invocations
  • --keyinit-force β€” adds force to all pam_keyinit.so invocations
  • --keyinit-revoke β€” adds revoke to all pam_keyinit.so invocations

  • --lastlog β€” enables/disables pam_lastlog.so 🌈
  • --lastlog-debug β€” adds debug to all pam_lastlog.so invocations
  • --lastlog-silent β€” adds silent to all pam_lastlog.so invocations
  • --lastlog-never β€” adds never to all pam_lastlog.so invocations
  • --lastlog-nodate β€” adds nodate to all pam_lastlog.so invocations
  • --lastlog-nohost β€” adds nohost to all pam_lastlog.so invocations
  • --lastlog-noterm β€” adds noterm to all pam_lastlog.so invocations
  • --lastlog-nowtmp β€” adds nowtmp to all pam_lastlog.so invocations

and that's where this part lands, but bestie we are not done, keep scrolling πŸ‘€

okay so we were mid-list, right? picking up exactly where we left off β€” the per-module option parade marches on πŸ’…βœ¨

  • --lastlog-noupdate β€” tacks the noupdate option onto every single pam_lastlog.so invocation. no cap, all of them.
  • --lastlog-showfailed β€” same deal but with showfailed, added to all pam_lastlog.so invocations.

  • --loginuid β€” turns pam_loginuid.so on or off. the light switch of the loginuid world πŸŽ€
  • --loginuid-require_auditd β€” drops require_auditd into all pam_loginuid.so invocations.

  • --mount β€” turns pam_mount.so on or off πŸ”₯

  • --u2f β€” turns pam_u2f.so on or off. yes bestie, hardware keys, we love secure πŸ¦‹
  • --u2f-debug β€” adds debug to all pam_u2f.so invocations.
  • --u2f-nouserok β€” adds nouserok to all pam_u2f.so invocations.
  • --u2f-openasuser β€” adds openasuser to all pam_u2f.so invocations.
  • --u2f-alwaysok β€” adds alwaysok to all pam_u2f.so invocations.
  • --u2f-interactive β€” adds interactive to all pam_u2f.so invocations.
  • --u2f-manual β€” adds manual to all pam_u2f.so invocations.
  • --u2f-cue β€” adds cue to all pam_u2f.so invocations.
  • --u2f-nodetect β€” adds nodetect to all pam_u2f.so invocations.
  • --u2f-sshformat β€” adds sshformat to all pam_u2f.so invocations.

and now the ones that take a value β€” these all go straight into pam_u2f.so with the =value glued on, so bring receipts 🧚

  • --u2f-debug_file=value β€” adds debug_file=value to pam_u2f.so.
  • --u2f-origin=value β€” adds origin=value to pam_u2f.so.
  • --u2f-appid=value β€” adds appid=value to pam_u2f.so.
  • --u2f-authfile=value β€” adds authfile=value to pam_u2f.so.
  • --u2f-authpending_file=value β€” adds authpending_file=value to pam_u2f.so.
  • --u2f-max_devices=value β€” adds max_devices=value to pam_u2f.so.
  • --u2f-prompt=value β€” adds prompt=value to pam_u2f.so.
  • --u2f-cue_prompt=value β€” adds cue_prompt=value to pam_u2f.so.
  • --u2f-userpresence=value β€” adds userpresence=value to pam_u2f.so.
  • --u2f-userverification=value β€” adds userverification=value to pam_u2f.so.
  • --u2f-pinverification=value β€” adds pinverification=value to pam_u2f.so.

🌸 NOTES 🌸

okk so this one's actually kind of important β€” pay attention bestie πŸ‘€

the configuration that pam-config writes for the global service modules gets ignored by the system if the common-{account,auth,password,session} symlinks don't point at the common-{account,auth,password,session}-pc files.

like, the vibe is: write all the config you want, but if those symlinks are pointing somewhere else, the system literally does not care. check your symlinks. iykyk πŸ’€

✨ USAGE EXAMPLES ✨

real-world, copy-paste-able, chef's kiss 🫢

  • query the state of pam_unix.so:
pam-config -q --unix
  • enable ldap authentication:
pam-config -a --ldap
  • enable pam_mount.so for the service gdm:
pam-config --service gdm -a --mount
  • enable pam_umask.so whether installed or not, and print debug info during the process:
pam-config --debug -a --force --umask

πŸ” SEE ALSO πŸ”

the whole friend group, in order πŸ’–

PAM(8), pam_unix(8), pam_cracklib(8), pam_mkhomedir(8), pam_limits(8), pam_env(8), pam_xauth(8), pam_make(8)


πŸ‘‘ AUTHOR πŸ‘‘

pam-config was written by Thorsten Kukuk <kukuk@thkukuk.de>. iconic, honestly.


and that's a wrap, bestie πŸŽ€ this whole page dropped as part of the Reference Manual, dated 07/15/2025, and it lives at PAM-CONFIG(8) β€” go forth and configure slayfully πŸ’…βœ¨