pam_open_session(3) -- Linux man page
pam_open/close_session - PAM session management
int pam_open_session(pam_handle_t *pamh, int flags);
int pam_close_session(pam_handle_t *pamh, int flags);
PAM provides management-hooks for the initialization and termination of a session.
Use this function to signal that an authenticated user session has begun. It should be called only after the user is properly identified and (where necessary) has been granted their credentials with pam_authenticate(3) and pam_setcred(3) respectively.
Some types of functions associated with session initialization are logging for the purposes of system-audit and mounting directories (the user's home directory for example). These should not concern the application. It should be noted that the effective uid, geteuid(2), of the application should be of sufficient privilege to perform such tasks.
Use this function to signal that a user session has terminated. In general this function may not need to be located in the same application as the initialization function, pam_open_session.
Typically, this function will undo the actions of pam_open_session. That is, log audit information concerning the end of the user session or unmount the user's home directory. Apart from having sufficient privilege the details of the session termination should not concern the calling application. It is good programming practice, however, to cease acting on behalf of the user on returning from this call.
RETURN VALUEA successful return from the session management functions will be indicated with PAM_SUCCESS.
The specific error indicating a failure to open or close a session is PAM_SESSION_ERR. In general other return values may be returned. They should be treated as indicating failure.
ERRORSMay be translated to text with pam_strerror(3).
CONFORMING TOOSF-RFC 86.0, October 1995.
Also, see the three Linux-PAM Guides, for System administrators, module developers, and application developers.