LCMAPS(3)
π LCMAPS β The Local Credential MAPping Service π
okay bestie, sit down, hydrate, because we're about to talk about lcmaps from the Library Functions Manual and honestly? she's iconic. π«Ά
β¨ NAME β¨
lcmaps β The Local Credential MAPping Service. that's it, that's the name, and yes it goes hard. π
πΈ SYNOPSIS πΈ
lcmaps
that's the whole synopsis. no flags, no drama, just vibes. π
π¦ DESCRIPTION π¦
so the LCMAPS framework is designed to take a bunch of credentials as input β think a certificate and/or VOMS credentials β and map them to Unix credentials as output. and when we say Unix credentials we mean the basic POSIX credentials, i.e. User ID, Group ID and Secondary Group IDs. no cap. π₯
LCMAPS is a framework that can load and run one or more 'credential mapping' plugins. the framework will load and run plugins to do the identity mapping. sites and organizations can create their own new functionality by creating new plugins β yes, you can make your own, main character energy fr fr. π
the LCMAPS framework exposes various APIs to push credentials into the framework and to get the account mapping results back out. the lcmaps.db configuration file is the one that configures the LCMAPS plugins and configures the order in which the plugins are launched. some practical examples are shown below (they're literally right there, keep scrolling).
LCMAPS is used by gLExec, the lcas-lcmaps-gt(4)-interface to interface with a Globus GT4 and GT5 Gatekeeper, GridFTP daemon and GSI-OpenSSHd, in StoRM and somewhere in XRootD. she gets around, and honestly? we respect it. π
π INVOCATION π
when an application initializes LCMAPS, the plugins get loaded based on the lcmaps.db configuration file. the application can use one of the APIs to provide credentials as input. the loaded plugins will be executed in the sequence described in that same lcmaps.db configuration file. β¨
during a plugin's execution it has access to the credential data in the LCMAPS core memory. the plugin is also capable of writing credential mapping results in LCMAPS. the plugins can each resolve a part of the mapping, and they can also perform actions based on these (intermediate) results β like running setuid, setgid and setgroup calls, or interacting with an LDAP service. multitasking queen. π
the plugins are executed in a state machine. when a plugin finishes successfully it can execute a different next plugin than when it failed. this lets LCMAPS pass different plugins to resolve a credential mapping. the way that it just routes around problems? it's giving adaptive. π
π ENVIRONMENT π
here come the environment variables, bestie, and there's a LOT of them. stay with me. π
GATEKEEPER_JM_IDβ extra Gatekeeper log message so you can more easily track a Job Manager ID. it's like a little name tag for your job. π·οΈGLOBUSIDβ see$GATEKEEPER_JM_ID.JOB_REPOSITORY_IDβ see$GATEKEEPER_JM_ID, but explicitly for the purpose of the LCMAPS Job Repository plugin.LCMAPS_DB_FILEβ override the build-in default filename for thelcmaps.dbconfiguration file with the value of this environment variable.LCMAPS_DEBUG_LEVELβ tunes the logging output cut-off level. the numbers resemble the numbers used in previous releases in the range[1-5]. however, since LCMAPS version1.5.0these numbers resemble a numerically shifted Syslog number. yes, that's a glow-up AND a plot twist. π0β silent logging, no messages will be written to file or Syslog.1β all messages with a priority ofLOG_ERRare written to file or Syslog. more severe error messages are squashed down to theLOG_ERRpriority. this is to prevent Syslog from blocking on default configurations and to prevent Syslog from broadcasting LCMAPS related messages on the connected TTYs when old plug-ins are used.2β all messages with a priority ofLOG_WARNINGor more severe, i.e.LOG_ERR, are written to file and/or Syslog.3β all messages with a priority ofLOG_NOTICEor more severe, i.e.LOG_ERRorLOG_WARNING, are written to file and/or Syslog. this is the default advertised setting for thelcas-lcmaps-gt-interfaceandglexec. the "FINAL CRED" messages are written onLOG_NOTICEand indicate the resulting LCMAPS mapping from an X.509 and/or VOMS credential to a Unix/POSIX credential. β4β all messages with a priority ofLOG_INFOor more severe, i.e. all messages between (and including)LOG_ERRandLOG_INFO, are written to file and/or Syslog. this value is the build-in default. the success or failures of plug-ins are written onLOG_INFO. to see the flow of plug-ins, this log level is the advised log level to set.5β all messages with a priority ofLOG_DEBUGor more severe, i.e. all messages between (and including)LOG_ERRandLOG_DEBUG, are written to file and/or Syslog. this is the most verbose mode and should be used carefully, as the amount of information flowing from here might hinder normal operation performance if thesyslogdisn't able to keep up. π
LCMAPS_DIRβ the base directory of the$LCMAPS_DB_FILEparameter. this variable is concatenated with the$LCMAPS_DB_FILE.LCMAPS_ETC_DIRβ see$LCMAPS_DIR.LCMAPS_LOG_FILEβ overrides the build-in default file path to log the output to. when set, the logging will not go to Syslog. πLCMAPS_LOG_STRINGβ prepend all log output messages with the value of this environment variable.LCMAPS_MODULES_DIRβ directory to search for the LCMAPS plugins (or modules). same as thepathoption in thelcmaps.dbfile.LCMAPS_POLICY_NAMEβ a colon separated list of LCMAPS plugin execution policies. when this environment variable is present, only the listed execution policies will be executed. they will be executed in the order as written in thelcmaps.dbfile (from top to bottom).LCMAPS_VERIFY_TYPEβ Deprecated. β οΈLCMAPS_VOMS_EXTRACTβ Deprecated. β οΈLCMAPS_X509_CERT_DIRβ specific setting equal to the$X509_CERT_DIRenvironment variable.LCMAPS_X509_VOMS_DIRβ specific setting equal to the$X509_VOMS_DIRenvironment variable.X509_CERT_DIRβ the directory where all the CA files, e.g. CA certificate and CRL files, are located. the default location is:/etc/grid-security/certificates/. πX509_VOMS_DIRβ this VOMS directory will hold the VOMS.lscfiles and/or PEM files to authenticate the VOMS Attributes Certificates. subdirectories are named by the VO name and scope the.lscand PEM files in their authentication to one particular VO. the default location is:/etc/grid-security/vomsdir/. π
π« RETURN VALUES π«
LCMAPS_SUCCESSβ Success. slay. βLCMAPS_FAILβ Failure. we don't talk about it. π
π NOTES π
for an API specification, please use make doc to make the apidoc. π§
π BUGS π
the apidoc is not complete. it has most interfaces, but needs to be checked for completeness. (relatable, honestly.)
please report any errors to the Nikhef Grid Middleware Security Team <grid-mw-security-support@nikhef.nl>. be nice, they're doing their best. π«Ά
π SEE ALSO π
lcmaps.db(5), lcas_lcmaps_gt4_interface(8), lcas_lcmaps_gt_interface(8), lcmaps_dummy_bad.mod(8), lcmaps_dummy_good.mod(8), lcmaps_ldap_enf.mod(8), lcmaps_localaccount.mod(8), lcmaps-plugins-c-pep(8), lcmaps_plugins_scas_client(8), lcmaps_poolaccount.mod(8), lcmaps_posix_enf.mod(8), lcmaps_tracking_groupid.mod(8), lcmaps_verify_proxy.mod(8), scas(8), scas.conf(5), glexec(1), glexec.conf(5), ees(1), ees.conf(5)
the whole friend group showed up. β¨
π AUTHORS π
LCMAPS and the LCMAPS plug-ins were written by the Grid Middleware Security Team <grid-mw-security@nikhef.nl>. legends, honestly. π
and that's the tea bestie π β this page is from the Library Functions Manual and it's dated December 22, 2011. old but gold, and she still ate. periodt. π β¨
π¦ where this page comes from
- debian bookworm: liblcmaps0 1.6.6-2.1+b1 Β· Apache-2.0
- debian trixie: liblcmaps0t64 1.6.6-3.1+b2 Β· Apache-2.0
- epel 10: lcmaps 1.6.7-1.el10_3 Β· Apache-2.0
- epel 10: lcmaps-without-gsi 1.6.7-1.el10_3 Β· Apache-2.0
- epel 9: lcmaps 1.6.7-1.el9 Β· Apache-2.0
- epel 9: lcmaps-without-gsi 1.6.7-1.el9 Β· Apache-2.0
- fedora 43: lcmaps 1.6.6-18.fc43 Β· Apache-2.0
- fedora 43: lcmaps 1.6.6-18.fc43 Β· Apache-2.0
- fedora 43: lcmaps 1.6.7-1.fc43 Β· Apache-2.0
- fedora 43: lcmaps 1.6.7-1.fc43 Β· Apache-2.0
- fedora 43: lcmaps-without-gsi 1.6.6-18.fc43 Β· Apache-2.0
- fedora 43: lcmaps-without-gsi 1.6.6-18.fc43 Β· Apache-2.0
- fedora 43: lcmaps-without-gsi 1.6.7-1.fc43 Β· Apache-2.0
- fedora 43: lcmaps-without-gsi 1.6.7-1.fc43 Β· Apache-2.0
- fedora 44: lcmaps 1.6.6-19.fc44 Β· Apache-2.0
- fedora 44: lcmaps 1.6.6-19.fc44 Β· Apache-2.0
- fedora 44: lcmaps 1.6.7-1.fc44 Β· Apache-2.0
- fedora 44: lcmaps 1.6.7-1.fc44 Β· Apache-2.0
- fedora 44: lcmaps-without-gsi 1.6.6-19.fc44 Β· Apache-2.0
- fedora 44: lcmaps-without-gsi 1.6.6-19.fc44 Β· Apache-2.0
- fedora 44: lcmaps-without-gsi 1.6.7-1.fc44 Β· Apache-2.0
- fedora 44: lcmaps-without-gsi 1.6.7-1.fc44 Β· Apache-2.0
- ubuntu jammy: liblcmaps0 1.6.6-2.1build1 Β· Apache-2.0
- ubuntu noble: liblcmaps0t64 1.6.6-3.1build3 Β· Apache-2.0
- ubuntu questing: liblcmaps0t64 1.6.6-3.1build3
- ubuntu resolute: liblcmaps0t64 1.6.6-4 Β· Apache-2.0
- ubuntu stonking: liblcmaps0t64 1.6.7-1build1 Β· Apache-2.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms