3.3. Account management

To be correctly initialized, PAM_SM_ACCOUNT must be #define 'd prior to including <security/pam_modules.h> . This will ensure that the prototypes for static modules are properly declared.

3.3.1. Service function for account management

#define PAM_SM_ACCOUNT
#include <security/pam_modules.h>
   PAM_EXTERN int pam_sm_acct_mgmt(
   pamh, 
   
   
   flags, 
   
   
   argc, 
   
   
   argv);
   
 pam_handle_t *pamh;
 int flags;
 int argc;
 const char **argv;
 

3.3.1.1. DESCRIPTION

The pam_sm_acct_mgmt function is the service module's implementation of the pam_acct_mgmt(3) interface.

This function performs the task of establishing whether the user is permitted to gain access at this time. It should be understood that the user has previously been validated by an authentication module. This function checks for other things. Such things might be: the time of day or the date, the terminal line, remote hostname, etc. This function may also determine things like the expiration on passwords, and respond that the user change it before continuing.

Valid flags, which may be logically OR'd with PAM_SILENT, are:

  • PAM_SILENT

    • Do not emit any messages.
  • PAM_DISALLOW_NULL_AUTHTOK

    • Return PAM_AUTH_ERR if the database of authentication tokens for this authentication mechanism has a NULL entry for the user.

3.3.1.2. RETURN VALUES

  • PAM_ACCT_EXPIRED

    • User account has expired.
  • PAM_AUTH_ERR

    • Authentication failure.
  • PAM_NEW_AUTHTOK_REQD

    • The user's authentication token has expired. Before calling this function again the application will arrange for a new one to be given. This will likely result in a call to pam_sm_chauthtok() .
  • PAM_PERM_DENIED

    • Permission denied.
  • PAM_SUCCESS

    • The authentication token was successfully updated.
  • PAM_USER_UNKNOWN

    • User unknown to password service.
Updated at: 5 months ago
3.2.2. Service function to alter credentialsTable of content3.4. Session management