# pam_sm_setcred - PAM service function to alter credentials - man(3) - [phpMan]

[_PAM_SM_SETCRED_(3)](https://www.chedong.com/phpMan.php/man/PAMSMSETCRED/3/markdown)                         Linux-PAM Manual                         [_PAM_SM_SETCRED_(3)](https://www.chedong.com/phpMan.php/man/PAMSMSETCRED/3/markdown)

## NAME
       pam_sm_setcred - PAM service function to alter credentials

## SYNOPSIS
### #include <security/pam_modules.h>


       **int pam_sm_setcred(pam_handle_t *_**pamh_**, int _**flags_**, int _**argc_**, const char **_**argv_**);**

## DESCRIPTION
       The **pam_sm_setcred **function is the service module's implementation of the [**pam_setcred**(3)](https://www.chedong.com/phpMan.php/man/pamsetcred/3/markdown)
       interface.

       This function performs the task of altering the credentials of the user with respect to the
       corresponding authorization scheme. Generally, an authentication module may have access to
       more information about a user than their authentication token. This function is used to make
       such information available to the application. It should only be called _after_ the user has
       been authenticated but before a session has been established.

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

       PAM_SILENT
           Do not emit any messages.

       PAM_ESTABLISH_CRED
           Initialize the credentials for the user.

       PAM_DELETE_CRED
           Delete the credentials associated with the authentication service.

       PAM_REINITIALIZE_CRED
           Reinitialize the user credentials.

       PAM_REFRESH_CRED
           Extend the lifetime of the user credentials.

       The way the **auth **stack is navigated in order to evaluate the **pam_setcred**() function call,
       independent of the **pam_sm_setcred**() return codes, is exactly the same way that it was
       navigated when evaluating the **pam_authenticate**() library call. Typically, if a stack entry
       was ignored in evaluating **pam_authenticate**(), it will be ignored when libpam evaluates the
       **pam_setcred**() function call. Otherwise, the return codes from each module specific
       **pam_sm_setcred**() call are treated as **required**.

## RETURN VALUES
       PAM_CRED_UNAVAIL
           This module cannot retrieve the user's credentials.

       PAM_CRED_EXPIRED
           The user's credentials have expired.

       PAM_CRED_ERR
           This module was unable to set the credentials of the user.

       PAM_SUCCESS
           The user credential was successfully set.

       PAM_USER_UNKNOWN
           The user is not known to this authentication module.

       These, non-_PAM_SUCCESS_, return values will typically lead to the credential stack _failing_.
       The first such error will dominate in the return value of **pam_setcred**().

## SEE ALSO
       [**pam**(3)](https://www.chedong.com/phpMan.php/man/pam/3/markdown), [**pam_authenticate**(3)](https://www.chedong.com/phpMan.php/man/pamauthenticate/3/markdown), [**pam_setcred**(3)](https://www.chedong.com/phpMan.php/man/pamsetcred/3/markdown), [**pam_sm_authenticate**(3)](https://www.chedong.com/phpMan.php/man/pamsmauthenticate/3/markdown), [**pam_strerror**(3)](https://www.chedong.com/phpMan.php/man/pamstrerror/3/markdown), [**PAM**(8)](https://www.chedong.com/phpMan.php/man/PAM/8/markdown)

Linux-PAM                                    05/07/2023                            [_PAM_SM_SETCRED_(3)](https://www.chedong.com/phpMan.php/man/PAMSMSETCRED/3/markdown)
