Name

pam_systemd — Register user sessions in the systemd control group hierarchy

Synopsis

pam_systemd.so

Description

pam_systemd registers user sessions in the systemd control group hierarchy.

On login, this module ensures the following:

  1. If it does not exist yet, the user runtime directory /var/run/user/$USER is created and its ownership changed to the user that is logging in.

  2. If create-session=1 is set, the $XDG_SESSION_ID environment variable is initialized. If auditing is available and pam_loginuid.so run before this module (which is highly recommended), the variable is initialized from the auditing session id (/proc/self/sessionid). Otherwise an independent session counter is used.

  3. If create-session=1 is set, a new control group /user/$USER/$XDG_SESSION_ID is created and the login process moved into it.

  4. If create-session=0 is set, a new control group /user/$USER/user is created and the login process moved into it.

On logout, this module ensures the following:

  1. If $XDG_SESSION_ID is set and kill-session=1 specified, all remaining processes in the /user/$USER/$XDG_SESSION_ID control group are killed and the control group is removed.

  2. If $XDG_SESSION_ID is set and kill-session=0 specified, all remaining processes in the /user/$USER/$XDG_SESSION_ID control group are migrated to /user/$USER/user and the original control group is removed.

  3. If kill-user=1 is specified, and no other user session control group remains, except /user/$USER/user, all remaining processes in the /user/$USER hierarchy are killed and the control group is removed.

  4. If kill-user=0 is specified, and no process remains in the /user/$USER hierarchy the control group is removed.

  5. If the /user/$USER control group was removed the $XDG_RUNTIME_DIR directory and all its contents are removed, too.

If the system was not booted up with systemd as init system, this module does nothing and immediately returns PAM_SUCCESS.