Provided by: lcas-lcmaps-gt4-interface_0.3.1-1_amd64 bug

NAME

       lcas_lcmaps_gt_interface - A Globus GSI-AuthZ plug-in to run LCAS and LCMAPS

SYNOPSIS

       lcas_lcmaps_gt_interface.so

       lcas_lcmaps_gt4_interface.so

DESCRIPTION

       This  is  a  plug-in to be loaded from a GSI-AuthZ capable Globus service. The feature was
       introduced in Globus GT4 and is available for GT5 and GT6. The purpose of this call-out is
       to  authorize a user by optionally running the LCAS framework and subsequently running the
       LCMAPS framework to map the user credentials to a Unix account. Both LCAS and  LCMAPS  are
       plug-in frameworks, where the plug-ins to do the real work.

       Some  of  these plug-ins are capable of imposing a certain policy on the user credentials,
       others are capable of off-loading the decision  to  a  centralized  service  to  make  the
       decision or even provide an account mapping in the process.

       This  plug-in  is  dynamically  loaded  during  each  interaction that requires an account
       mapping in the GSI-AuthZ interface of a Globus service. It has no configuration  file  for
       itself,  it  is configured via environment variables and the LCAS and LCMAPS configuration
       files. It can be enabled for use in the GSI-AuthZ interface using the gsi-authz.conf file,
       by  configuring  it  to  call  the  function  lcmaps_callout(),  which  can  be done using
       gt4-interface-install(8).

ENVIRONMENT VARIABLES

       LLGT_LOG_FILE
              When this variable is set and it can be opened as file, log output will go  to  the
              given  file instead of to syslog. When either $LCAS_LOG_FILE or $LCMAPS_LOG_FILE is
              unset, it will also be set to this same file.

       LLGT_LOG_FACILITY
              Change  the  default  logging  facility  with  the  $LLGT_LOG_FACILITY  environment
              variable.  Use  the  name of (standard syslog) facility names. Example: LOG_DAEMON,
              LOG_LOCAL1, etc.

       LLGT_LOG_IDENT
              The $LLGT_LOG_IDENT can (optionally) be set as the syslog ident value. This will be
              the  identifying  string  in  syslog for the current process. Not using this option
              will let syslog (or one of the GT services) to set these options.  By  default  the
              syslog ident will be set to the executable name.

       LLGT_RUN_LCAS
              Set  the  environment  variable  $LLGT_RUN_LCAS to "no", "disabled" or "disable" to
              avoid LCAS to run prior to the LCMAPS.

              There is a matching ./configure option "--enable-lcas" which can be used to  change
              the  default  behaviour to run LCAS or not. The $LLGT_RUN_LCAS environment variable
              can still influence the LCAS run.

       LLGT_LIFT_PRIVILEGED_PROTECTION
              Normally the callout, after LCMAPS has  finished,  checks  whether  it  is  (still)
              running  with  root  privileges  (uid,  euid, gid or egid) and fails if that is the
              case. This is to prevent erroneous configurations to silently  result  in  a  root-
              account mapping in services that do not have their own checks for this.

              When  the  environment variable $LLGT_LIFT_PRIVILEGED_PROTECTION is set, this check
              is disabled. This is NEEDED for services that:

              1.) don't user switch, and run as root.

              2.) services that expect only a username to be returned and perform the user switch
              themselves, e.g. the Globus GSI-OpenSSHd.

       LLGT_CACHE_CALLOUT
              Set  the  environment variable $LLGT_CACHE_CALLOUT to "no", "disabled" or "disable"
              to disable reusing the result of the `localname' callout for the `userok'  callout.
              This results in calling the LCAS/LCMAPS authorization twice for e.g. gsisshd.

       LLGT_DLCLOSE_LCMAPS
              Set  the environment variable $LLGT_DLCLOSE_LCMAPS to "no", "disabled" or "disable"
              to prevent calling dlclose() on the LCMAPS library.  This  might  be  needed  as  a
              workaround on RH5-based systems in an installation for gsisshd, when the use of PAM
              is enabled ("UsePAM Yes" in the /etc/gsissh/sshd_config).  The underlying bug is  a
              combination  between  the  OpenSSL,  VOMS  and  PAM  libraries, which can trigger a
              segfault when VOMS is initialized twice.

       LLGT_DLCLOSE_LCAS
              Set the environment variable $LLGT_DLCLOSE_LCAS to "no", "disabled" or "disable" to
              prevent calling dlclose() on the LCAS library. This might be needed as a workaround
              on RH5-based systems. The underlying bug is a combination between the OpenSSL, VOMS
              and  Globus libraries, which can trigger a segfault when VOMS is initialized twice,
              which can happen when LCAS is using a VOMS based plugin.  Normally  should  not  be
              needed as LCAS is now dlclosed and terminated after LCMAPS.

       LLGT_NO_CHANGE_USER (deprecated)
              Deprecated  $LLGT_NO_CHANGE_USER  in  favour  of  $LLGT_LIFT_PRIVILEGED_PROTECTION.
              (Deprecation does not mean non-functional anymore)

       LLGT4_NO_CHANGE_USER (deprecated)
              Deprecated $LLGT4_NO_CHANGE_USER  in  favour  of  $LLGT_LIFT_PRIVILEGED_PROTECTION.
              (Depreciation does not mean non-functional anymore)

       LLGT_VOMS_DISABLE_CREDENTIAL_CHECK
              The VOMS credentials are verified by the LCMAPS framework before further processing
              is done in the plug-ins. The LCMAPS framework has an API to enable or  disable  the
              verification  of the VOMS credentials and this option will disable the verification
              of the VOMS credentials. A vanilla LCMAPS build will verify the VOMS credentials by
              default.

       LLGT_VOMS_ENABLE_CREDENTIAL_CHECK
              Similar  to  the  $LLGT_VOMS_DISABLE_CREDENTIAL_CHECK  environment  variable,  this
              setting will enable the verification of the VOMS credentials, overriding the LCMAPS
              default  setting  to  have  the  verification of VOMS credentials to be disabled. A
              vanilla LCMAPS build will verify the VOMS credentials by default, the OSG build has
              is disabled by default.

       LLGT_LCAS_LIBDIR
              Support  for  an alternative LCAS_LIBDIR as a run-time setting by exporting such as
              $LLGT_LCAS_LIBDIR="/usr/lib/x86_64-linux-gnu/liblcas.so"

       LLGT_LCAS_MODULEDIR_SFX
              When  set,  used  as  suffix  instead  of  the  default  /lcas  when  setting   the
              $LCAS_MODULES_DIR  variable based on the $LLGT_LCAS_LIBDIR variable. Default /lcas.
              NOTE: current versions of LCAS do not yet use the $LCAS_MODULES_DIR variable.

       LLGT_LCMAPS_LIBDIR
              Support for an alternative LCMAPS_LIBDIR as a run-time setting by exporting such as
              $LLGT_LCMAPS_LIBDIR="/usr/lib/x86_64-linux-gnu/liblcmaps.so".  Must  be an absolute
              path.  Setting this variable will also set the LCMAPS variable  $LCMAPS_MODULES_DIR
              to  the  given  libdir  followed  by  either  the  default  /lcmaps or the value of
              $LLGT_LCMAPS_MODULEDIR_SFX.

       LLGT_LCMAPS_MODULEDIR_SFX
              When set,  used  as  suffix  instead  of  the  default  /lcmaps  when  setting  the
              $LCMAPS_MODULES_DIR  variable  based  on  the $LLGT_LCMAPS_LIBDIR variable. Default
              /lcmaps.

       LLGT_ENABLE_DEBUG
              If the $LLGT_ENABLE_DEBUG environment variable is set, then the  debugging  message
              logged  at level LOG_DEBUG are passed to the log. The scope of this setting is only
              within the LCAS-LCMAPS-GT-interface

INTERNAL ENVIRONMENT VARIABLES

       GATEKEEPER_JM_ID
              An environment variable that is internally set to uniquely identify this gatekeeper
              and the job manager.

       JOB_REPOSITORY_ID
              Similar  to  the  $GATEKEEPER_JM_ID  value,  but  its purpose is for the LCMAPS job
              repository plug-in.

LCAS ENVIRONMENT VARIABLES

       The following list of LCAS environment variables are handled specially by the interface.

       LCAS_MODULES_DIR
              Default directory for LCAS to look for in plug-ins (not  yet  supported  by  LCAS).
              Will  be  set based on the values of $LLGT_LCAS_LIBDIR and $LLGT_LCAS_MODULEDIR_SFX
              or their defaults.

       LCAS_LOG_FILE
              When set, LCAS will log there instead of syslog. When unset, it will get the  value
              of    $LLGT_LOG_FILE    when    that    one    is    set.    When   compiled   with
              LCAS_LCMAPS_FORCE_LOG_TO_FILE     defined,     it     will     get      set      to
              /var/log/gt_lcas_lcmaps.log.

       LCAS_DEBUG_LEVEL
              LCAS log level. Default: 3.

       LCAS_DB_FILE
              Location   of   the   LCAS   configuration   file.   Default   for  the  interface:
              /etc/lcas/lcas.db

LCMAPS ENVIRONMENT VARIABLES

       The following list of LCMAPS environment variables are handled specially by the interface.

       LCMAPS_MODULES_DIR
              Default directory for LCMAPS to look for in plug-ins. Will  be  set  based  on  the
              values of $LLGT_LCMAPS_LIBDIR and $LLGT_LCMAPS_MODULEDIR_SFX or their defaults.

       LCMAPS_LOG_FILE
              When  set,  LCMAPS  will  log  there instead of syslog. When unset, it will get the
              value  of   $LLGT_LOG_FILE   when   that   one   is   set.   When   compiled   with
              LCAS_LCMAPS_FORCE_LOG_TO_FILE      defined,      it     will     get     set     to
              /var/log/gt_lcas_lcmaps.log.

       LCMAPS_DEBUG_LEVEL
              For LCMAPS 1.5.0 (and newer) the value "5" corresponds  to  syslog  LOG_DEBUG,  "4"
              corresponds  to LOG_INFO, "3" to LOG_NOTICE and so on. The LCMAPS default is to log
              up to LOG_INFO.

       LCMAPS_DB_FILE
              Location  of  the  LCMAPS  configuration   file.   Default   for   the   interface:
              /etc/lcmaps/lcmaps.db

RETURN VALUES

       True   The user is authorized and a local Unix account was procured.

       False  No mapping was possible.

NOTES

       From  version 0.3.1 onwards, the interface supports the 'sharing' service: it then expects
       an additional argument, (a PEM string) containing the  credential  on  which  the  mapping
       should be based.

       From  version  0.3.0  onwards,  the  interface  tries to forward the requested username to
       LCMAPS (for version 1.6.0 and up). The mapping plugins can use this  to  support  multiple
       username  entries  in  the  grid-mapfile, or enforcing pool account mappings to a specific
       pool account.

BUGS

       Please report any errors to the Nikhef Grid Middleware  Security  Team  <grid-mw-security-
       support@nikhef.nl>.

SEE ALSO

       gt4-interface-install(8), lcas.db(5), lcas(3), lcmaps.db(5), lcmaps(3).

AUTHORS

       LCMAPS and the LCMAPS plug-ins were written by the Grid Middleware Security Team <grid-mw-
       security@nikhef.nl>.