# phpman > man > PAM_SM_SETCRED(3)

[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/setcred/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/authenticate/3/markdown), **pam**___**[setcred**(3)](https://www.chedong.com/phpMan.php/man/setcred/3/markdown), **pam**___**sm**___**[authenticate**(3)](https://www.chedong.com/phpMan.php/man/authenticate/3/markdown), **pam**___**[strerror**(3)](https://www.chedong.com/phpMan.php/man/strerror/3/markdown), [**PAM**(8)](https://www.chedong.com/phpMan.php/man/PAM/8/markdown)



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