PAM_GET_USER(3PAM)          PAM Library Functions         PAM_GET_USER(3PAM)
NAME
       pam_get_user - PAM routine to retrieve user name
SYNOPSIS
       cc [ 
flag ... ] 
file ...  
-lpam [ 
library ... ]
       #include <security/pam_appl.h>       
int pam_get_user(
pam_handle_t *pamh,           
const char **user, 
const char *prompt);
DESCRIPTION
       The 
pam_get_user() function is used by  
PAM service modules to
       retrieve the current user name from the  
PAM handle. If the user name
       has not been set with 
pam_start() or  
pam_set_item(), the 
PAM       conversation function will be used to prompt the user for the user
       name with the string "prompt". If 
prompt is  
NULL, then       
pam_get_item() is called and the value of 
PAM_USER_PROMPT is used for
       prompting. If the value of  
PAM_USER_PROMPT is  
NULL, the following
       default prompt is used:
         Please enter user name:
       After the user name is gathered by the conversation function,       
pam_set_item() is called to set the value of  
PAM_USER. By
       convention, applications that need to prompt for a user name should
       call 
pam_set_item() and set the value of 
PAM_USER_PROMPT before
       calling 
pam_authenticate(). The service module's       
pam_sm_authenticate() function will then call 
pam_get_user() to
       prompt for the user name.
       Note that certain  
PAM service modules, such as a smart card module,
       may override the value of  
PAM_USER_PROMPT and pass in their own
       prompt.  Applications that call 
pam_authenticate() multiple times
       should set the value of  
PAM_USER to  
NULL with  
pam_set_item()       before calling 
pam_authenticate(), if they want the user to be
       prompted for a new user name each time. The value of 
user retrieved
       by 
pam_get_user() should not be modified or freed.  The item will be
       released by 
pam_end().
RETURN VALUES
       Upon success, 
pam_get_user() returns  
PAM_SUCCESS; otherwise it
       returns an error code. Refer to 
pam(3PAM) for information on error
       related return values.
ATTRIBUTES
       See 
attributes(7) for description of the following attributes:
       +--------------------+-------------------------+
       |  ATTRIBUTE TYPE    |     ATTRIBUTE VALUE     |
       +--------------------+-------------------------+
       |Interface Stability |  Stable                 |
       +--------------------+-------------------------+
       |MT-Level            | MT-Safe with exceptions |
       +--------------------+-------------------------+
SEE ALSO
       pam(3PAM), 
pam_authenticate(3PAM), 
pam_end(3PAM), 
pam_get_item(3PAM),       
pam_set_item(3PAM), 
pam_sm(3PAM), 
pam_sm_authenticate(3PAM),       
pam_start(3PAM), 
attributes(7)NOTES
       The interfaces in  
libpam are MT-Safe only if each thread within the
       multithreaded application uses its own 
PAM handle.
                                July 6, 2024              PAM_GET_USER(3PAM)