---
name: "getspnam"
section: "3"
platform: "linux"
package: "shadow"
version: "4.20.0.arch1-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/shadow"
---

# getspnam(3)

encrypted password file routines

Part of [shadow(3)](/shadow/3.md).

## NAME

shadow, getspnam - encrypted password file routines

## SYNTAX

*#include \<shadow.h\>*

*struct spwd \*getspent();*

*struct spwd \*getspnam(char* *\*name);*

*void setspent();*

*void endspent();*

*struct spwd \*fgetspent(FILE* *\*fp);*

*struct spwd \*sgetspent(char* *\*cp);*

*int putspent(struct spwd* *\*p,* *FILE* *\*fp);*

*int lckpwdf();*

*int ulckpwdf();*

## DESCRIPTION

*shadow* manipulates the contents of the shadow password file, /etc/shadow. The structure in the *#include* file is:

```
struct spwd {
      char		*sp_namp; /* user login name */
      char		*sp_pwdp; /* encrypted password */
      long int		sp_lstchg; /* last password change */
      long int		sp_min; /* days until change allowed. */
      long int		sp_max; /* days before change required */
      long int		sp_warn; /* days warning for expiration */
      long int		sp_inact; /* days before account inactive */
      long int		sp_expire; /* date when account expires */
      unsigned long int	sp_flag; /* reserved for future use */
}
```

The meanings of each field are:

• sp\_namp - pointer to null-terminated user name

• sp\_pwdp - pointer to null-terminated password

• sp\_lstchg - days since Jan 1, 1970 password was last changed

• sp\_min - days before which password may not be changed

• sp\_max - days after which password must be changed

• sp\_warn - days before password is to expire that user is warned of pending password expiration

• sp\_inact - days after password expires that account is considered inactive and disabled

• sp\_expire - days since Jan 1, 1970 when account will be disabled

• sp\_flag - reserved for future use

## DESCRIPTION

*getspent*, *getspname*, *fgetspent*, and *sgetspent* each return a pointer to a *struct spwd*. *getspent* returns the next entry from the file, and *fgetspent* returns the next entry from the given stream, which is assumed to be a file of the proper format. *sgetspent* returns a pointer to a *struct spwd* using the provided string as input. *getspnam* searches from the current position in the file for an entry matching *name*.

*setspent* and *endspent* may be used to begin and end, respectively, access to the shadow password file.

The *lckpwdf* and *ulckpwdf* routines should be used to insure exclusive access to the /etc/shadow file. *lckpwdf* attempts to acquire a lock using *pw\_lock* for up to 15 seconds. It continues by attempting to acquire a second lock using *spw\_lock* for the remainder of the initial 15 seconds. Should either attempt fail after a total of 15 seconds, *lckpwdf* returns -1. When both locks are acquired 0 is returned.

## DIAGNOSTICS

Routines return NULL if no more entries are available or if an error occurs during processing. Routines which have *int* as the return value return 0 for success and -1 for failure.

## CAVEATS

These routines may only be used by the superuser as access to the shadow password file is restricted.

## FILES

/etc/shadow

Secure user account information.

## SEE ALSO

[**getpwent**(3)](/getpwent/3.md), [**shadow**(5)](/shadow/5.md).
