1 # SOME DESCRIPTIVE TITLE
2 # Copyright (C) YEAR Free Software Foundation, Inc.
3 # This file is distributed under the same license as the PACKAGE package.
4 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
9 "Project-Id-Version: PACKAGE VERSION\n"
10 "POT-Creation-Date: 2015-01-01 22:50+0900\n"
11 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13 "Language-Team: LANGUAGE <LL@li.org>\n"
16 "Content-Type: text/plain; charset=UTF-8\n"
17 "Content-Transfer-Encoding: 8bit\n"
20 #: build/C/man3/fgetgrent.3:30
26 #: build/C/man3/fgetgrent.3:30 build/C/man3/getgrent_r.3:24 build/C/man3/getgrnam.3:33 build/C/man3/getgrouplist.3:29
32 #: build/C/man3/fgetgrent.3:30 build/C/man3/fgetpwent.3:33 build/C/man3/getgrent_r.3:24 build/C/man3/getgrouplist.3:29 build/C/man3/getpw.3:32 build/C/man3/getpwent.3:33 build/C/man3/getpwent_r.3:24 build/C/man3/getpwnam.3:37 build/C/man3/getspnam.3:8 build/C/man3/initgroups.3:32 build/C/man3/putgrent.3:7 build/C/man3/putpwent.3:30 build/C/man3/setaliasent.3:9
38 #: build/C/man3/fgetgrent.3:30 build/C/man3/fgetpwent.3:33 build/C/man5/ftpusers.5:19 build/C/man3/getgrent.3:30 build/C/man3/getgrent_r.3:24 build/C/man3/getgrnam.3:33 build/C/man3/getgrouplist.3:29 build/C/man3/getpw.3:32 build/C/man3/getpwent.3:33 build/C/man3/getpwent_r.3:24 build/C/man3/getpwnam.3:37 build/C/man3/getspnam.3:8 build/C/man5/group.5:26 build/C/man3/initgroups.3:32 build/C/man5/passwd.5:30 build/C/man3/putgrent.3:7 build/C/man3/putpwent.3:30 build/C/man3/setaliasent.3:9
40 msgid "Linux Programmer's Manual"
44 #: build/C/man3/fgetgrent.3:31 build/C/man3/fgetpwent.3:34 build/C/man5/ftpusers.5:20 build/C/man3/getgrent.3:31 build/C/man3/getgrent_r.3:25 build/C/man3/getgrnam.3:34 build/C/man3/getgrouplist.3:30 build/C/man3/getpw.3:33 build/C/man3/getpwent.3:34 build/C/man3/getpwent_r.3:25 build/C/man3/getpwnam.3:38 build/C/man3/getspnam.3:9 build/C/man5/group.5:27 build/C/man3/initgroups.3:33 build/C/man5/passwd.5:31 build/C/man3/putgrent.3:8 build/C/man3/putpwent.3:31 build/C/man3/setaliasent.3:10
50 #: build/C/man3/fgetgrent.3:33
51 msgid "fgetgrent - get group file entry"
55 #: build/C/man3/fgetgrent.3:33 build/C/man3/fgetpwent.3:36 build/C/man3/getgrent.3:33 build/C/man3/getgrent_r.3:27 build/C/man3/getgrnam.3:36 build/C/man3/getgrouplist.3:32 build/C/man3/getpw.3:35 build/C/man3/getpwent.3:36 build/C/man3/getpwent_r.3:27 build/C/man3/getpwnam.3:40 build/C/man3/getspnam.3:13 build/C/man3/initgroups.3:35 build/C/man3/putgrent.3:10 build/C/man3/putpwent.3:33 build/C/man3/setaliasent.3:13
61 #: build/C/man3/fgetgrent.3:38
64 "B<#include E<lt>stdio.hE<gt>>\n"
65 "B<#include E<lt>sys/types.hE<gt>>\n"
66 "B<#include E<lt>grp.hE<gt>>\n"
70 #: build/C/man3/fgetgrent.3:40
72 msgid "B<struct group *fgetgrent(FILE *>I<stream>B<);>\n"
76 #: build/C/man3/fgetgrent.3:45 build/C/man3/fgetpwent.3:48 build/C/man3/getgrent.3:48 build/C/man3/getgrent_r.3:43 build/C/man3/getgrnam.3:57 build/C/man3/getgrouplist.3:42 build/C/man3/getpwent.3:51 build/C/man3/getpwent_r.3:43 build/C/man3/getpwnam.3:61 build/C/man3/getspnam.3:61 build/C/man3/initgroups.3:46 build/C/man3/putpwent.3:45
77 msgid "Feature Test Macro Requirements for glibc (see B<feature_test_macros>(7)):"
81 #: build/C/man3/fgetgrent.3:49
82 msgid "B<fgetgrent>(): _SVID_SOURCE"
86 #: build/C/man3/fgetgrent.3:49 build/C/man3/fgetpwent.3:52 build/C/man5/ftpusers.5:22 build/C/man3/getgrent.3:68 build/C/man3/getgrent_r.3:51 build/C/man3/getgrnam.3:67 build/C/man3/getgrouplist.3:46 build/C/man3/getpw.3:43 build/C/man3/getpwent.3:62 build/C/man3/getpwent_r.3:50 build/C/man3/getpwnam.3:71 build/C/man3/getspnam.3:72 build/C/man5/group.5:29 build/C/man3/initgroups.3:50 build/C/man5/passwd.5:33 build/C/man3/putgrent.3:16 build/C/man3/putpwent.3:49 build/C/man3/setaliasent.3:31
92 #: build/C/man3/fgetgrent.3:63
94 "The B<fgetgrent>() function returns a pointer to a structure containing the "
95 "group information from the file referred to by I<stream>. The first time it "
96 "is called it returns the first entry; thereafter, it returns successive "
97 "entries. The file referred to by I<stream> must have the same format as "
98 "I</etc/group> (see B<group>(5))."
102 #: build/C/man3/fgetgrent.3:65 build/C/man3/getgrent.3:92 build/C/man3/getgrent_r.3:68 build/C/man3/getgrnam.3:86
103 msgid "The I<group> structure is defined in I<E<lt>grp.hE<gt>> as follows:"
107 #: build/C/man3/fgetgrent.3:75 build/C/man3/getgrent.3:102 build/C/man3/getgrent_r.3:78 build/C/man3/getgrnam.3:96
111 " char *gr_name; /* group name */\n"
112 " char *gr_passwd; /* group password */\n"
113 " gid_t gr_gid; /* group ID */\n"
114 " char **gr_mem; /* NULL-terminated array of pointers\n"
115 " to names of group members */\n"
120 #: build/C/man3/fgetgrent.3:77 build/C/man3/fgetpwent.3:81 build/C/man3/getgrent.3:107 build/C/man3/getgrent_r.3:102 build/C/man3/getgrnam.3:137 build/C/man3/getgrouplist.3:78 build/C/man3/getpw.3:72 build/C/man3/getpwent.3:103 build/C/man3/getpwent_r.3:103 build/C/man3/getpwnam.3:143 build/C/man3/getspnam.3:216 build/C/man3/initgroups.3:68 build/C/man3/putgrent.3:42 build/C/man3/putpwent.3:70 build/C/man3/setaliasent.3:89
126 #: build/C/man3/fgetgrent.3:87
128 "The B<fgetgrent>() function returns a pointer to a I<group> structure, or "
129 "NULL if there are no more entries or an error occurs. In the event of an "
130 "error, I<errno> is set to indicate the cause."
134 #: build/C/man3/fgetgrent.3:87 build/C/man3/fgetpwent.3:91 build/C/man3/getgrent.3:130 build/C/man3/getgrent_r.3:109 build/C/man3/getgrnam.3:175 build/C/man3/getpw.3:78 build/C/man3/getpwent.3:125 build/C/man3/getpwent_r.3:110 build/C/man3/getpwnam.3:181 build/C/man3/getspnam.3:229 build/C/man3/initgroups.3:75 build/C/man3/putpwent.3:78
140 #: build/C/man3/fgetgrent.3:88 build/C/man3/fgetpwent.3:92 build/C/man3/getgrent.3:153 build/C/man3/getgrnam.3:197 build/C/man3/getpw.3:87 build/C/man3/getpwent.3:140 build/C/man3/getpwnam.3:203 build/C/man3/initgroups.3:76
146 #. to allocate the group structure, or to allocate buffers
148 #: build/C/man3/fgetgrent.3:93 build/C/man3/getgrent.3:159 build/C/man3/getgrnam.3:204
149 msgid "Insufficient memory to allocate I<group> structure."
153 #: build/C/man3/fgetgrent.3:93 build/C/man3/fgetpwent.3:101 build/C/man3/getgrent.3:177 build/C/man3/getgrent_r.3:117 build/C/man3/getgrnam.3:224 build/C/man3/getgrouplist.3:98 build/C/man3/getpw.3:96 build/C/man3/getpwent.3:165 build/C/man3/getpwent_r.3:118 build/C/man3/getpwnam.3:230 build/C/man3/getspnam.3:249 build/C/man3/initgroups.3:88 build/C/man3/putgrent.3:44 build/C/man3/putpwent.3:82 build/C/man3/setaliasent.3:101
155 msgid "CONFORMING TO"
159 #: build/C/man3/fgetgrent.3:95 build/C/man3/fgetpwent.3:103 build/C/man3/putpwent.3:84
164 #: build/C/man3/fgetgrent.3:95 build/C/man3/fgetpwent.3:103 build/C/man5/ftpusers.5:49 build/C/man3/getgrent.3:179 build/C/man3/getgrent_r.3:184 build/C/man3/getgrnam.3:247 build/C/man3/getgrouplist.3:189 build/C/man3/getpw.3:105 build/C/man3/getpwent.3:170 build/C/man3/getpwent_r.3:180 build/C/man3/getpwnam.3:326 build/C/man3/getspnam.3:253 build/C/man5/group.5:61 build/C/man3/initgroups.3:90 build/C/man5/passwd.5:162 build/C/man3/putgrent.3:46 build/C/man3/putpwent.3:84 build/C/man3/setaliasent.3:145
170 #: build/C/man3/fgetgrent.3:105
172 "B<endgrent>(3), B<fgetgrent_r>(3), B<fopen>(3), B<getgrent>(3), "
173 "B<getgrgid>(3), B<getgrnam>(3), B<putgrent>(3), B<setgrent>(3), B<group>(5)"
177 #: build/C/man3/fgetgrent.3:105 build/C/man3/fgetpwent.3:114 build/C/man5/ftpusers.5:53 build/C/man3/getgrent.3:187 build/C/man3/getgrent_r.3:191 build/C/man3/getgrnam.3:254 build/C/man3/getgrouplist.3:196 build/C/man3/getpw.3:114 build/C/man3/getpwent.3:178 build/C/man3/getpwent_r.3:188 build/C/man3/getpwnam.3:336 build/C/man3/getspnam.3:258 build/C/man5/group.5:67 build/C/man3/initgroups.3:94 build/C/man5/passwd.5:171 build/C/man3/putgrent.3:50 build/C/man3/putpwent.3:92 build/C/man3/setaliasent.3:154
183 #: build/C/man3/fgetgrent.3:113 build/C/man3/fgetpwent.3:122 build/C/man5/ftpusers.5:61 build/C/man3/getgrent.3:195 build/C/man3/getgrent_r.3:199 build/C/man3/getgrnam.3:262 build/C/man3/getgrouplist.3:204 build/C/man3/getpw.3:122 build/C/man3/getpwent.3:186 build/C/man3/getpwent_r.3:196 build/C/man3/getpwnam.3:344 build/C/man3/getspnam.3:266 build/C/man5/group.5:75 build/C/man3/initgroups.3:102 build/C/man5/passwd.5:179 build/C/man3/putgrent.3:58 build/C/man3/putpwent.3:100 build/C/man3/setaliasent.3:162
185 "This page is part of release 3.75 of the Linux I<man-pages> project. A "
186 "description of the project, information about reporting bugs, and the latest "
187 "version of this page, can be found at "
188 "\\%http://www.kernel.org/doc/man-pages/."
192 #: build/C/man3/fgetpwent.3:33
198 #: build/C/man3/fgetpwent.3:33 build/C/man3/putpwent.3:30
204 #: build/C/man3/fgetpwent.3:36
205 msgid "fgetpwent - get password file entry"
209 #: build/C/man3/fgetpwent.3:41 build/C/man3/putpwent.3:38
212 "B<#include E<lt>stdio.hE<gt>>\n"
213 "B<#include E<lt>sys/types.hE<gt>>\n"
214 "B<#include E<lt>pwd.hE<gt>>\n"
218 #: build/C/man3/fgetpwent.3:43
220 msgid "B<struct passwd *fgetpwent(FILE *>I<stream>B<);>\n"
224 #: build/C/man3/fgetpwent.3:52
225 msgid "B<fgetpwent>(): _SVID_SOURCE"
229 #: build/C/man3/fgetpwent.3:65
231 "The B<fgetpwent>() function returns a pointer to a structure containing the "
232 "broken out fields of a line in the file I<stream>. The first time it is "
233 "called it returns the first entry; thereafter, it returns successive "
234 "entries. The file referred to by I<stream> must have the same format as "
235 "I</etc/passwd> (see B<passwd>(5))."
239 #: build/C/man3/fgetpwent.3:67 build/C/man3/getpw.3:55 build/C/man3/getpwent.3:86 build/C/man3/getpwent_r.3:67 build/C/man3/getpwnam.3:90 build/C/man3/putpwent.3:56
240 msgid "The I<passwd> structure is defined in I<E<lt>pwd.hE<gt>> as follows:"
244 #: build/C/man3/fgetpwent.3:79
248 " char *pw_name; /* username */\n"
249 " char *pw_passwd; /* user password */\n"
250 " uid_t pw_uid; /* user ID */\n"
251 " gid_t pw_gid; /* group ID */\n"
252 " char *pw_gecos; /* real name */\n"
253 " char *pw_dir; /* home directory */\n"
254 " char *pw_shell; /* shell program */\n"
259 #: build/C/man3/fgetpwent.3:91
261 "The B<fgetpwent>() function returns a pointer to a I<passwd> structure, or "
262 "NULL if there are no more entries or an error occurs. In the event of an "
263 "error, I<errno> is set to indicate the cause."
267 #. This structure is static, allocated 0 or 1 times. No memory leak. (libc45)
269 #: build/C/man3/fgetpwent.3:97 build/C/man3/getpw.3:92 build/C/man3/getpwent.3:147 build/C/man3/getpwnam.3:210
270 msgid "Insufficient memory to allocate I<passwd> structure."
274 #: build/C/man3/fgetpwent.3:97 build/C/man5/ftpusers.5:47 build/C/man3/getgrent.3:162 build/C/man3/getgrnam.3:207 build/C/man3/getpw.3:92 build/C/man3/getpwent.3:150 build/C/man3/getpwnam.3:213 build/C/man3/getspnam.3:236 build/C/man5/group.5:53 build/C/man3/initgroups.3:84 build/C/man5/passwd.5:142 build/C/man3/setaliasent.3:95
280 #: build/C/man3/fgetpwent.3:98 build/C/man3/getpw.3:93 build/C/man3/getpwent.3:151 build/C/man3/getpwnam.3:214 build/C/man5/passwd.5:144
282 msgid "I</etc/passwd>"
286 #: build/C/man3/fgetpwent.3:101 build/C/man3/getpw.3:96
287 msgid "password database file"
291 #: build/C/man3/fgetpwent.3:114
293 "B<endpwent>(3), B<fgetpwent_r>(3), B<fopen>(3), B<getpw>(3), B<getpwent>(3), "
294 "B<getpwnam>(3), B<getpwuid>(3), B<putpwent>(3), B<setpwent>(3), B<passwd>(5)"
298 #: build/C/man5/ftpusers.5:19
304 #: build/C/man5/ftpusers.5:19
310 #: build/C/man5/ftpusers.5:19 build/C/man5/group.5:26 build/C/man5/passwd.5:30
316 #: build/C/man5/ftpusers.5:22
317 msgid "ftpusers - list of users that may not log in via the FTP daemon"
321 #: build/C/man5/ftpusers.5:41
323 "The text file B<ftpusers> contains a list of users that may not log in using "
324 "the File Transfer Protocol (FTP) server daemon. This file is used not "
325 "merely for system administration purposes but for improving security within "
326 "a TCP/IP networked environment. It will typically contain a list of the "
327 "users that either have no business using ftp or have too many privileges to "
328 "be allowed to log in through the FTP server daemon. Such users usually "
329 "include root, daemon, bin, uucp, and news. If your FTP server daemon "
330 "doesn't use B<ftpusers>, then it is suggested that you read its "
331 "documentation to find out how to block access for certain users. Washington "
332 "University FTP server Daemon (wuftpd) and Professional FTP Daemon (proftpd) "
333 "are known to make use of B<ftpusers>."
337 #: build/C/man5/ftpusers.5:41
343 #: build/C/man5/ftpusers.5:47
345 "The format of B<ftpusers> is very simple. There is one account name (or "
346 "username) per line. Lines starting with a # are ignored."
350 #: build/C/man5/ftpusers.5:49
351 msgid "I</etc/ftpusers>"
355 #: build/C/man5/ftpusers.5:53
356 msgid "B<passwd>(5), B<proftpd>(8), B<wuftpd>(8)"
360 #: build/C/man3/getgrent.3:30
366 #: build/C/man3/getgrent.3:30
372 #: build/C/man3/getgrent.3:33
373 msgid "getgrent, setgrent, endgrent - get group file entry"
377 #: build/C/man3/getgrent.3:37 build/C/man3/getgrnam.3:40 build/C/man3/initgroups.3:39
380 "B<#include E<lt>sys/types.hE<gt>>\n"
381 "B<#include E<lt>grp.hE<gt>>\n"
385 #: build/C/man3/getgrent.3:39
387 msgid "B<struct group *getgrent(void);>\n"
391 #: build/C/man3/getgrent.3:41
393 msgid "B<void setgrent(void);>\n"
397 #: build/C/man3/getgrent.3:43
399 msgid "B<void endgrent(void);>\n"
403 #: build/C/man3/getgrent.3:53
404 msgid "B<setgrent>():"
408 #: build/C/man3/getgrent.3:56
410 "_SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE\\ E<gt>=\\ 500 || "
411 "_XOPEN_SOURCE\\ &&\\ _XOPEN_SOURCE_EXTENDED ||"
415 #: build/C/man3/getgrent.3:58
416 msgid "/* Since glibc 2.12: */ _POSIX_C_SOURCE\\ E<gt>=\\ 200809L"
420 #: build/C/man3/getgrent.3:62
421 msgid "B<getgrent>(), B<endgrent>():"
425 #: build/C/man3/getgrent.3:65
427 "_SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE\\ E<gt>=\\ 500 || "
428 "_XOPEN_SOURCE\\ &&\\ _XOPEN_SOURCE_EXTENDED"
432 #: build/C/man3/getgrent.3:80
434 "The B<getgrent>() function returns a pointer to a structure containing the "
435 "broken-out fields of a record in the group database (e.g., the local group "
436 "file I</etc/group>, NIS, and LDAP). The first time B<getgrent>() is "
437 "called, it returns the first entry; thereafter, it returns successive "
442 #: build/C/man3/getgrent.3:85
444 "The B<setgrent>() function rewinds to the beginning of the group database, "
445 "to allow repeated scans."
449 #: build/C/man3/getgrent.3:90
451 "The B<endgrent>() function is used to close the group database after all "
452 "processing has been performed."
456 #: build/C/man3/getgrent.3:107 build/C/man3/getgrent_r.3:83 build/C/man3/getgrnam.3:101
457 msgid "For more information about the fields of this structure, see B<group>(5)."
461 #: build/C/man3/getgrent.3:114
463 "The B<getgrent>() function returns a pointer to a I<group> structure, or "
464 "NULL if there are no more entries or an error occurs."
468 #: build/C/man3/getgrent.3:121
470 "Upon error, I<errno> may be set. If one wants to check I<errno> after the "
471 "call, it should be set to zero before the call."
475 #: build/C/man3/getgrent.3:130
477 "The return value may point to a static area, and may be overwritten by "
478 "subsequent calls to B<getgrent>(), B<getgrgid>(3), or B<getgrnam>(3). (Do "
479 "not pass the returned pointer to B<free>(3).)"
483 #: build/C/man3/getgrent.3:131
489 #: build/C/man3/getgrent.3:136
491 "The service was temporarily unavailable; try again later. For NSS backends "
492 "in glibc this indicates a temporary error talking to the backend. The error "
493 "may correct itself, retrying later is suggested."
497 #: build/C/man3/getgrent.3:136 build/C/man3/getgrnam.3:183 build/C/man3/getpwent.3:126 build/C/man3/getpwnam.3:189
503 #: build/C/man3/getgrent.3:139 build/C/man3/getgrnam.3:186 build/C/man3/getpwent.3:129 build/C/man3/getpwnam.3:192
504 msgid "A signal was caught."
508 #: build/C/man3/getgrent.3:139 build/C/man3/getgrnam.3:186 build/C/man3/getpwent.3:129 build/C/man3/getpwnam.3:192
514 #: build/C/man3/getgrent.3:142 build/C/man3/getgrnam.3:189 build/C/man3/getpwent.3:132 build/C/man3/getpwnam.3:195
519 #: build/C/man3/getgrent.3:142 build/C/man3/getgrnam.3:189 build/C/man3/getpwent.3:132 build/C/man3/getpwnam.3:195
525 #: build/C/man3/getgrent.3:145
526 msgid "The calling process already has too many open files."
530 #: build/C/man3/getgrent.3:145 build/C/man3/getgrnam.3:194 build/C/man3/getpwent.3:137 build/C/man3/getpwnam.3:200
536 #: build/C/man3/getgrent.3:148
537 msgid "Too many open files in the system."
541 #: build/C/man3/getgrent.3:148 build/C/man3/getgrent_r.3:110 build/C/man3/getpw.3:83 build/C/man3/getpwent_r.3:111
547 #: build/C/man3/getgrent.3:153
549 "A necessary input file cannot be found. For NSS backends in glibc this "
550 "indicates the backend is not correctly configured."
554 #: build/C/man3/getgrent.3:159 build/C/man3/getgrent_r.3:113 build/C/man3/getgrnam.3:204 build/C/man3/getpwent.3:147 build/C/man3/getpwent_r.3:114 build/C/man3/getpwnam.3:210 build/C/man3/getspnam.3:233
560 #: build/C/man3/getgrent.3:162 build/C/man3/getgrnam.3:207 build/C/man3/getpwent.3:150 build/C/man3/getpwnam.3:213
561 msgid "Insufficient buffer space supplied."
565 #: build/C/man3/getgrent.3:163 build/C/man3/getgrnam.3:208
567 msgid "I</etc/group>"
571 #: build/C/man3/getgrent.3:166 build/C/man3/getgrnam.3:211
572 msgid "local group database file"
576 #: build/C/man3/getgrent.3:166 build/C/man3/getgrnam.3:211 build/C/man3/getpwent.3:154 build/C/man3/getpwnam.3:217
582 #: build/C/man3/getgrent.3:167 build/C/man3/getgrnam.3:212 build/C/man3/getpwent.3:155 build/C/man3/getpwnam.3:218
584 msgid "Multithreading (see pthreads(7))"
588 #: build/C/man3/getgrent.3:171
589 msgid "The B<getgrent>() function is not thread-safe."
593 #: build/C/man3/getgrent.3:177
594 msgid "The B<setgrent>() and B<endgrent>() functions are thread-safe."
598 #: build/C/man3/getgrent.3:179 build/C/man3/getgrnam.3:226
599 msgid "SVr4, 4.3BSD, POSIX.1-2001."
603 #: build/C/man3/getgrent.3:187
605 "B<fgetgrent>(3), B<getgrent_r>(3), B<getgrgid>(3), B<getgrnam>(3), "
606 "B<getgrouplist>(3), B<putgrent>(3), B<group>(5)"
610 #: build/C/man3/getgrent_r.3:24
616 #: build/C/man3/getgrent_r.3:27
617 msgid "getgrent_r, fgetgrent_r - get group file entry reentrantly"
621 #: build/C/man3/getgrent_r.3:30
623 msgid "B<#include E<lt>grp.hE<gt>>\n"
627 #: build/C/man3/getgrent_r.3:32
629 msgid "B<int getgrent_r(struct group *>I<gbuf>B<, char *>I<buf>B<,>\n"
633 #: build/C/man3/getgrent_r.3:34
635 msgid "B< size_t >I<buflen>B<, struct group **>I<gbufp>B<);>\n"
639 #: build/C/man3/getgrent_r.3:36
642 "B<int fgetgrent_r(FILE *>I<fp>B<, struct group *>I<gbuf>B<, char "
647 #: build/C/man3/getgrent_r.3:38
649 msgid "B< size_t >I<buflen>B<, struct group **>I<gbufp>B<);>\n"
652 #. FIXME . The FTM requirements seem inconsistent here. File a glibc bug?
654 #: build/C/man3/getgrent_r.3:48
655 msgid "B<getgrent_r>(): _GNU_SOURCE"
659 #: build/C/man3/getgrent_r.3:51
660 msgid "B<fgetgrent_r>(): _SVID_SOURCE"
664 #: build/C/man3/getgrent_r.3:64
666 "The functions B<getgrent_r>() and B<fgetgrent_r>() are the reentrant "
667 "versions of B<getgrent>(3) and B<fgetgrent>(3). The former reads the next "
668 "group entry from the stream initialized by B<setgrent>(3). The latter reads "
669 "the next group entry from the stream I<fp>."
673 #: build/C/man3/getgrent_r.3:102
675 "The nonreentrant functions return a pointer to static storage, where this "
676 "static storage contains further pointers to group name, password and "
677 "members. The reentrant functions described here return all of that in "
678 "caller-provided buffers. First of all there is the buffer I<gbuf> that can "
679 "hold a I<struct group>. And next the buffer I<buf> of size I<buflen> that "
680 "can hold additional strings. The result of these functions, the I<struct "
681 "group> read from the stream, is stored in the provided buffer I<*gbuf>, and "
682 "a pointer to this I<struct group> is returned in I<*gbufp>."
686 #: build/C/man3/getgrent_r.3:109
688 "On success, these functions return 0 and I<*gbufp> is a pointer to the "
689 "I<struct group>. On error, these functions return an error value and "
694 #: build/C/man3/getgrent_r.3:113 build/C/man3/getpwent_r.3:114
695 msgid "No more entries."
699 #: build/C/man3/getgrent_r.3:117 build/C/man3/getpwent_r.3:118
700 msgid "Insufficient buffer space supplied. Try again with larger buffer."
704 #: build/C/man3/getgrent_r.3:122 build/C/man3/getpwent_r.3:123
706 "These functions are GNU extensions, done in a style resembling the POSIX "
707 "version of functions like B<getpwnam_r>(3). Other systems use prototype"
711 #: build/C/man3/getgrent_r.3:127
714 "struct group *getgrent_r(struct group *grp, char *buf,\n"
719 #: build/C/man3/getgrent_r.3:131 build/C/man3/getpwent_r.3:132
724 #: build/C/man3/getgrent_r.3:136
727 "int getgrent_r(struct group *grp, char *buf, int buflen,\n"
732 #: build/C/man3/getgrent_r.3:138 build/C/man3/getgrnam.3:226 build/C/man3/getpwent_r.3:140 build/C/man3/getpwnam.3:235 build/C/man5/passwd.5:144
738 #: build/C/man3/getgrent_r.3:143
740 "The function B<getgrent_r>() is not really reentrant since it shares the "
741 "reading position in the stream with all other threads."
745 #: build/C/man3/getgrent_r.3:143 build/C/man3/getgrouplist.3:109 build/C/man3/getpwent_r.3:145 build/C/man3/getpwnam.3:274 build/C/man3/setaliasent.3:115
751 #: build/C/man3/getgrent_r.3:150
754 "#define _GNU_SOURCE\n"
755 "#include E<lt>grp.hE<gt>\n"
756 "#include E<lt>stdio.hE<gt>\n"
757 "#include E<lt>stdlib.hE<gt>\n"
758 "#define BUFLEN 4096\n"
762 #: build/C/man3/getgrent_r.3:157
768 " struct group grp, *grpp;\n"
769 " char buf[BUFLEN];\n"
774 #: build/C/man3/getgrent_r.3:174
779 " i = getgrent_r(&grp, buf, BUFLEN, &grpp);\n"
782 " printf(\"%s (%d):\", grpp-E<gt>gr_name, grpp-E<gt>gr_gid);\n"
783 " for (i = 0; ; i++) {\n"
784 " if (grpp-E<gt>gr_mem[i] == NULL)\n"
786 " printf(\" %s\", grpp-E<gt>gr_mem[i]);\n"
788 " printf(\"\\en\");\n"
791 " exit(EXIT_SUCCESS);\n"
796 #: build/C/man3/getgrent_r.3:191
798 "B<fgetgrent>(3), B<getgrent>(3), B<getgrgid>(3), B<getgrnam>(3), "
799 "B<putgrent>(3), B<group>(5)"
803 #: build/C/man3/getgrnam.3:33
809 #: build/C/man3/getgrnam.3:36
810 msgid "getgrnam, getgrnam_r, getgrgid, getgrgid_r - get group file entry"
814 #: build/C/man3/getgrnam.3:42
816 msgid "B<struct group *getgrnam(const char *>I<name>B<);>\n"
820 #: build/C/man3/getgrnam.3:44
822 msgid "B<struct group *getgrgid(gid_t >I<gid>B<);>\n"
826 #: build/C/man3/getgrnam.3:46
828 msgid "B<int getgrnam_r(const char *>I<name>B<, struct group *>I<grp>B<,>\n"
832 #: build/C/man3/getgrnam.3:48 build/C/man3/getgrnam.3:52
835 "B< char *>I<buf>B<, size_t >I<buflen>B<, struct group "
836 "**>I<result>B<);>\n"
840 #: build/C/man3/getgrnam.3:50
842 msgid "B<int getgrgid_r(gid_t >I<gid>B<, struct group *>I<grp>B<,>\n"
846 #: build/C/man3/getgrnam.3:62
847 msgid "B<getgrnam_r>(), B<getgrgid_r>():"
851 #: build/C/man3/getgrnam.3:65 build/C/man3/getpwnam.3:69
853 "_POSIX_C_SOURCE\\ E<gt>=\\ 1 || _XOPEN_SOURCE || _BSD_SOURCE || _SVID_SOURCE "
858 #: build/C/man3/getgrnam.3:77
860 "The B<getgrnam>() function returns a pointer to a structure containing the "
861 "broken-out fields of the record in the group database (e.g., the local group "
862 "file I</etc/group>, NIS, and LDAP) that matches the group name I<name>."
866 #: build/C/man3/getgrnam.3:84
868 "The B<getgrgid>() function returns a pointer to a structure containing the "
869 "broken-out fields of the record in the group database that matches the group "
874 #: build/C/man3/getgrnam.3:124
876 "The B<getgrnam_r>() and B<getgrgid_r>() functions obtain the same "
877 "information as B<getgrnam>() and B<getgrgid>(), but store the retrieved "
878 "I<group> structure in the space pointed to by I<grp>. The string fields "
879 "pointed to by the members of the I<group> structure are stored in the buffer "
880 "I<buf> of size I<buflen>. A pointer to the result (in case of success) or "
881 "NULL (in case no entry was found or an error occurred) is stored in "
886 #: build/C/man3/getgrnam.3:126 build/C/man3/getpwnam.3:132
891 #: build/C/man3/getgrnam.3:128
893 msgid " sysconf(_SC_GETGR_R_SIZE_MAX)\n"
897 #: build/C/man3/getgrnam.3:137 build/C/man3/getpwnam.3:143
899 "returns either -1, without changing I<errno>, or an initial suggested size "
900 "for I<buf>. (If this size is too small, the call fails with B<ERANGE>, in "
901 "which case the caller can retry with a larger buffer.)"
905 #: build/C/man3/getgrnam.3:152
907 "The B<getgrnam>() and B<getgrgid>() functions return a pointer to a "
908 "I<group> structure, or NULL if the matching entry is not found or an error "
909 "occurs. If an error occurs, I<errno> is set appropriately. If one wants to "
910 "check I<errno> after the call, it should be set to zero before the call."
914 #: build/C/man3/getgrnam.3:161
916 "The return value may point to a static area, and may be overwritten by "
917 "subsequent calls to B<getgrent>(3), B<getgrgid>(), or B<getgrnam>(). (Do "
918 "not pass the returned pointer to B<free>(3).)"
922 #: build/C/man3/getgrnam.3:175
924 "On success, B<getgrnam_r>() and B<getgrgid_r>() return zero, and set "
925 "I<*result> to I<grp>. If no matching group record was found, these "
926 "functions return 0 and store NULL in I<*result>. In case of error, an error "
927 "number is returned, and NULL is stored in I<*result>."
931 #: build/C/man3/getgrnam.3:176 build/C/man3/getpwnam.3:182
933 msgid "B<0> or B<ENOENT> or B<ESRCH> or B<EBADF> or B<EPERM> or ... "
937 #: build/C/man3/getgrnam.3:183
938 msgid "The given I<name> or I<gid> was not found."
942 #: build/C/man3/getgrnam.3:194 build/C/man3/getpwent.3:137 build/C/man3/getpwnam.3:200
944 "The maximum number (B<OPEN_MAX>) of files was open already in the calling "
949 #: build/C/man3/getgrnam.3:197 build/C/man3/getpwent.3:140 build/C/man3/getpwnam.3:203
950 msgid "The maximum number of files was open already in the system."
954 #: build/C/man3/getgrnam.3:218
955 msgid "The B<getgrnam>() and B<getgrgid>() functions are not thread-safe."
959 #: build/C/man3/getgrnam.3:224
960 msgid "The B<getgrnam_r>() and B<getgrgid_r>() functions are thread-safe."
964 #. AIX 5.1 - gives ESRCH
965 #. OSF1 4.0g - gives EWOULDBLOCK
966 #. libc, glibc up to version 2.6, Irix 6.5 - give ENOENT
967 #. glibc since version 2.7 - give 0
968 #. FreeBSD 4.8, OpenBSD 3.2, NetBSD 1.6 - give EPERM
969 #. SunOS 5.8 - gives EBADF
970 #. Tru64 5.1b, HP-UX-11i, SunOS 5.7 - give 0
972 #: build/C/man3/getgrnam.3:247
974 "The formulation given above under \"RETURN VALUE\" is from POSIX.1-2001. It "
975 "does not call \"not found\" an error, hence does not specify what value "
976 "I<errno> might have in this situation. But that makes it impossible to "
977 "recognize errors. One might argue that according to POSIX I<errno> should "
978 "be left unchanged if an entry is not found. Experiments on various "
979 "UNIX-like systems shows that lots of different values occur in this "
980 "situation: 0, ENOENT, EBADF, ESRCH, EWOULDBLOCK, EPERM, and probably others."
984 #: build/C/man3/getgrnam.3:254
986 "B<endgrent>(3), B<fgetgrent>(3), B<getgrent>(3), B<getpwnam>(3), "
987 "B<setgrent>(3), B<group>(5)"
991 #: build/C/man3/getgrouplist.3:29
997 #: build/C/man3/getgrouplist.3:32
998 msgid "getgrouplist - get list of groups to which a user belongs"
1002 #: build/C/man3/getgrouplist.3:34 build/C/man3/putgrent.3:14
1003 msgid "B<#include E<lt>grp.hE<gt>>"
1007 #: build/C/man3/getgrouplist.3:36
1008 msgid "B<int getgrouplist(const char *>I<user>B<, gid_t >I<group>B<,>"
1012 #: build/C/man3/getgrouplist.3:38
1013 msgid "B< gid_t *>I<groups>B<, int *>I<ngroups>B<);>"
1017 #: build/C/man3/getgrouplist.3:46
1018 msgid "B<getgrouplist>(): _BSD_SOURCE"
1022 #: build/C/man3/getgrouplist.3:58
1024 "The B<getgrouplist>() function scans the group database (see B<group>(5)) "
1025 "to obtain the list of groups that I<user> belongs to. Up to I<*ngroups> of "
1026 "these groups are returned in the array I<groups>."
1030 #: build/C/man3/getgrouplist.3:68
1032 "If it was not among the groups defined for I<user> in the group database, "
1033 "then I<group> is included in the list of groups returned by "
1034 "B<getgrouplist>(); typically this argument is specified as the group ID from "
1035 "the password record for I<user>."
1039 #: build/C/man3/getgrouplist.3:78
1041 "The I<ngroups> argument is a value-result argument: on return it always "
1042 "contains the number of groups found for I<user>, including I<group>; this "
1043 "value may be greater than the number of groups stored in I<groups>."
1047 #: build/C/man3/getgrouplist.3:86
1049 "If the number of groups of which I<user> is a member is less than or equal "
1050 "to I<*ngroups>, then the value I<*ngroups> is returned."
1054 #: build/C/man3/getgrouplist.3:96
1056 "If the user is a member of more than I<*ngroups> groups, then "
1057 "B<getgrouplist>() returns -1. In this case, the value returned in "
1058 "I<*ngroups> can be used to resize the buffer passed to a further call "
1059 "B<getgrouplist>()."
1063 #: build/C/man3/getgrouplist.3:96
1069 #: build/C/man3/getgrouplist.3:98
1070 msgid "This function is present since glibc 2.2.4."
1074 #: build/C/man3/getgrouplist.3:100
1075 msgid "This function is nonstandard; it appears on most BSDs."
1079 #: build/C/man3/getgrouplist.3:100 build/C/man3/getpw.3:98 build/C/man5/group.5:55
1085 #: build/C/man3/getgrouplist.3:109
1087 "In glibc versions before 2.3.3, the implementation of this function contains "
1088 "a buffer-overrun bug: it returns the complete list of groups for I<user> in "
1089 "the array I<groups>, even when the number of groups exceeds I<*ngroups>."
1093 #: build/C/man3/getgrouplist.3:118
1095 "The program below displays the group list for the user named in its first "
1096 "command-line argument. The second command-line argument specifies the "
1097 "I<ngroups> value to be supplied to B<getgrouplist>(). The following shell "
1098 "session shows examples of the use of this program:"
1102 #: build/C/man3/getgrouplist.3:128
1105 "$B< ./a.out cecilia 0>\n"
1106 "getgrouplist() returned -1; ngroups = 3\n"
1107 "$B< ./a.out cecilia 3>\n"
1115 #: build/C/man3/getgrouplist.3:130
1117 msgid "Program source"
1121 #: build/C/man3/getgrouplist.3:137
1124 "#include E<lt>stdio.hE<gt>\n"
1125 "#include E<lt>stdlib.hE<gt>\n"
1126 "#include E<lt>grp.hE<gt>\n"
1127 "#include E<lt>pwd.hE<gt>\n"
1131 #: build/C/man3/getgrouplist.3:145
1135 "main(int argc, char *argv[])\n"
1137 " int j, ngroups;\n"
1139 " struct passwd *pw;\n"
1140 " struct group *gr;\n"
1144 #: build/C/man3/getgrouplist.3:150
1147 " if (argc != 3) {\n"
1148 " fprintf(stderr, \"Usage: %s E<lt>userE<gt> E<lt>ngroupsE<gt>\\en\", "
1150 " exit(EXIT_FAILURE);\n"
1155 #: build/C/man3/getgrouplist.3:152
1157 msgid " ngroups = atoi(argv[2]);\n"
1161 #: build/C/man3/getgrouplist.3:158
1164 " groups = malloc(ngroups * sizeof (gid_t));\n"
1165 " if (groups == NULL) {\n"
1166 " perror(\"malloc\");\n"
1167 " exit(EXIT_FAILURE);\n"
1172 #: build/C/man3/getgrouplist.3:160
1174 msgid " /* Fetch passwd structure (contains first group ID for user) */\n"
1178 #: build/C/man3/getgrouplist.3:166
1181 " pw = getpwnam(argv[1]);\n"
1182 " if (pw == NULL) {\n"
1183 " perror(\"getpwnam\");\n"
1184 " exit(EXIT_SUCCESS);\n"
1189 #: build/C/man3/getgrouplist.3:168
1191 msgid " /* Retrieve group list */\n"
1195 #: build/C/man3/getgrouplist.3:174
1198 " if (getgrouplist(argv[1], pw-E<gt>pw_gid, groups, &ngroups) == -1) {\n"
1199 " fprintf(stderr, \"getgrouplist() returned -1; ngroups = %d\\en\",\n"
1201 " exit(EXIT_FAILURE);\n"
1206 #: build/C/man3/getgrouplist.3:176
1208 msgid " /* Display list of retrieved groups, along with group names */\n"
1212 #: build/C/man3/getgrouplist.3:185
1215 " fprintf(stderr, \"ngroups = %d\\en\", ngroups);\n"
1216 " for (j = 0; j E<lt> ngroups; j++) {\n"
1217 " printf(\"%d\", groups[j]);\n"
1218 " gr = getgrgid(groups[j]);\n"
1219 " if (gr != NULL)\n"
1220 " printf(\" (%s)\", gr-E<gt>gr_name);\n"
1221 " printf(\"\\en\");\n"
1226 #: build/C/man3/getgrouplist.3:188
1229 " exit(EXIT_SUCCESS);\n"
1234 #: build/C/man3/getgrouplist.3:196
1236 "B<getgroups>(2), B<setgroups>(2), B<getgrent>(3), B<group_member>(3), "
1237 "B<group>(5), B<passwd>(5)"
1241 #: build/C/man3/getpw.3:32
1247 #: build/C/man3/getpw.3:32 build/C/man3/getpwent_r.3:24 build/C/man5/group.5:26
1253 #: build/C/man3/getpw.3:35
1254 msgid "getpw - reconstruct password line entry"
1258 #: build/C/man3/getpw.3:40
1261 "B<#define _GNU_SOURCE> /* See feature_test_macros(7) */\n"
1262 "B<#include E<lt>sys/types.hE<gt>>\n"
1263 "B<#include E<lt>pwd.hE<gt>>\n"
1267 #: build/C/man3/getpw.3:42
1269 msgid "B<int getpw(uid_t >I<uid>B<, char *>I<buf>B<);>\n"
1273 #: build/C/man3/getpw.3:49
1275 "The B<getpw>() function reconstructs the password line entry for the given "
1276 "user ID I<uid> in the buffer I<buf>. The returned buffer contains a line of "
1281 #: build/C/man3/getpw.3:52
1282 msgid "B<name:passwd:uid:gid:gecos:dir:shell>"
1286 #: build/C/man3/getpw.3:67 build/C/man3/getpwent.3:98 build/C/man3/getpwnam.3:102
1290 " char *pw_name; /* username */\n"
1291 " char *pw_passwd; /* user password */\n"
1292 " uid_t pw_uid; /* user ID */\n"
1293 " gid_t pw_gid; /* group ID */\n"
1294 " char *pw_gecos; /* user information */\n"
1295 " char *pw_dir; /* home directory */\n"
1296 " char *pw_shell; /* shell program */\n"
1301 #: build/C/man3/getpw.3:72 build/C/man3/getpwent.3:103 build/C/man3/getpwent_r.3:84
1302 msgid "For more information about the fields of this structure, see B<passwd>(5)."
1306 #: build/C/man3/getpw.3:78
1308 "The B<getpw>() function returns 0 on success; on error, it returns -1, and "
1309 "I<errno> is set to indicate the error."
1313 #: build/C/man3/getpw.3:79 build/C/man3/putpwent.3:79
1319 #: build/C/man3/getpw.3:83
1320 msgid "I<buf> is NULL."
1324 #: build/C/man3/getpw.3:87
1325 msgid "No user corresponding to I<uid>."
1329 #: build/C/man3/getpw.3:98
1334 #: build/C/man3/getpw.3:105
1336 "The B<getpw>() function is dangerous as it may overflow the provided buffer "
1337 "I<buf>. It is obsoleted by B<getpwuid>(3)."
1341 #: build/C/man3/getpw.3:114
1343 "B<endpwent>(3), B<fgetpwent>(3), B<getpwent>(3), B<getpwnam>(3), "
1344 "B<getpwuid>(3), B<putpwent>(3), B<setpwent>(3), B<passwd>(5)"
1348 #: build/C/man3/getpwent.3:33
1354 #: build/C/man3/getpwent.3:33
1360 #: build/C/man3/getpwent.3:36
1361 msgid "getpwent, setpwent, endpwent - get password file entry"
1365 #: build/C/man3/getpwent.3:40 build/C/man3/getpwnam.3:44
1368 "B<#include E<lt>sys/types.hE<gt>>\n"
1369 "B<#include E<lt>pwd.hE<gt>>\n"
1373 #: build/C/man3/getpwent.3:42
1375 msgid "B<struct passwd *getpwent(void);>\n"
1379 #: build/C/man3/getpwent.3:44
1381 msgid "B<void setpwent(void);>\n"
1385 #: build/C/man3/getpwent.3:46
1387 msgid "B<void endpwent(void);>\n"
1391 #: build/C/man3/getpwent.3:57
1392 msgid "B<getpwent>(), B<setpwent>(), B<endpwent>():"
1396 #: build/C/man3/getpwent.3:60
1398 "_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\\ E<gt>=\\ 500 || "
1399 "_XOPEN_SOURCE\\ &&\\ _XOPEN_SOURCE_EXTENDED"
1403 #: build/C/man3/getpwent.3:74
1405 "The B<getpwent>() function returns a pointer to a structure containing the "
1406 "broken-out fields of a record from the password database (e.g., the local "
1407 "password file I</etc/passwd>, NIS, and LDAP). The first time B<getpwent>() "
1408 "is called, it returns the first entry; thereafter, it returns successive "
1413 #: build/C/man3/getpwent.3:79
1415 "The B<setpwent>() function rewinds to the beginning of the password "
1420 #: build/C/man3/getpwent.3:84
1422 "The B<endpwent>() function is used to close the password database after all "
1423 "processing has been performed."
1427 #: build/C/man3/getpwent.3:116
1429 "The B<getpwent>() function returns a pointer to a I<passwd> structure, or "
1430 "NULL if there are no more entries or an error occurred. If an error occurs, "
1431 "I<errno> is set appropriately. If one wants to check I<errno> after the "
1432 "call, it should be set to zero before the call."
1436 #: build/C/man3/getpwent.3:125
1438 "The return value may point to a static area, and may be overwritten by "
1439 "subsequent calls to B<getpwent>(), B<getpwnam>(3), or B<getpwuid>(3). (Do "
1440 "not pass the returned pointer to B<free>(3).)"
1444 #: build/C/man3/getpwent.3:154 build/C/man3/getpwnam.3:217
1445 msgid "local password database file"
1449 #: build/C/man3/getpwent.3:159
1450 msgid "The B<getpwent>() function is not thread-safe."
1454 #: build/C/man3/getpwent.3:165
1455 msgid "The B<setpwent>() and B<endpwent>() functions are thread-safe."
1459 #: build/C/man3/getpwent.3:170 build/C/man3/getpwnam.3:235
1461 "SVr4, 4.3BSD, POSIX.1-2001. The I<pw_gecos> field is not specified in "
1462 "POSIX, but is present on most implementations."
1466 #: build/C/man3/getpwent.3:178
1468 "B<fgetpwent>(3), B<getpw>(3), B<getpwent_r>(3), B<getpwnam>(3), "
1469 "B<getpwuid>(3), B<putpwent>(3), B<passwd>(5)"
1473 #: build/C/man3/getpwent_r.3:24
1479 #: build/C/man3/getpwent_r.3:27
1480 msgid "getpwent_r, fgetpwent_r - get passwd file entry reentrantly"
1484 #: build/C/man3/getpwent_r.3:30
1486 msgid "B<#include E<lt>pwd.hE<gt>>\n"
1490 #: build/C/man3/getpwent_r.3:32
1492 msgid "B<int getpwent_r(struct passwd *>I<pwbuf>B<, char *>I<buf>B<,>\n"
1496 #: build/C/man3/getpwent_r.3:34
1498 msgid "B< size_t >I<buflen>B<, struct passwd **>I<pwbufp>B<);>\n"
1502 #: build/C/man3/getpwent_r.3:36
1505 "B<int fgetpwent_r(FILE *>I<fp>B<, struct passwd *>I<pwbuf>B<, char "
1510 #: build/C/man3/getpwent_r.3:38
1512 msgid "B< size_t >I<buflen>B<, struct passwd **>I<pwbufp>B<);>\n"
1516 #: build/C/man3/getpwent_r.3:47
1517 msgid "B<getpwent_r>(), _BSD_SOURCE || _SVID_SOURCE"
1521 #: build/C/man3/getpwent_r.3:50
1522 msgid "B<fgetpwent_r>(): _SVID_SOURCE"
1526 #: build/C/man3/getpwent_r.3:63
1528 "The functions B<getpwent_r>() and B<fgetpwent_r>() are the reentrant "
1529 "versions of B<getpwent>(3) and B<fgetpwent>(3). The former reads the next "
1530 "passwd entry from the stream initialized by B<setpwent>(3). The latter "
1531 "reads the next passwd entry from the stream I<fp>."
1535 #: build/C/man3/getpwent_r.3:79
1539 " char *pw_name; /* username */\n"
1540 " char *pw_passwd; /* user password */\n"
1541 " uid_t pw_uid; /* user ID */\n"
1542 " gid_t pw_gid; /* group ID */\n"
1543 " char *pw_gecos; /* user information */\n"
1544 " char *pw_dir; /* home directory */\n"
1545 " char *pw_shell; /* shell program */\n"
1550 #: build/C/man3/getpwent_r.3:103
1552 "The nonreentrant functions return a pointer to static storage, where this "
1553 "static storage contains further pointers to user name, password, gecos "
1554 "field, home directory and shell. The reentrant functions described here "
1555 "return all of that in caller-provided buffers. First of all there is the "
1556 "buffer I<pwbuf> that can hold a I<struct passwd>. And next the buffer "
1557 "I<buf> of size I<buflen> that can hold additional strings. The result of "
1558 "these functions, the I<struct passwd> read from the stream, is stored in the "
1559 "provided buffer I<*pwbuf>, and a pointer to this I<struct passwd> is "
1560 "returned in I<*pwbufp>."
1564 #: build/C/man3/getpwent_r.3:110
1566 "On success, these functions return 0 and I<*pwbufp> is a pointer to the "
1567 "I<struct passwd>. On error, these functions return an error value and "
1568 "I<*pwbufp> is NULL."
1572 #: build/C/man3/getpwent_r.3:128
1576 "getpwent_r(struct passwd *pwd, char *buf, int buflen);\n"
1580 #: build/C/man3/getpwent_r.3:138
1584 "getpwent_r(struct passwd *pwd, char *buf, int buflen,\n"
1589 #: build/C/man3/getpwent_r.3:145
1591 "The function B<getpwent_r>() is not really reentrant since it shares the "
1592 "reading position in the stream with all other threads."
1596 #: build/C/man3/getpwent_r.3:151
1599 "#define _GNU_SOURCE\n"
1600 "#include E<lt>pwd.hE<gt>\n"
1601 "#include E<lt>stdio.hE<gt>\n"
1602 "#define BUFLEN 4096\n"
1606 #: build/C/man3/getpwent_r.3:158
1612 " struct passwd pw, *pwp;\n"
1613 " char buf[BUFLEN];\n"
1618 #: build/C/man3/getpwent_r.3:170
1623 " i = getpwent_r(&pw, buf, BUFLEN, &pwp);\n"
1626 " printf(\"%s (%d)\\etHOME %s\\etSHELL %s\\en\", pwp-E<gt>pw_name,\n"
1627 " pwp-E<gt>pw_uid, pwp-E<gt>pw_dir, pwp-E<gt>pw_shell);\n"
1630 " exit(EXIT_SUCCESS);\n"
1635 #: build/C/man3/getpwent_r.3:188
1637 "B<fgetpwent>(3), B<getpw>(3), B<getpwent>(3), B<getpwnam>(3), "
1638 "B<getpwuid>(3), B<putpwent>(3), B<passwd>(5)"
1642 #: build/C/man3/getpwnam.3:37
1648 #: build/C/man3/getpwnam.3:37
1654 #: build/C/man3/getpwnam.3:40
1655 msgid "getpwnam, getpwnam_r, getpwuid, getpwuid_r - get password file entry"
1659 #: build/C/man3/getpwnam.3:46
1661 msgid "B<struct passwd *getpwnam(const char *>I<name>B<);>\n"
1665 #: build/C/man3/getpwnam.3:48
1667 msgid "B<struct passwd *getpwuid(uid_t >I<uid>B<);>\n"
1671 #: build/C/man3/getpwnam.3:50
1673 msgid "B<int getpwnam_r(const char *>I<name>B<, struct passwd *>I<pwd>B<,>\n"
1677 #: build/C/man3/getpwnam.3:52 build/C/man3/getpwnam.3:56
1680 "B< char *>I<buf>B<, size_t >I<buflen>B<, struct passwd "
1681 "**>I<result>B<);>\n"
1685 #: build/C/man3/getpwnam.3:54
1687 msgid "B<int getpwuid_r(uid_t >I<uid>B<, struct passwd *>I<pwd>B<,>\n"
1691 #: build/C/man3/getpwnam.3:66
1692 msgid "B<getpwnam_r>(), B<getpwuid_r>():"
1696 #: build/C/man3/getpwnam.3:81
1698 "The B<getpwnam>() function returns a pointer to a structure containing the "
1699 "broken-out fields of the record in the password database (e.g., the local "
1700 "password file I</etc/passwd>, NIS, and LDAP) that matches the username "
1705 #: build/C/man3/getpwnam.3:88
1707 "The B<getpwuid>() function returns a pointer to a structure containing the "
1708 "broken-out fields of the record in the password database that matches the "
1713 #: build/C/man3/getpwnam.3:108
1714 msgid "See B<passwd>(5) for more information about these fields."
1718 #: build/C/man3/getpwnam.3:130
1720 "The B<getpwnam_r>() and B<getpwuid_r>() functions obtain the same "
1721 "information as B<getpwnam>() and B<getpwuid>(), but store the retrieved "
1722 "I<passwd> structure in the space pointed to by I<pwd>. The string fields "
1723 "pointed to by the members of the I<passwd> structure are stored in the "
1724 "buffer I<buf> of size I<buflen>. A pointer to the result (in case of "
1725 "success) or NULL (in case no entry was found or an error occurred) is stored "
1730 #: build/C/man3/getpwnam.3:134
1732 msgid " sysconf(_SC_GETPW_R_SIZE_MAX)\n"
1736 #: build/C/man3/getpwnam.3:158
1738 "The B<getpwnam>() and B<getpwuid>() functions return a pointer to a "
1739 "I<passwd> structure, or NULL if the matching entry is not found or an error "
1740 "occurs. If an error occurs, I<errno> is set appropriately. If one wants to "
1741 "check I<errno> after the call, it should be set to zero before the call."
1745 #: build/C/man3/getpwnam.3:167
1747 "The return value may point to a static area, and may be overwritten by "
1748 "subsequent calls to B<getpwent>(3), B<getpwnam>(), or B<getpwuid>(). (Do "
1749 "not pass the returned pointer to B<free>(3).)"
1753 #: build/C/man3/getpwnam.3:181
1755 "On success, B<getpwnam_r>() and B<getpwuid_r>() return zero, and set "
1756 "I<*result> to I<pwd>. If no matching password record was found, these "
1757 "functions return 0 and store NULL in I<*result>. In case of error, an error "
1758 "number is returned, and NULL is stored in I<*result>."
1762 #: build/C/man3/getpwnam.3:189
1763 msgid "The given I<name> or I<uid> was not found."
1767 #: build/C/man3/getpwnam.3:224
1768 msgid "The B<getpwnam>() and B<getpwuid>() functions are not thread-safe."
1772 #: build/C/man3/getpwnam.3:230
1773 msgid "The B<getpwnam_r>() and B<getpwuid_r>() functions are thread-safe."
1777 #. AIX 5.1 - gives ESRCH
1778 #. OSF1 4.0g - gives EWOULDBLOCK
1779 #. libc, glibc up to version 2.6, Irix 6.5 - give ENOENT
1780 #. glibc since version 2.7 - give 0
1781 #. FreeBSD 4.8, OpenBSD 3.2, NetBSD 1.6 - give EPERM
1782 #. SunOS 5.8 - gives EBADF
1783 #. Tru64 5.1b, HP-UX-11i, SunOS 5.7 - give 0
1785 #: build/C/man3/getpwnam.3:256
1787 "The formulation given above under \"RETURN VALUE\" is from POSIX.1-2001. It "
1788 "does not call \"not found\" an error, and hence does not specify what value "
1789 "I<errno> might have in this situation. But that makes it impossible to "
1790 "recognize errors. One might argue that according to POSIX I<errno> should "
1791 "be left unchanged if an entry is not found. Experiments on various "
1792 "UNIX-like systems show that lots of different values occur in this "
1793 "situation: 0, ENOENT, EBADF, ESRCH, EWOULDBLOCK, EPERM, and probably others."
1797 #: build/C/man3/getpwnam.3:274
1799 "The I<pw_dir> field contains the name of the initial working directory of "
1800 "the user. Login programs use the value of this field to initialize the "
1801 "B<HOME> environment variable for the login shell. An application that wants "
1802 "to determine its user's home directory should inspect the value of B<HOME> "
1803 "(rather than the value I<getpwuid(getuid())-E<gt>pw_dir>) since this allows "
1804 "the user to modify their notion of \"the home directory\" during a login "
1805 "session. To determine the (initial) home directory of another user, it is "
1806 "necessary to use I<getpwnam(\"username\")-E<gt>pw_dir> or similar."
1810 #: build/C/man3/getpwnam.3:279
1812 "The program below demonstrates the use of B<getpwnam_r>() to find the full "
1813 "username and user ID for the username supplied as a command-line argument."
1817 #: build/C/man3/getpwnam.3:286
1820 "#include E<lt>pwd.hE<gt>\n"
1821 "#include E<lt>stdio.hE<gt>\n"
1822 "#include E<lt>stdlib.hE<gt>\n"
1823 "#include E<lt>unistd.hE<gt>\n"
1824 "#include E<lt>errno.hE<gt>\n"
1828 #: build/C/man3/getpwnam.3:295
1832 "main(int argc, char *argv[])\n"
1834 " struct passwd pwd;\n"
1835 " struct passwd *result;\n"
1837 " size_t bufsize;\n"
1842 #: build/C/man3/getpwnam.3:300
1845 " if (argc != 2) {\n"
1846 " fprintf(stderr, \"Usage: %s username\\en\", argv[0]);\n"
1847 " exit(EXIT_FAILURE);\n"
1852 #: build/C/man3/getpwnam.3:304
1855 " bufsize = sysconf(_SC_GETPW_R_SIZE_MAX);\n"
1856 " if (bufsize == -1) /* Value was indeterminate */\n"
1857 " bufsize = 16384; /* Should be more than enough */\n"
1861 #: build/C/man3/getpwnam.3:310
1864 " buf = malloc(bufsize);\n"
1865 " if (buf == NULL) {\n"
1866 " perror(\"malloc\");\n"
1867 " exit(EXIT_FAILURE);\n"
1872 #: build/C/man3/getpwnam.3:321
1875 " s = getpwnam_r(argv[1], &pwd, buf, bufsize, &result);\n"
1876 " if (result == NULL) {\n"
1878 " printf(\"Not found\\en\");\n"
1881 " perror(\"getpwnam_r\");\n"
1883 " exit(EXIT_FAILURE);\n"
1888 #: build/C/man3/getpwnam.3:325
1891 " printf(\"Name: %s; UID: %ld\\en\", pwd.pw_gecos, (long) pwd.pw_uid);\n"
1892 " exit(EXIT_SUCCESS);\n"
1897 #: build/C/man3/getpwnam.3:336
1899 "B<endpwent>(3), B<fgetpwent>(3), B<getgrnam>(3), B<getpw>(3), "
1900 "B<getpwent>(3), B<getspnam>(3), B<putpwent>(3), B<setpwent>(3), B<passwd>(5)"
1904 #: build/C/man3/getspnam.3:8
1910 #: build/C/man3/getspnam.3:8
1916 #: build/C/man3/getspnam.3:13
1918 "getspnam, getspnam_r, getspent, getspent_r, setspent, endspent, fgetspent, "
1919 "fgetspent_r, sgetspent, sgetspent_r, putspent, lckpwdf, ulckpwdf - get "
1920 "shadow password file entry"
1924 #: build/C/man3/getspnam.3:16
1926 msgid "/* General shadow password file API */\n"
1930 #: build/C/man3/getspnam.3:18 build/C/man3/getspnam.3:40
1932 msgid "B<#include E<lt>shadow.hE<gt>>\n"
1936 #: build/C/man3/getspnam.3:20
1938 msgid "B<struct spwd *getspnam(const char *>I<name>B<);>\n"
1942 #: build/C/man3/getspnam.3:22
1944 msgid "B<struct spwd *getspent(void);>\n"
1948 #: build/C/man3/getspnam.3:24
1950 msgid "B<void setspent(void);>\n"
1954 #: build/C/man3/getspnam.3:26
1956 msgid "B<void endspent(void);>\n"
1960 #: build/C/man3/getspnam.3:28
1962 msgid "B<struct spwd *fgetspent(FILE *>I<fp>B<);>\n"
1966 #: build/C/man3/getspnam.3:30
1968 msgid "B<struct spwd *sgetspent(const char *>I<s>B<);>\n"
1972 #: build/C/man3/getspnam.3:32
1974 msgid "B<int putspent(const struct spwd *>I<p>B<, FILE *>I<fp>B<);>\n"
1978 #: build/C/man3/getspnam.3:34
1980 msgid "B<int lckpwdf(void);>\n"
1984 #: build/C/man3/getspnam.3:36
1986 msgid "B<int ulckpwdf(void);>\n"
1990 #: build/C/man3/getspnam.3:38
1992 msgid "/* GNU extension */\n"
1996 #: build/C/man3/getspnam.3:42
1998 msgid "B<int getspent_r(struct spwd *>I<spbuf>B<,>\n"
2002 #: build/C/man3/getspnam.3:44 build/C/man3/getspnam.3:48 build/C/man3/getspnam.3:52 build/C/man3/getspnam.3:56
2005 "B< char *>I<buf>B<, size_t >I<buflen>B<, struct spwd "
2006 "**>I<spbufp>B<);>\n"
2010 #: build/C/man3/getspnam.3:46
2012 msgid "B<int getspnam_r(const char *>I<name>B<, struct spwd *>I<spbuf>B<,>\n"
2016 #: build/C/man3/getspnam.3:50
2018 msgid "B<int fgetspent_r(FILE *>I<fp>B<, struct spwd *>I<spbuf>B<,>\n"
2022 #: build/C/man3/getspnam.3:54
2024 msgid "B<int sgetspent_r(const char *>I<s>B<, struct spwd *>I<spbuf>B<,>\n"
2028 #: build/C/man3/getspnam.3:68
2029 msgid "B<getspent_r>(), B<getspnam_r>(), B<fgetspent_r>(), B<sgetspent_r>():"
2033 #: build/C/man3/getspnam.3:70
2034 msgid "_BSD_SOURCE || _SVID_SOURCE"
2038 #: build/C/man3/getspnam.3:84
2040 "Long ago it was considered safe to have encrypted passwords openly visible "
2041 "in the password file. When computers got faster and people got more "
2042 "security-conscious, this was no longer acceptable. Julianne Frances Haugh "
2043 "implemented the shadow password suite that keeps the encrypted passwords in "
2044 "the shadow password database (e.g., the local shadow password file "
2045 "I</etc/shadow>, NIS, and LDAP), readable only by root."
2048 #. FIXME . I've commented out the following for the
2049 #. moment. The relationship between PAM and nsswitch.conf needs
2050 #. to be clearly documented in one place, which is pointed to by
2051 #. the pages for the user, group, and shadow password functions.
2054 #. This shadow password setup has been superseded by PAM
2055 #. (pluggable authentication modules), and the file
2056 #. .I /etc/nsswitch.conf
2057 #. now describes the sources to be used.
2059 #: build/C/man3/getspnam.3:101
2061 "The functions described below resemble those for the traditional password "
2062 "database (e.g., see B<getpwnam>(3) and B<getpwent>(3))."
2066 #: build/C/man3/getspnam.3:108
2068 "The B<getspnam>() function returns a pointer to a structure containing the "
2069 "broken-out fields of the record in the shadow password database that matches "
2070 "the username I<name>."
2073 #. some systems require a call of setspent() before the first getspent()
2076 #: build/C/man3/getspnam.3:120
2078 "The B<getspent>() function returns a pointer to the next entry in the "
2079 "shadow password database. The position in the input stream is initialized "
2080 "by B<setspent>(). When done reading, the program may call B<endspent>() so "
2081 "that resources can be deallocated."
2085 #: build/C/man3/getspnam.3:127
2087 "The B<fgetspent>() function is similar to B<getspent>() but uses the "
2088 "supplied stream instead of the one implicitly opened by B<setspent>()."
2092 #: build/C/man3/getspnam.3:134
2094 "The B<sgetspent>() function parses the supplied string I<s> into a struct "
2099 #: build/C/man3/getspnam.3:144
2101 "The B<putspent>() function writes the contents of the supplied struct "
2102 "I<spwd> I<*p> as a text line in the shadow password file format to the "
2103 "stream I<fp>. String entries with value NULL and numerical entries with "
2104 "value -1 are written as an empty string."
2108 #: build/C/man3/getspnam.3:159
2110 "The B<lckpwdf>() function is intended to protect against multiple "
2111 "simultaneous accesses of the shadow password database. It tries to acquire "
2112 "a lock, and returns 0 on success, or -1 on failure (lock not obtained within "
2113 "15 seconds). The B<ulckpwdf>() function releases the lock again. Note "
2114 "that there is no protection against direct access of the shadow password "
2115 "file. Only programs that use B<lckpwdf>() will notice the lock."
2119 #. SUN doesn't have sgetspent()
2121 #: build/C/man3/getspnam.3:164
2123 "These were the functions that formed the original shadow API. They are "
2128 #: build/C/man3/getspnam.3:164
2130 msgid "Reentrant versions"
2134 #: build/C/man3/getspnam.3:181
2136 "Analogous to the reentrant functions for the password database, glibc also "
2137 "has reentrant functions for the shadow password database. The "
2138 "B<getspnam_r>() function is like B<getspnam>() but stores the retrieved "
2139 "shadow password structure in the space pointed to by I<spbuf>. This shadow "
2140 "password structure contains pointers to strings, and these strings are "
2141 "stored in the buffer I<buf> of size I<buflen>. A pointer to the result (in "
2142 "case of success) or NULL (in case no entry was found or an error occurred) "
2143 "is stored in I<*spbufp>."
2147 #: build/C/man3/getspnam.3:188
2149 "The functions B<getspent_r>(), B<fgetspent_r>(), and B<sgetspent_r>() are "
2150 "similarly analogous to their nonreentrant counterparts."
2153 #. SUN doesn't have sgetspent_r()
2155 #: build/C/man3/getspnam.3:192
2157 "Some non-glibc systems also have functions with these names, often with "
2158 "different prototypes."
2162 #: build/C/man3/getspnam.3:192
2168 #: build/C/man3/getspnam.3:194
2170 "The shadow password structure is defined in I<E<lt>shadow.hE<gt>> as "
2175 #: build/C/man3/getspnam.3:214
2179 " char *sp_namp; /* Login name */\n"
2180 " char *sp_pwdp; /* Encrypted password */\n"
2181 " long sp_lstchg; /* Date of last change\n"
2182 " (measured in days since\n"
2183 " 1970-01-01 00:00:00 +0000 (UTC)) */\n"
2184 " long sp_min; /* Min # of days between changes */\n"
2185 " long sp_max; /* Max # of days between changes */\n"
2186 " long sp_warn; /* # of days before password expires\n"
2187 " to warn user to change it */\n"
2188 " long sp_inact; /* # of days after password expires\n"
2189 " until account is disabled */\n"
2190 " long sp_expire; /* Date when account expires\n"
2191 " (measured in days since\n"
2192 " 1970-01-01 00:00:00 +0000 (UTC)) */\n"
2193 " unsigned long sp_flag; /* Reserved */\n"
2198 #: build/C/man3/getspnam.3:223
2200 "The functions that return a pointer return NULL if no more entries are "
2201 "available or if an error occurs during processing. The functions which have "
2202 "I<int> as the return value return 0 for success and -1 for failure, with "
2203 "I<errno> set to indicate the cause of the error."
2207 #: build/C/man3/getspnam.3:226
2209 "For the nonreentrant functions, the return value may point to static area, "
2210 "and may be overwritten by subsequent calls to these functions."
2214 #: build/C/man3/getspnam.3:229
2216 "The reentrant functions return zero on success. In case of error, an error "
2217 "number is returned."
2221 #: build/C/man3/getspnam.3:230
2227 #: build/C/man3/getspnam.3:233
2228 msgid "The caller does not have permission to access the shadow password file."
2232 #: build/C/man3/getspnam.3:236
2233 msgid "Supplied buffer is too small."
2237 #: build/C/man3/getspnam.3:237
2239 msgid "I</etc/shadow>"
2243 #: build/C/man3/getspnam.3:240
2244 msgid "local shadow password database file"
2248 #: build/C/man3/getspnam.3:240
2250 msgid "I</etc/.pwd.lock>"
2254 #: build/C/man3/getspnam.3:243
2259 #: build/C/man3/getspnam.3:249
2261 "The include file I<E<lt>paths.hE<gt>> defines the constant B<_PATH_SHADOW> "
2262 "to the pathname of the shadow password file."
2266 #: build/C/man3/getspnam.3:253
2268 "The shadow password database and its associated API are not specified in "
2269 "POSIX.1-2001. However, many other systems provide a similar API."
2273 #: build/C/man3/getspnam.3:258
2274 msgid "B<getgrnam>(3), B<getpwnam>(3), B<getpwnam_r>(3), B<shadow>(5)"
2278 #: build/C/man5/group.5:26
2284 #: build/C/man5/group.5:29
2285 msgid "group - user group file"
2289 #: build/C/man5/group.5:34
2291 "The I</etc/group> file is a text file that defines the groups on the "
2292 "system. There is one entry per line, with the following format:"
2296 #: build/C/man5/group.5:37
2297 msgid "group_name:password:GID:user_list"
2301 #: build/C/man5/group.5:40
2302 msgid "The fields are as follows:"
2306 #: build/C/man5/group.5:40
2308 msgid "I<group_name>"
2312 #: build/C/man5/group.5:43
2313 msgid "the name of the group."
2317 #: build/C/man5/group.5:43 build/C/man5/passwd.5:91
2323 #: build/C/man5/group.5:47
2325 "the (encrypted) group password. If this field is empty, no password is "
2330 #: build/C/man5/group.5:47 build/C/man5/passwd.5:103
2336 #: build/C/man5/group.5:50
2337 msgid "the numeric group ID."
2341 #: build/C/man5/group.5:50
2343 msgid "I<user_list>"
2347 #: build/C/man5/group.5:53
2348 msgid "a list of the usernames that are members of this group, separated by commas."
2352 #: build/C/man5/group.5:55
2357 #: build/C/man5/group.5:61
2359 "As the 4.2BSD B<initgroups>(3) man page says: No-one seems to keep "
2360 "I</etc/group> up-to-date."
2364 #: build/C/man5/group.5:67
2365 msgid "B<login>(1), B<newgrp>(1), B<getgrent>(3), B<getgrnam>(3), B<passwd>(5)"
2369 #: build/C/man3/initgroups.3:32
2375 #: build/C/man3/initgroups.3:32
2381 #: build/C/man3/initgroups.3:35
2382 msgid "initgroups - initialize the supplementary group access list"
2386 #: build/C/man3/initgroups.3:41
2388 msgid "B<int initgroups(const char *>I<user>B<, gid_t >I<group>B<);>\n"
2392 #: build/C/man3/initgroups.3:50
2393 msgid "B<initgroups>(): _BSD_SOURCE"
2397 #: build/C/man3/initgroups.3:64
2399 "The B<initgroups>() function initializes the group access list by reading "
2400 "the group database I</etc/group> and using all groups of which I<user> is a "
2401 "member. The additional group I<group> is also added to the list."
2405 #: build/C/man3/initgroups.3:68
2406 msgid "The I<user> argument must be non-NULL."
2410 #: build/C/man3/initgroups.3:75
2412 "The B<initgroups>() function returns 0 on success. On error, -1 is "
2413 "returned, and I<errno> is set appropriately."
2417 #: build/C/man3/initgroups.3:79
2418 msgid "Insufficient memory to allocate group information structure."
2422 #: build/C/man3/initgroups.3:79
2428 #: build/C/man3/initgroups.3:84
2430 "The calling process has insufficient privilege. See the underlying system "
2431 "call B<setgroups>(2)."
2435 #: build/C/man3/initgroups.3:87
2437 msgid "I</etc/group>\t\tgroup database file\n"
2441 #: build/C/man3/initgroups.3:90
2442 msgid "SVr4, 4.3BSD."
2446 #: build/C/man3/initgroups.3:94
2447 msgid "B<getgroups>(2), B<setgroups>(2), B<credentials>(7)"
2451 #: build/C/man5/passwd.5:30
2457 #: build/C/man5/passwd.5:30
2463 #: build/C/man5/passwd.5:33
2464 msgid "passwd - password file"
2468 #: build/C/man5/passwd.5:41
2470 "The I</etc/passwd> file is a text file that describes user login accounts "
2471 "for the system. It should have read permission allowed for all users (many "
2472 "utilities, like B<ls>(1) use it to map user IDs to usernames), but write "
2473 "access only for the superuser."
2477 #: build/C/man5/passwd.5:53
2479 "In the good old days there was no great problem with this general read "
2480 "permission. Everybody could read the encrypted passwords, but the hardware "
2481 "was too slow to crack a well-chosen password, and moreover the basic "
2482 "assumption used to be that of a friendly user-community. These days many "
2483 "people run some version of the shadow password suite, where I</etc/passwd> "
2484 "has an \\(aqx\\(aq character in the password field, and the encrypted "
2485 "passwords are in I</etc/shadow>, which is readable by the superuser only."
2489 #: build/C/man5/passwd.5:62
2491 "If the encrypted password, whether in I</etc/passwd> or in I</etc/shadow>, "
2492 "is an empty string, login is allowed without even asking for a password. "
2493 "Note that this functionality may be intentionally disabled in applications, "
2494 "or configurable (for example using the \"nullok\" or \"nonull\" arguments to "
2499 #: build/C/man5/passwd.5:67
2501 "If the encrypted password in I</etc/passwd> is \"I<*NP*>\" (without the "
2502 "quotes), the shadow record should be obtained from an NIS+ server."
2506 #: build/C/man5/passwd.5:73
2508 "Regardless of whether shadow passwords are used, many system administrators "
2509 "use an asterisk (*) in the encrypted password field to make sure that this "
2510 "user can not authenticate him- or herself using a password. (But see NOTES "
2515 #: build/C/man5/passwd.5:78
2517 "If you create a new login, first put an asterisk (*) in the password field, "
2518 "then use B<passwd>(1) to set it."
2522 #: build/C/man5/passwd.5:81
2524 "Each line of the file describes a single user, and contains seven "
2525 "colon-separated fields:"
2529 #: build/C/man5/passwd.5:84
2530 msgid "name:password:UID:GID:GECOS:directory:shell"
2534 #: build/C/man5/passwd.5:87
2535 msgid "The field are as follows:"
2539 #: build/C/man5/passwd.5:87
2545 #: build/C/man5/passwd.5:91
2546 msgid "This is the user's login name. It should not contain capital letters."
2550 #: build/C/man5/passwd.5:98
2552 "This is either the encrypted user password, an asterisk (*), or the letter "
2553 "\\(aqx\\(aq. (See B<pwconv>(8) for an explanation of \\(aqx\\(aq.)"
2557 #: build/C/man5/passwd.5:98
2563 #: build/C/man5/passwd.5:103
2564 msgid "The privileged I<root> login account (superuser) has the user ID 0."
2568 #: build/C/man5/passwd.5:108
2570 "This is the numeric primary group ID for this user. (Additional groups for "
2571 "the user are defined in the system group file; see B<group>(5))."
2575 #: build/C/man5/passwd.5:108
2581 #: build/C/man5/passwd.5:116
2583 "This field (sometimes called the \"comment field\") is optional and used "
2584 "only for informational purposes. Usually, it contains the full username. "
2585 "Some programs (for example, B<finger>(1)) display information from this "
2590 #: build/C/man5/passwd.5:125
2592 "GECOS stands for \"General Electric Comprehensive Operating System\", which "
2593 "was renamed to GCOS when GE's large systems division was sold to Honeywell. "
2594 "Dennis Ritchie has reported: \"Sometimes we sent printer output or batch "
2595 "jobs to the GCOS machine. The gcos field in the password file was a place "
2596 "to stash the information for the $IDENTcard. Not elegant.\""
2600 #: build/C/man5/passwd.5:125
2602 msgid "I<directory>"
2606 #: build/C/man5/passwd.5:132
2608 "This is the user's home directory: the initial directory where the user is "
2609 "placed after logging in. The value in this field is used to set the B<HOME> "
2610 "environment variable."
2614 #: build/C/man5/passwd.5:132
2620 #: build/C/man5/passwd.5:142
2622 "This is the program to run at login (if empty, use I</bin/sh>). If set to a "
2623 "nonexistent executable, the user will be unable to login through "
2624 "B<login>(1). The value in this field is used to set the B<SHELL> "
2625 "environment variable."
2629 #: build/C/man5/passwd.5:148
2631 "If you want to create user groups, there must be an entry in I</etc/group>, "
2632 "or no group will exist."
2636 #: build/C/man5/passwd.5:162
2638 "If the encrypted password is set to an asterisk (*), the user will be unable "
2639 "to login using B<login>(1), but may still login using B<rlogin>(1), run "
2640 "existing processes and initiate new ones through B<rsh>(1), B<cron>(8), "
2641 "B<at>(1), or mail filters, etc. Trying to lock an account by simply "
2642 "changing the shell field yields the same result and additionally allows the "
2647 #: build/C/man5/passwd.5:171
2649 "B<login>(1), B<passwd>(1), B<su>(1), B<crypt>(3), B<getpwent>(3), "
2650 "B<getpwnam>(3), B<group>(5), B<shadow>(5)"
2654 #: build/C/man3/putgrent.3:7
2660 #: build/C/man3/putgrent.3:7 build/C/man3/setaliasent.3:9
2666 #: build/C/man3/putgrent.3:10
2667 msgid "putgrent - write a group database entry to a file"
2671 #: build/C/man3/putgrent.3:12
2672 msgid "B<#define _GNU_SOURCE> /* See feature_test_macros(7) */"
2676 #: build/C/man3/putgrent.3:16
2677 msgid "B<int putgrent(const struct group *>I<grp>B<, FILE *>I<fp>B<);>"
2681 #: build/C/man3/putgrent.3:27
2683 "The B<putgrent>() function is the counterpart for B<fgetgrent>(3). The "
2684 "function writes the content of the provided I<struct group> into the file "
2685 "pointed to by I<fp>. The list of group members must be NULL-terminated or "
2690 #: build/C/man3/putgrent.3:31
2691 msgid "The I<struct group> is defined as follows:"
2695 #: build/C/man3/putgrent.3:40
2699 " char *gr_name; /* group name */\n"
2700 " char *gr_passwd; /* group password */\n"
2701 " gid_t gr_gid; /* group ID */\n"
2702 " char **gr_mem; /* group members */\n"
2707 #: build/C/man3/putgrent.3:44
2708 msgid "The function returns zero on success, and a nonzero value on error."
2712 #: build/C/man3/putgrent.3:46
2713 msgid "This function is a GNU extension."
2717 #: build/C/man3/putgrent.3:50
2718 msgid "B<fgetgrent>(3), B<getgrent>(3), B<group>(5)"
2722 #: build/C/man3/putpwent.3:30
2728 #: build/C/man3/putpwent.3:33
2729 msgid "putpwent - write a password file entry"
2733 #: build/C/man3/putpwent.3:40
2735 msgid "B<int putpwent(const struct passwd *>I<p>B<, FILE *>I<stream>B<);>\n"
2739 #: build/C/man3/putpwent.3:49
2740 msgid "B<putpwent>(): _SVID_SOURCE"
2744 #: build/C/man3/putpwent.3:54
2746 "The B<putpwent>() function writes a password entry from the structure I<p> "
2747 "in the file associated with I<stream>."
2751 #: build/C/man3/putpwent.3:68
2755 " char *pw_name; /* username */\n"
2756 " char *pw_passwd; /* user password */\n"
2757 " uid_t pw_uid; /* user ID */\n"
2758 " gid_t pw_gid; /* group ID */\n"
2759 " char *pw_gecos; /* real name */\n"
2760 " char *pw_dir; /* home directory */\n"
2761 " char *pw_shell; /* shell program */\n"
2766 #: build/C/man3/putpwent.3:78
2768 "The B<putpwent>() function returns 0 on success, or -1 if an error occurs. "
2769 "In the event of an error, I<errno> is set to indicate the cause."
2773 #: build/C/man3/putpwent.3:82
2774 msgid "Invalid (NULL) argument given."
2778 #: build/C/man3/putpwent.3:92
2780 "B<endpwent>(3), B<fgetpwent>(3), B<getpw>(3), B<getpwent>(3), "
2781 "B<getpwnam>(3), B<getpwuid>(3), B<setpwent>(3)"
2785 #: build/C/man3/setaliasent.3:9
2791 #: build/C/man3/setaliasent.3:13
2793 "setaliasent, endaliasent, getaliasent, getaliasent_r, getaliasbyname, "
2794 "getaliasbyname_r - read an alias entry"
2798 #: build/C/man3/setaliasent.3:15
2799 msgid "B<#include E<lt>aliases.hE<gt>>"
2803 #: build/C/man3/setaliasent.3:17
2804 msgid "B<void setaliasent(void);>"
2808 #: build/C/man3/setaliasent.3:19
2809 msgid "B<void endaliasent(void);>"
2813 #: build/C/man3/setaliasent.3:21
2814 msgid "B<struct aliasent *getaliasent(void);>"
2818 #: build/C/man3/setaliasent.3:23
2819 msgid "B<int getaliasent_r(struct aliasent *>I<result>B<,>"
2823 #: build/C/man3/setaliasent.3:25 build/C/man3/setaliasent.3:31
2824 msgid "B< char *>I<buffer>B<, size_t >I<buflen>B<, struct aliasent **>I<res>B<);>"
2828 #: build/C/man3/setaliasent.3:27
2829 msgid "B<struct aliasent *getaliasbyname(const char *>I<name>B<);>"
2833 #: build/C/man3/setaliasent.3:29
2835 "B<int getaliasbyname_r(const char *>I<name>B<, struct aliasent "
2840 #: build/C/man3/setaliasent.3:37
2842 "One of the databases available with the Name Service Switch (NSS) is the "
2843 "aliases database, that contains mail aliases. (To find out which databases "
2844 "are supported, try I<getent --help>.) Six functions are provided to access "
2845 "the aliases database."
2849 #: build/C/man3/setaliasent.3:44
2851 "The B<getaliasent>() function returns a pointer to a structure containing "
2852 "the group information from the aliases database. The first time it is "
2853 "called it returns the first entry; thereafter, it returns successive "
2858 #: build/C/man3/setaliasent.3:49
2860 "The B<setaliasent>() function rewinds the file pointer to the beginning of "
2861 "the aliases database."
2865 #: build/C/man3/setaliasent.3:53
2866 msgid "The B<endaliasent>() function closes the aliases database."
2870 #: build/C/man3/setaliasent.3:60
2872 "B<getaliasent_r>() is the reentrant version of the previous function. The "
2873 "requested structure is stored via the first argument but the programmer "
2874 "needs to fill the other arguments also. Not providing enough space causes "
2875 "the function to fail."
2879 #: build/C/man3/setaliasent.3:66
2881 "The function B<getaliasbyname>() takes the name argument and searches the "
2882 "aliases database. The entry is returned as a pointer to a I<struct "
2887 #: build/C/man3/setaliasent.3:73
2889 "B<getaliasbyname_r>() is the reentrant version of the previous function. "
2890 "The requested structure is stored via the second argument but the programmer "
2891 "needs to fill the other arguments also. Not providing enough space causes "
2892 "the function to fail."
2896 #: build/C/man3/setaliasent.3:78
2897 msgid "The I<struct aliasent> is defined in I<E<lt>aliases.hE<gt>>:"
2901 #: build/C/man3/setaliasent.3:87
2904 "struct aliasent {\n"
2905 " char *alias_name; /* alias name */\n"
2906 " size_t alias_members_len;\n"
2907 " char **alias_members; /* alias name list */\n"
2908 " int alias_local;\n"
2913 #: build/C/man3/setaliasent.3:95
2915 "The functions B<getaliasent_r>() and B<getaliasbyname_r>() return a "
2916 "nonzero value on error."
2920 #: build/C/man3/setaliasent.3:101
2922 "The default alias database is the file I</etc/aliases>. This can be changed "
2923 "in the I</etc/nsswitch.conf> file."
2927 #: build/C/man3/setaliasent.3:104
2928 msgid "These routines are glibc-specific. The NeXT system has similar routines:"
2932 #: build/C/man3/setaliasent.3:108
2934 msgid "#include E<lt>aliasdb.hE<gt>\n"
2938 #: build/C/man3/setaliasent.3:113
2941 "void alias_setent(void);\n"
2942 "void alias_endent(void);\n"
2943 "alias_ent *alias_getent(void);\n"
2944 "alias_ent *alias_getbyname(char *name);\n"
2948 #: build/C/man3/setaliasent.3:119
2950 "The following example compiles with I<gcc example.c -o example>. It will "
2951 "dump all names in the alias database."
2955 #: build/C/man3/setaliasent.3:125
2958 "#include E<lt>aliases.hE<gt>\n"
2959 "#include E<lt>stdio.hE<gt>\n"
2960 "#include E<lt>stdlib.hE<gt>\n"
2961 "#include E<lt>errno.hE<gt>\n"
2965 #: build/C/man3/setaliasent.3:144
2971 " struct aliasent *al;\n"
2974 " al = getaliasent();\n"
2975 " if (al == NULL)\n"
2977 " printf(\"Name: %s\\en\", al-E<gt>alias_name);\n"
2980 " perror(\"reading alias\");\n"
2981 " exit(EXIT_FAILURE);\n"
2984 " exit(EXIT_SUCCESS);\n"
2989 #. /etc/sendmail/aliases
2991 #. newaliases, postalias
2993 #: build/C/man3/setaliasent.3:154
2994 msgid "B<getgrent>(3), B<getpwent>(3), B<getspent>(3), B<aliases>(5)"