---
name: "pam_setcred"
section: "3"
platform: "linux"
package: "pam"
version: "1.7.3-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux", "freebsd", "macos"]
url: "https://new.carta.tech/pam_setcred"
---

# pam\_setcred(3)

establish / delete user credentials

## NAME

pam\_setcred - establish / delete user credentials

## SYNOPSIS

```
#include <security/pam_appl.h>
```

**int pam\_setcred(pam\_handle\_t \****pamh***, int** *flags***);**

## DESCRIPTION

The **pam\_setcred** function is used to establish, maintain and delete the credentials of a user. It should be called to set the credentials after a user has been authenticated and before a session is opened for the user (with [**pam\_open\_session**(3)](/pam_open_session/3.md)). The credentials should be deleted after the session has been closed (with [**pam\_close\_session**(3)](/pam_close_session/3.md)).

A credential is something that the user possesses. It is some property, such as a *Kerberos* ticket, or a supplementary group membership that make up the uniqueness of a given user. On a Linux system the user's *UID* and *GID*'s are credentials too. However, it has been decided that these properties (along with the default supplementary groups of which the user is a member) are credentials that should be set directly by the application and not by PAM. Such credentials should be established, by the application, prior to a call to this function. For example, **initgroups**(2) (or equivalent) should have been performed.

Valid *flags*, any one of which, may be logically OR'd with **PAM\_SILENT**, are:

PAM\_ESTABLISH\_CRED

Initialize the credentials for the user.

PAM\_DELETE\_CRED

Delete the user's credentials.

PAM\_REINITIALIZE\_CRED

Fully reinitialize the user's credentials.

PAM\_REFRESH\_CRED

Extend the lifetime of the existing credentials.

## RETURN VALUES

PAM\_BUF\_ERR

Memory buffer error.

PAM\_CRED\_ERR

Failed to set user credentials.

PAM\_CRED\_EXPIRED

User credentials are expired.

PAM\_CRED\_UNAVAIL

Failed to retrieve user credentials.

PAM\_SUCCESS

Data was successfully stored.

PAM\_SYSTEM\_ERR

A NULL pointer was submitted as PAM handle, the function was called by a module or another system error occurred.

PAM\_USER\_UNKNOWN

User is not known to an authentication module.

## SEE ALSO

[**pam\_authenticate**(3)](/pam_authenticate/3.md), [**pam\_open\_session**(3)](/pam_open_session/3.md), [**pam\_close\_session**(3)](/pam_close_session/3.md), [**pam\_strerror**(3)](/pam_strerror/3.md)
