PAM_ACCESS(8)
โจ PAM_ACCESS โจ
okay bestie, pull up a chair ๐ซถ this is pam_access, section 8 of the Linux-PAM Manual, and it's literally the bouncer at the club door of your login system. no cap.
๐ธ NAME ๐ธ
pam_access โ the PAM module for logdaemon style login access control ๐
๐ SYNOPSIS ๐
pam_access.so [debug] [noaudit] [nodefgroup] [nodns] [quiet_log]
[accessfile=file] [fieldsep=sep] [listsep=sep]
๐ DESCRIPTION ๐
so pam_access is mainly for access management, periodt. it gives you that logdaemon style login access control, and it can decide based on:
- login names
- host or domain names
- internet addresses or network numbers
- terminal line names
- X
$DISPLAYvalues - or PAM service names, in the case of non-networked logins
by default, the rules for access management come from the config file /etc/security/access.conf โ that's the default, you don't have to specify anything. but wait, there's more: then the individual *.conf files from the /etc/security/access.d/ directory get read too. ๐
and the way they're parsed? one after another, in the order of the system locale. the effect of the individual files is exactly the same as if all of them were concatenated together in the order of parsing. which means โ and this is the important part โ once a pattern is matched in some file, no further files are parsed. done. closed. slay.
โ ๏ธ but if a config file is explicitly specified with the accessfile option, the files in that directory are not parsed. so pick a lane lol.
if Linux PAM is compiled with audit support, the module will report when it denies access based on origin (host, tty, etc.). very "not me snitching but also yes me snitching" energy. ๐ญ
๐ OPTIONS ๐
accessfile=/path/to/access.confโ point at a differentaccess.confstyle configuration file to override the default. lowkey useful when different services need different access lists.debugโ a whole lot of debug info gets printed withsyslog(3). it's giving verbose. ๐ฅnoauditโ do not report logins from disallowed hosts and ttys to the audit subsystem.nodefgroupโ user tokens that aren't enclosed in parentheses will not be matched against the group database. the backwards compatible default is to try the group database match even for tokens not enclosed in parentheses. (iykyk ๐ซถ)nodnsโ don't try to resolve tokens as hostnames, only IPv4 and IPv6 addresses will be resolved. which means: to allow login from a remote host, the IP addresses need to be specified inaccess.conf.quiet_logโ do not log denials withsyslog(3). shhh. ๐คซfieldsep=separatorsโ this one modifies the field separator character thatpam_accessrecognizes when parsing the access configuration file. for example:fieldsep=|will cause the default:character to be treated as part of a field value and|becomes the field separator. doing this may be useful in conjunction with a system that wants to usepam_accesswith X based applications, since thePAM_TTYitem is likely to be of the form"hostname:0"which includes a:character in its value. but honestly? you should not need this. ๐listsep=separatorsโ this modifies the list separator character thatpam_accessrecognizes when parsing the access configuration file. for example:listsep=,will cause the default(space) and\t(tab) characters to be treated as part of a list element value and,becomes the only list element separator. doing this may be useful on a system with group information obtained from a Windows domain, where the default built-in groups"Domain Users","Domain Admins"contain a space. iconic problem, iconic fix. โจ
๐ MODULE TYPES PROVIDED ๐
all of them. every single one. auth, account, password and session โ all provided. main character energy fr fr ๐
โญ RETURN VALUES โญ
PAM_SUCCESSโ access was granted. we love to see it ๐PAM_PERM_DENIEDโ access was not granted. sorry bestie ๐PAM_IGNOREโpam_setcredwas called which does nothing.PAM_ABORTโ not all relevant data or options could be gotten.PAM_USER_UNKNOWNโ the user is not known to the system. who even are you ๐ญ
๐ฆ FILES ๐ฆ
/etc/security/access.confโ the default configuration file ๐
๐ธ SEE ALSO ๐ธ
access.conf(5), pam.d(5), pam(8).
go read those too, bestie, they're all connected, it's a whole ecosystem ๐
๐ AUTHORS ๐
the logdaemon style login access control scheme was designed and implemented by Wietse Venema. the pam_access PAM module was developed by Alexei Nogin <alexei@nogin.dnttm.ru>. and the IPv6 support plus the network(address) / netmask feature was developed and provided by Mike Becher <mike.becher@lrz-muenchen.de>. legends, all of them, no cap ๐ซถ
and that's the whole page!! this one shipped as part of Linux-PAM, dated 09/27/2026 โ so like, go forth and control your access, babe. you've got this. ๐ โจ๐ธ๐
๐ฆ where this page comes from
- arch rolling: pam 1.7.3-1 ยท GPL-2.0-only
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms