Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
GETPWENT(3)		    Library Functions Manual		   GETPWENT(3)

NAME
       getpwent, setpwent, endpwent -- sequential password database access

SYNOPSIS
       #include	<sys/types.h>
       #include	<pwd.h>

       struct passwd *
       getpwent(void);

       void
       setpwent(void);

       void
       endpwent(void);

DESCRIPTION
       These  functions	 operate  on  the  password database file which	is de-
       scribed in passwd(5).  Each entry in the	database  is  defined  by  the
       structure struct	passwd found in	the include file <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 getpwent() function sequentially reads the password database	and is
       intended	for programs that wish to process the complete list of users.

       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.  Furthermore, programs  that	 run  child  processes
       should  be careful to call endpwent() to	close these descriptors	before
       calling execve(2) or system(3).

       setpwent() causes getpwent() to "rewind"	to the beginning of the	 data-
       base.

       The   endpwent()	  function  closes  any	 file  descriptors  opened  by
       setpwent() or getpwent().

       These routines have been	written	to "shadow" the	 password  file,  that
       is,  allow  only	certain	programs to have access	to the encrypted pass-
       word.  If the process which calls them has an effective UID of 0	or has
       the "_shadow" group in its group	vector,	the encrypted password will be
       returned, otherwise, the	password field of the returned structure  will
       point to	the string `*'.

YP SUPPORT
       If  YP  is active, getpwent() also uses the master.passwd.byname	YP map
       (if available) or the passwd.byname YP map.  This is in addition	to the
       passwd file, and	respects the order of both normal and  YP  entries  in
       the passwd file.

RETURN VALUES
       The  getpwent()	function returns a valid pointer to a passwd structure
       on success or a null pointer if end-of-file is reached or an error  oc-
       curs.

       The endpwent() and setpwent() functions have no return value.

FILES
       /etc/pwd.db	   insecure password database file
       /etc/spwd.db	   secure password database file
       /etc/master.passwd  current password file
       /etc/passwd	   a Version 7 format password file

SEE ALSO
       getlogin(2),   getgrent(3),  getgrouplist(3),  getpwnam(3),  pw_dup(3),
       passwd(5), Makefile.yp(8), pwd_mkdb(8), vipw(8),	yp(8)

HISTORY
       The  getpwent(),	 setpwent(),  and  endpwent()  functions  appeared  in
       Version 7 AT&T UNIX.

       The  historic function setpwfile(3), which allowed the specification of
       alternate password databases, has been  deprecated  and	is  no	longer
       available.

BUGS
       The getpwent() function stores its results in an	internal static	buffer
       and  returns a pointer to that buffer.  Subsequent calls	to getpwent(),
       getpwnam(), or getpwuid() will overwrite	the same buffer.

       The routines getpwent(),	endpwent(), and	setpwent() are fairly  useless
       in a networked environment and should be	avoided, if possible.

OpenBSD	5.1			 June 1, 2009			   GETPWENT(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=endpwent&sektion=3&manpath=OpenBSD+5.1>

home | help