GETPWENT
Section: C Library Functions (3)
Index
Return to Main Contents
BSD mandoc
NAME
getpwent
getpwnam
getpwuid
setpassent
setpwent
endpwent
- password database operations
SYNOPSIS
Fd #include <sys/types.h>
Fd #include <pwd.h>
Ft struct passwd *
Fn getpwent void
Ft struct passwd *
Fn getpwnam const char *login
Ft struct passwd *
Fn getpwuid uid_t uid
Ft int
Fn setpassent int stayopen
Ft void
Fn setpwent void
Ft void
Fn endpwent void
DESCRIPTION
These functions
operate on the password database file
which is described
in
passwd(5).
Each entry in the database is defined by the structure
passwd
found in the include
file
Aq Pa pwd.h :
struct passwd {
char *pw_name; /* user name */
char *pw_passwd; /* encrypted password */
uid_t pw_uid; /* user uid */
gid_t pw_gid; /* user gid */
time_t pw_change; /* password change time */
char *pw_class; /* user access class */
char *pw_gecos; /* Honeywell login info */
char *pw_dir; /* home directory */
char *pw_shell; /* default shell */
time_t pw_expire; /* account expiration */
};
The functions
Fn getpwnam
and
Fn getpwuid
search the password database for the given login name or user uid,
respectively, always returning the first one encountered.
The
Fn getpwent
function
sequentially reads the password database and is intended for programs
that wish to process the complete list of users.
The
Fn setpassent
function
accomplishes two purposes.
First, it causes
Fn getpwent
to ``rewind'' to the beginning of the database.
Additionally, if
Fa stayopen
is non-zero, file descriptors are left open, significantly speeding
up subsequent accesses for all of the routines.
(This latter functionality is unnecessary for
Fn getpwent
as it doesn't close its file descriptors by default.)
It is dangerous for long-running programs to keep the file descriptors
open as the database will become out of date if it is updated while the
program is running.
The
Fn setpwent
function
is equivalent to
Fn setpassent
with an argument of zero.
The
Fn endpwent
function
closes any open files.
These routines have been written to ``shadow'' the password file, e.g.
allow only certain programs to have access to the encrypted password.
If the process which calls them has an effective uid of 0, the encrypted
password will be returned, otherwise, the password field of the returned
structure will point to the string
`*'
RETURN VALUES
The functions
Fn getpwent ,
Fn getpwnam ,
and
Fn getpwuid ,
return a valid pointer to a passwd structure on success
and a null pointer if end-of-file is reached or an error occurs.
The
Fn setpassent
function returns 0 on failure and 1 on success.
The
Fn endpwent
and
Fn setpwent
functions
have no return value.
FILES
- /etc/pwd.db
-
The insecure password database file
- /etc/spwd.db
-
The secure password database file
- /etc/master.passwd
-
The current password file
- /etc/passwd
-
A Version 7 format password file
SEE ALSO
getlogin(3),
getgrent(3),
passwd(5),
pwd_mkdb8,
vipw(8)
HISTORY
The
getpwent
getpwnam
getpwuid
setpwent,
and
endpwent
functions appeared in
AT&T System
v7 .
The
setpassent
function appeared in
BSD 4.3 Reno
BUGS
The functions
Fn getpwent ,
Fn getpwnam ,
and
Fn getpwuid ,
leave their results in an internal static object and return
a pointer to that object. Subsequent calls to
the same function
will modify the same object.
The routines
Fn getpwent ,
Fn endpwent ,
Fn setpassent ,
and
Fn setpwent
are fairly useless in a networked environment and should be
avoided, if possible.
COMPATIBILITY
The historic function
setpwfile(3),
which allowed the specification of alternate password databases,
has been deprecated and is no longer available.
Index
- NAME
-
- SYNOPSIS
-
- DESCRIPTION
-
- RETURN VALUES
-
- FILES
-
- SEE ALSO
-
- HISTORY
-
- BUGS
-
- COMPATIBILITY
-
This document was created by
man2html,
using the manual pages.
Time: 19:42:00 GMT, December 25, 2022