]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - usr.sbin/pw/pw.8
Merge bmake-20230909
[FreeBSD/FreeBSD.git] / usr.sbin / pw / pw.8
1 .\" Copyright (C) 1996
2 .\" David L. Nugent.  All rights reserved.
3 .\"
4 .\" Redistribution and use in source and binary forms, with or without
5 .\" modification, are permitted provided that the following conditions
6 .\" are met:
7 .\" 1. Redistributions of source code must retain the above copyright
8 .\"    notice, this list of conditions and the following disclaimer.
9 .\" 2. Redistributions in binary form must reproduce the above copyright
10 .\"    notice, this list of conditions and the following disclaimer in the
11 .\"    documentation and/or other materials provided with the distribution.
12 .\"
13 .\" THIS SOFTWARE IS PROVIDED BY DAVID L. NUGENT AND CONTRIBUTORS ``AS IS'' AND
14 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16 .\" ARE DISCLAIMED.  IN NO EVENT SHALL DAVID L. NUGENT OR CONTRIBUTORS BE LIABLE
17 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23 .\" SUCH DAMAGE.
24 .\"
25 .Dd November 28, 2022
26 .Dt PW 8
27 .Os
28 .Sh NAME
29 .Nm pw
30 .Nd create, remove, modify & display system users and groups
31 .Sh SYNOPSIS
32 .Nm
33 .Op Fl R Ar rootdir
34 .Op Fl V Ar etcdir
35 .Cm useradd
36 .Oo Fl n Oc Ar name
37 .Op Fl mNoPq
38 .Op Fl C Ar config
39 .Op Fl c Ar comment
40 .Op Fl d Ar homedir
41 .Op Fl e Ar accexpdate
42 .Op Fl G Ar grouplist
43 .Op Fl g Ar group
44 .Op Fl H Ar fd
45 .Op Fl h Ar fd
46 .Op Fl k Ar skeldir
47 .Op Fl L Ar class
48 .Op Fl M Ar mode
49 .Op Fl p Ar passexpdate
50 .Op Fl s Ar shell
51 .Op Fl u Ar uid
52 .Op Fl w Ar passmethod
53 .Op Fl Y Op Fl y Ar nispasswd
54 .Nm
55 .Op Fl R Ar rootdir
56 .Op Fl V Ar etcdir
57 .Cm useradd
58 .Fl D
59 .Op Fl q
60 .Op Fl b Ar basehome
61 .Op Fl C Ar config
62 .Op Fl e Ar accexpdays
63 .Op Fl G Ar grouplist
64 .Op Fl g Ar group
65 .Op Fl i Ar mingid , Ns Ar maxgid
66 .Op Fl k Ar skeldir
67 .Op Fl M Ar mode
68 .Op Fl p Ar passexpdays
69 .Op Fl s Ar shell
70 .Op Fl u Ar minuid , Ns Ar maxuid
71 .Op Fl w Ar passmethod
72 .Op Fl Y Op Fl y Ar nispasswd
73 .Nm
74 .Op Fl R Ar rootdir
75 .Op Fl V Ar etcdir
76 .Cm userdel
77 .Oo Fl n Oc Ar name Ns | Ns Oo Fl u Oc Ar uid
78 .Op Fl r
79 .Op Fl Y Op Fl y Ar nispasswd
80 .Nm
81 .Op Fl R Ar rootdir
82 .Op Fl V Ar etcdir
83 .Cm usermod
84 .Oo Fl n Oc Ar name Ns | Ns Ar uid Oo Fl u Ar newuid Oc | Fl u Ar uid
85 .Op Fl mNPq
86 .Op Fl C Ar config
87 .Op Fl c Ar comment
88 .Op Fl d Ar homedir
89 .Op Fl e Ar accexpdate
90 .Op Fl k Ar skeldir
91 .Op Fl G Ar grouplist
92 .Op Fl g Ar group
93 .Op Fl H Ar fd
94 .Op Fl h Ar fd
95 .Op Fl L Ar class
96 .Op Fl l Ar newname
97 .Op Fl M Ar mode
98 .Op Fl p Ar passexpdate
99 .Op Fl s Ar shell
100 .Op Fl w Ar passmethod
101 .Op Fl Y Op Fl y Ar nispasswd
102 .Nm
103 .Op Fl R Ar rootdir
104 .Op Fl V Ar etcdir
105 .Cm usershow
106 .Oo Fl n Oc Ar name Ns | Ns Oo Fl u Oc Ar uid
107 .Op Fl 7aFP
108 .Nm
109 .Op Fl R Ar rootdir
110 .Op Fl V Ar etcdir
111 .Cm usernext
112 .Op Fl q
113 .Op Fl C Ar config
114 .Nm
115 .Op Fl R Ar rootdir
116 .Op Fl V Ar etcdir
117 .Cm groupadd
118 .Oo Fl n Oc Ar name
119 .Op Fl oNPqY
120 .Op Fl C Ar config
121 .Op Fl g Ar gid
122 .Op Fl H Ar fd
123 .Op Fl h Ar fd
124 .Op Fl M Ar members
125 .Nm
126 .Op Fl R Ar rootdir
127 .Op Fl V Ar etcdir
128 .Cm groupdel
129 .Oo Fl n Oc Ar name Ns | Ns Oo Fl g Oc Ar gid
130 .Op Fl Y
131 .Nm
132 .Op Fl R Ar rootdir
133 .Op Fl V Ar etcdir
134 .Cm groupmod
135 .Oo Fl n Oc Ar name Ns | Ns Ar gid Oo Fl g Ar newgid Oc | Fl g Ar gid
136 .Op Fl NPqY
137 .Op Fl C Ar config
138 .Op Fl d Ar oldmembers
139 .Op Fl H Ar fd
140 .Op Fl h Ar fd
141 .Op Fl l Ar newname
142 .Op Fl M Ar members
143 .Op Fl m Ar newmembers
144 .Nm
145 .Op Fl R Ar rootdir
146 .Op Fl V Ar etcdir
147 .Cm groupshow
148 .Oo Fl n Oc Ar name Ns | Ns Oo Fl g Oc Ar gid
149 .Op Fl aFP
150 .Nm
151 .Op Fl R Ar rootdir
152 .Op Fl V Ar etcdir
153 .Cm groupnext
154 .Op Fl C Ar config
155 .Op Fl q
156 .Nm
157 .Op Fl R Ar rootdir
158 .Op Fl V Ar etcdir
159 .Cm lock
160 .Oo Fl n Oc Ar name Ns | Ns Oo Fl u Oc Ar uid
161 .Op Fl q
162 .Op Fl C Ar config
163 .Nm
164 .Op Fl R Ar rootdir
165 .Op Fl V Ar etcdir
166 .Cm unlock
167 .Oo Fl n Oc Ar name Ns | Ns Oo Fl u Oc Ar uid
168 .Op Fl q
169 .Op Fl C Ar config
170 .Sh DESCRIPTION
171 The
172 .Nm
173 utility is a command-line based editor for the system
174 .Ar user
175 and
176 .Ar group
177 files, allowing the superuser an easy to use and standardized way of adding,
178 modifying and removing users and groups.
179 Note that
180 .Nm
181 only operates on the local user and group files.
182 .Tn NIS
183 users and groups must be
184 maintained on the
185 .Tn NIS
186 server.
187 The
188 .Nm
189 utility handles updating the
190 .Xr passwd 5 ,
191 .Xr master.passwd 5 ,
192 .Xr group 5
193 and the secure and insecure
194 password database files, and must be run as root.
195 .Pp
196 The first one or two keywords provided to
197 .Nm
198 on the command line provide the context for the remainder of the arguments.
199 The keywords
200 .Cm user
201 and
202 .Cm group
203 may be combined with
204 .Cm add ,
205 .Cm del ,
206 .Cm mod ,
207 .Cm show ,
208 or
209 .Cm next
210 in any order.
211 (For example,
212 .Cm showuser ,
213 .Cm usershow ,
214 .Cm show user ,
215 and
216 .Cm user show
217 all mean the same thing.)
218 This flexibility is useful for interactive scripts calling
219 .Nm
220 for user and group database manipulation.
221 Following these keywords,
222 the user or group name or numeric id may be optionally specified as an
223 alternative to using the
224 .Fl n Ar name ,
225 .Fl u Ar uid ,
226 .Fl g Ar gid
227 options.
228 .Pp
229 The following flags are common to most or all modes of operation:
230 .Bl -tag -width "-G grouplist"
231 .It Fl R Ar rootdir
232 Specifies an alternate root directory within which
233 .Nm
234 will operate.
235 Any paths specified will be relative to
236 .Va rootdir .
237 .It Fl V Ar etcdir
238 Set an alternate location for the password, group, and configuration files.
239 Can be used to maintain a user/group database in an alternate location.
240 If this switch is specified, the system
241 .Pa /etc/pw.conf
242 will not be sourced for default configuration data,
243 but the file
244 .Pa pw.conf
245 in the specified directory will be used instead
246 .Pq or none, if it does not exist .
247 The
248 .Fl C
249 flag may be used to override this behaviour.
250 As an exception to the general rule where options must follow the operation
251 type, the
252 .Fl V
253 flag must be used on the command line before the operation keyword.
254 .It Fl C Ar config
255 By default,
256 .Nm
257 reads the file
258 .Pa /etc/pw.conf
259 to obtain policy information on how new user accounts and groups are to be created.
260 The
261 .Fl C
262 option specifies a different configuration file.
263 While most of the contents of the configuration file may be overridden via
264 command-line options, it may be more convenient to keep standard information in a
265 configuration file.
266 .It Fl q
267 Use of this option causes
268 .Nm
269 to suppress error messages,
270 which may be useful in interactive environments where it
271 is preferable to interpret status codes returned by
272 .Nm
273 rather than messing up a carefully formatted display.
274 .It Fl N
275 This option is available in
276 .Cm add
277 and
278 .Cm modify
279 operations, and tells
280 .Nm
281 to output the result of the operation without updating the user or group
282 databases.
283 You may use the
284 .Fl P
285 option to switch between standard passwd and readable formats.
286 .It Fl Y
287 Using this option with any of the update modes causes
288 .Nm
289 to run
290 .Xr make 1
291 after changing to the directory
292 .Pa /var/yp .
293 This is intended to allow automatic updating of
294 .Tn NIS
295 database files.
296 If separate passwd and group files are being used by
297 .Tn NIS ,
298 then use the
299 .Fl y Ar nispasswd
300 option to specify the location of the
301 .Tn NIS
302 passwd database so that
303 .Nm
304 will concurrently update it with the system password
305 databases.
306 .El
307 .Sh USER OPTIONS
308 The following options apply to the
309 .Cm useradd
310 and
311 .Cm usermod
312 commands:
313 .Bl -tag -width "-G grouplist"
314 .It Oo Fl n Oc Ar name
315 Required unless
316 .Fl u Ar uid
317 is given.
318 Specify the user/account name.
319 In the case of
320 .Cm usermod
321 can be a
322 .Ar uid .
323 .It Fl u Ar uid
324 Required if
325 .Ar name
326 is not given.
327 Specify the user/account numeric id.
328 In the case of
329 .Cm usermod
330 if paired with
331 .Ar name ,
332 changes the numeric id of the named user/account.
333 .Pp
334 Usually, only one of these options is required,
335 as the account name will imply the uid, or vice versa.
336 However, there are times when both are needed.
337 For example, when changing the uid of an existing user with
338 .Cm usermod ,
339 or overriding the default uid when creating a new account with
340 .Cm useradd .
341 To automatically allocate the uid to a new user with
342 .Cm useradd ,
343 then do
344 .Em not
345 use the
346 .Fl u
347 option.
348 Either the account or userid can also be provided immediately after the
349 .Cm useradd ,
350 .Cm userdel ,
351 .Cm usermod ,
352 or
353 .Cm usershow
354 keywords on the command line without using the
355 .Fl n
356 or
357 .Fl u
358 options.
359 .El
360 .Bl -tag -width "-G grouplist"
361 .It Fl c Ar comment
362 This field sets the contents of the passwd GECOS field,
363 which normally contains up to four comma-separated fields containing the
364 user's full name, office or location,
365 and work and home phone numbers.
366 These sub-fields are used by convention only, however, and are optional.
367 If this field is to contain spaces,
368 the comment must be enclosed in double quotes
369 .Ql \&" .
370 Avoid using commas in this field as these are used as sub-field separators,
371 and the colon
372 .Ql \&:
373 character also cannot be used as this is the field separator for the passwd
374 file itself.
375 .It Fl d Ar homedir
376 This option sets the account's home directory.
377 Normally,
378 this is only used if the home directory is to be different from the
379 default determined from
380 .Pa /etc/pw.conf
381 - normally
382 .Pa /home
383 with the account name as a subdirectory.
384 .It Fl e Ar accexpdate
385 Set the account's expiration date.
386 Format of the date is either a UNIX time in decimal, or a date in
387 .Ql dd-mmm-yy[yy]
388 format, where dd is the day,
389 mmm is the month, either in numeric or alphabetic format
390 ('Jan', 'Feb', etc) and year is either a two or four digit year.
391 This option also accepts a relative date in the form
392 .Ql \&+n[mhdwoy]
393 where
394 .Ql \&n
395 is a decimal,
396 octal (leading 0) or hexadecimal (leading 0x) digit followed by the
397 number of Minutes, Hours, Days, Weeks, Months or Years from the current date at
398 which the expiration date is to be set.
399 .It Fl p Ar passexpdate
400 Set the account's password expiration date.
401 This field is similar to the account expiration date option, except that it
402 applies to forced password changes.
403 This is set in the same manner as the
404 .Fl e
405 option.
406 .It Fl g Ar group
407 Set the account's primary group to the given group.
408 .Ar group
409 may be defined by either its name or group number.
410 .It Fl G Ar grouplist
411 Set secondary group memberships for an account.
412 .Ar grouplist
413 is a comma, space, or tab-separated list of group names or group numbers.
414 The user is added to the groups specified in
415 .Ar grouplist ,
416 and removed from all groups not specified.
417 The current login session is not affected by group membership changes,
418 which only take effect when the user reconnects.
419 Note: do not add a user to their primary group with
420 .Ar grouplist .
421 .It Fl L Ar class
422 This option sets the login class for the user being created.
423 See
424 .Xr login.conf 5
425 and
426 .Xr passwd 5
427 for more information on user login classes.
428 .It Fl m
429 This option instructs
430 .Nm
431 to attempt to create the user's home directory.
432 While primarily useful when adding a new account with
433 .Cm useradd ,
434 this may also be of use when moving an existing user's home directory elsewhere
435 on the file system.
436 The new home directory is populated with the contents of the
437 .Ar skeleton
438 directory, which typically contains a set of shell configuration files that the
439 user may personalize to taste.
440 Files in this directory are usually named
441 .Pa dot . Ns Aq Ar config
442 where the
443 .Pa dot
444 prefix will be stripped.
445 When
446 .Fl m
447 is used on an account with
448 .Cm usermod ,
449 existing configuration files in the user's home directory are
450 .Em not
451 overwritten from the skeleton files.
452 .Pp
453 When a user's home directory is created,
454 it will by default be a subdirectory of the
455 .Ar basehome
456 directory as specified by the
457 .Fl b
458 option, bearing the name of the new account.
459 This can be overridden by the
460 .Fl d
461 option on the command line, if desired.
462 .It Fl M Ar mode
463 Create the user's home directory with the specified
464 .Ar mode ,
465 modified by the current
466 .Xr umask 2 .
467 If omitted, it is derived from the parent process'
468 .Xr umask 2 .
469 This option is only useful in combination with the
470 .Fl m
471 flag.
472 .It Fl k Ar skeldir
473 Set the
474 .Ar skeleton
475 directory, from which basic startup and configuration files are copied when
476 the user's home directory is created.
477 This option only has meaning when used with the
478 .Fl d
479 or
480 .Fl m
481 flags.
482 .It Fl s Ar shell
483 Set or changes the user's login shell to
484 .Ar shell .
485 If the path to the shell program is omitted,
486 .Nm
487 searches the
488 .Ar shellpath
489 specified in
490 .Pa /etc/pw.conf
491 and fills it in as appropriate.
492 Note that unless you have a specific reason to do so, you should avoid
493 specifying the path - this will allow
494 .Nm
495 to validate that the program exists and is executable.
496 Specifying a full path (or supplying a blank "" shell) avoids this check
497 and allows for such entries as
498 .Pa /nonexistent
499 that should be set for accounts not intended for interactive login.
500 .It Fl h Ar fd
501 This option provides a special interface by which interactive scripts can
502 set an account password using
503 .Nm .
504 Because the command line and environment are fundamentally insecure mechanisms
505 by which programs can accept information,
506 .Nm
507 will only allow setting of account and group passwords via a file descriptor
508 (usually a pipe between an interactive script and the program).
509 .Ar sh ,
510 .Ar bash ,
511 .Ar ksh
512 and
513 .Ar perl
514 all possess mechanisms by which this can be done.
515 Alternatively,
516 .Nm
517 will prompt for the user's password if
518 .Fl h Ar 0
519 is given, nominating
520 .Em stdin
521 as the file descriptor on which to read the password.
522 Note that this password will be read only once and is intended
523 for use by a script rather than for interactive use.
524 If you wish to have new password confirmation along the lines of
525 .Xr passwd 1 ,
526 this must be implemented as part of an interactive script that calls
527 .Nm .
528 .Pp
529 If a value of
530 .Ql \&-
531 is given as the argument
532 .Ar fd ,
533 then the password will be set to
534 .Ql \&* ,
535 rendering the account inaccessible via password-based login.
536 .It Fl H Ar fd
537 Read an encrypted password string from the specified file descriptor.
538 This is like
539 .Fl h ,
540 but the password should be supplied already encrypted in a form
541 suitable for writing directly to the password database.
542 See
543 .Xr openssl-passwd 1
544 and
545 .Xr crypt 3
546 for more details about generating an encrypted password hash.
547 .El
548 .Pp
549 It is possible to use
550 .Cm useradd
551 to create a new account that duplicates an existing user id.
552 While this is normally considered an error and will be rejected, the
553 .Fl o
554 option overrides the check for duplicates and allows the duplication of
555 the user id.
556 This may be useful if you allow the same user to login under
557 different contexts (different group allocations, different home
558 directory, different shell) while providing basically the same
559 permissions for access to the user's files in each account.
560 .Pp
561 The
562 .Cm useradd
563 command also has the ability to set new user and group defaults by using the
564 .Fl D
565 option.
566 Instead of adding a new user,
567 .Nm
568 writes a new set of defaults to its configuration file,
569 .Pa /etc/pw.conf .
570 When using the
571 .Fl D
572 option, you must not use either
573 .Fl n Ar name
574 or
575 .Fl u Ar uid
576 or an error will result.
577 Use of
578 .Fl D
579 changes the meaning of several command line switches in the
580 .Ar useradd
581 command.
582 These are:
583 .Bl -tag -width "-G grouplist"
584 .It Fl D
585 Set default values in
586 .Pa /etc/pw.conf
587 configuration file, or a different named configuration file if the
588 .Fl C Ar config
589 option is used.
590 .It Fl b Ar basehome
591 Set the root directory in which user home directories are created.
592 The default value for this is
593 .Pa /home ,
594 but it may be set elsewhere as desired.
595 .It Fl e Ar accexpdays
596 Set the default account expiration period in days.
597 When
598 .Fl D
599 is used, the
600 .Ar accexpdays
601 argument is interpreted differently.
602 It must be numeric and represents the number of days after creation
603 that the account expires.
604 A value of 0 suppresses automatic calculation of the expiry date.
605 .It Fl p Ar passexpdays
606 Set the default password expiration period in days.
607 When
608 .Fl D
609 is used, the
610 .Ar passexpdays
611 argument is interpreted differently.
612 It must be numeric and represents the number of days after creation
613 that the account expires.
614 A value of 0 suppresses automatic calculation of the expiry date.
615 .It Fl g Ar group
616 Set the default group for new users.
617 If a blank group is specified using
618 .Fl g Ar \&"" ,
619 then new users will be allocated their own private primary group
620 with the same name as their login name.
621 If a group is supplied, either its name or uid may be given as an argument.
622 .It Fl G Ar grouplist
623 Set the default groups in which new users are granted membership.
624 This is a separate set of groups from the primary group.
625 Avoid nominating the same group as both primary and extra groups.
626 In other words, these extra groups determine membership in groups
627 .Em other than
628 the primary group.
629 .Ar grouplist
630 is a comma-separated list of group names or ids, and are always
631 stored in
632 .Pa /etc/pw.conf
633 by their symbolic names.
634 .It Fl L Ar class
635 This option sets the default login class for new users.
636 .It Fl k Ar skeldir
637 Set the default
638 .Em skeleton
639 directory,
640 from which prototype shell and other initialization files are copied when
641 .Nm
642 creates a user's home directory.
643 See description of
644 .Fl k
645 for naming conventions of these files.
646 .It Xo
647 .Fl u Ar minuid Ns Cm \&, Ns Ar maxuid ,
648 .Fl i Ar mingid Ns Cm \&, Ns Ar maxgid
649 .Xc
650 Set the minimum and maximum user and group ids allocated for new
651 accounts and groups created by
652 .Nm .
653 The default values for each is 1000 minimum and 32000 maximum.
654 .Ar minuid
655 and
656 .Ar maxuid
657 are both numbers, where max must be greater than min,
658 and both must be between 0 and 32767
659 .Po the same applies to
660 .Ar mingid
661 and
662 .Ar maxgid
663 .Pc .
664 In general,
665 user and group ids less than 100 are reserved for use by the system,
666 and numbers greater than 32000 may also be reserved for special purposes
667 .Pq used by some system daemons .
668 .It Fl w Ar passmethod
669 The
670 .Fl w
671 option selects the default method used to set passwords for newly created user
672 accounts.
673 .Ar passmethod
674 is one of:
675 .Pp
676 .Bl -tag -width random -offset indent -compact
677 .It Cm no
678 disable login on newly created accounts
679 .It Cm yes
680 force the password to be the account name
681 .It Cm none
682 force a blank password
683 .It Cm random
684 generate a random password
685 .El
686 .Pp
687 The
688 .Cm random
689 or
690 .Cm no
691 methods are the most secure; in the former case,
692 .Nm
693 generates a password and prints it to stdout,
694 which is suitable when users are issued passwords rather than being allowed
695 to select their own
696 .Pq possibly poorly chosen
697 password.
698 The
699 .Cm no
700 method requires that the superuser use
701 .Xr passwd 1
702 to render the account accessible with a password.
703 .It Fl y Ar path
704 This sets the pathname of the database used by
705 .Tn NIS
706 if you are not sharing
707 the information from
708 .Pa /etc/master.passwd
709 directly with
710 .Tn NIS .
711 You should only set this option for
712 .Tn NIS
713 servers.
714 .El
715 .Pp
716 The
717 .Cm userdel
718 command has three distinct options.
719 The
720 .Fl n Ar name
721 and
722 .Fl u Ar uid
723 options have already been covered above.
724 The additional option is:
725 .Bl -tag -width "-G grouplist"
726 .It Fl r
727 This tells
728 .Nm
729 to remove the user's home directory and all of its contents.
730 The
731 .Nm
732 utility errs on the side of caution when removing files from the system.
733 Firstly,
734 it will not do so if the uid of the account being removed is also used by
735 another account on the system, and the
736 .Dq home
737 directory in the password file is
738 a valid path that commences with the character
739 .Ql \&/ .
740 Secondly, it will only remove files and directories that are actually owned by
741 the user, or symbolic links owned by anyone under the user's home directory.
742 Finally, after deleting all contents owned by the user only empty directories
743 will be removed.
744 If any additional cleanup work is required, this is left to the administrator.
745 .El
746 .Pp
747 Mail spool files and
748 .Xr crontab 5
749 files are always removed when an account is deleted as
750 these are unconditionally attached to the user name.
751 Jobs queued for processing by
752 .Xr at 1
753 are also removed if the user's uid is unique and not also used by another
754 account on the system.
755 .Pp
756 The
757 .Cm usermod
758 command adds one additional option:
759 .Bl -tag -width "-G grouplist"
760 .It Fl l Ar newname
761 This option allows changing of an existing account name to
762 .Ar newname .
763 The new name must not already exist, and any attempt to duplicate an
764 existing account name will be rejected.
765 .El
766 .Pp
767 The
768 .Cm usershow
769 command allows viewing of an account in one of two formats.
770 By default, the format is identical to the format used in
771 .Pa /etc/master.passwd
772 with the password field replaced with a
773 .Ql \&* .
774 If the
775 .Fl P
776 option is used, then
777 .Nm
778 outputs the account details in a more human readable form.
779 If the
780 .Fl 7
781 option is used, the account details are shown in v7 format.
782 The
783 .Fl a
784 option lists all users currently on file.
785 Using
786 .Fl F
787 forces
788 .Nm
789 to print the details of an account even if it does not exist.
790 .Pp
791 The command
792 .Cm usernext
793 returns the next available user and group ids separated by a colon.
794 This is normally of interest only to interactive scripts or front-ends
795 that use
796 .Nm .
797 .Sh GROUP OPTIONS
798 The
799 .Fl C
800 and
801 .Fl q
802 options (explained at the start of the previous section) are available
803 with the group manipulation commands.
804 Other common options to all group-related commands are:
805 .Bl -tag -width "-m newmembers"
806 .It Oo Fl n Oc Ar name
807 Required unless
808 .Fl g Ar gid
809 is given.
810 Specify the group name.
811 In the case of
812 .Cm groupmod
813 can be a gid.
814 .It Fl g Ar gid
815 Required if
816 .Ar name
817 is not given.
818 Specify the group numeric id.
819 In the case of
820 .Cm groupmod
821 if paired with
822 .Ar name ,
823 changes the numeric id of the named group.
824 .Pp
825 As with the account name and id fields, you will usually only need
826 to supply one of these, as the group name implies the uid and vice
827 versa.
828 You will only need to use both when setting a specific group id
829 against a new group or when changing the uid of an existing group.
830 .It Fl M Ar memberlist
831 This option provides an alternative way to add existing users to a
832 new group
833 .Pq in Cm groupadd
834 or replace an existing membership list
835 .Pq in Cm groupmod .
836 .Ar memberlist
837 is a comma separated list of valid and existing user names or uids.
838 .It Fl m Ar newmembers
839 Similar to
840 .Fl M ,
841 this option allows the
842 .Em addition
843 of existing users to a group without replacing the existing list of
844 members.
845 Login names or user ids may be used, and duplicate users are
846 silently eliminated.
847 .It Fl d Ar oldmembers
848 Similar to
849 .Fl M ,
850 this option allows the
851 .Em deletion
852 of existing users from a group without replacing the existing list of
853 members.
854 Login names or user ids may be used, and duplicate users are
855 silently eliminated.
856 .El
857 .Pp
858 .Cm groupadd
859 also has a
860 .Fl o
861 option that allows allocation of an existing group id to a new group.
862 The default action is to reject an attempt to add a group,
863 and this option overrides the check for duplicate group ids.
864 There is rarely any need to duplicate a group id.
865 .Pp
866 The
867 .Cm groupmod
868 command adds one additional option:
869 .Bl -tag -width "-m newmembers"
870 .It Fl l Ar newname
871 This option allows changing of an existing group name to
872 .Ar newname .
873 The new name must not already exist,
874 and any attempt to duplicate an existing group
875 name will be rejected.
876 .El
877 .Pp
878 Options for
879 .Cm groupshow
880 are the same as for
881 .Cm usershow ,
882 with the
883 .Fl g Ar gid
884 replacing
885 .Fl u Ar uid
886 to specify the group id.
887 The
888 .Fl 7
889 option does not apply to the
890 .Cm groupshow
891 command.
892 .Pp
893 The command
894 .Cm groupnext
895 returns the next available group id on standard output.
896 .Sh USER LOCKING
897 The
898 .Nm
899 utility
900 supports a simple password locking mechanism for users; it works by
901 prepending the string
902 .Ql *LOCKED*
903 to the beginning of the password field in
904 .Xr master.passwd 5
905 to prevent successful authentication.
906 .Pp
907 The
908 .Cm lock
909 and
910 .Cm unlock
911 commands take a user name or uid of the account to lock or unlock,
912 respectively.
913 The
914 .Fl V ,
915 .Fl C ,
916 and
917 .Fl q
918 options as described above are accepted by these commands.
919 .Sh NOTES
920 For a summary of options available with each command, you can use
921 .Dl pw [command] help
922 For example,
923 .Dl pw useradd help
924 lists all available options for the
925 .Cm useradd
926 operation.
927 .Pp
928 The
929 .Nm
930 utility allows 8-bit characters in the passwd GECOS field (user's full name,
931 office, work and home phone number subfields), but disallows them in
932 user login and group names.
933 Use 8-bit characters with caution, as connection to the Internet will
934 require that your mail transport program supports 8BITMIME, and will
935 convert headers containing 8-bit characters to 7-bit quoted-printable
936 format.
937 .Xr sendmail 8
938 does support this.
939 Use of 8-bit characters in the GECOS field should be used in
940 conjunction with the user's default locale and character set
941 and should not be implemented without their use.
942 Using 8-bit characters may also affect other
943 programs that transmit the contents of the GECOS field over the
944 Internet, such as
945 .Xr fingerd 8 ,
946 and a small number of TCP/IP clients, such as IRC, where full names
947 specified in the passwd file may be used by default.
948 .Pp
949 The
950 .Nm
951 utility writes a log to the
952 .Pa /var/log/userlog
953 file when actions such as user or group additions or deletions occur.
954 The location of this logfile can be changed in
955 .Xr pw.conf 5 .
956 .Sh FILES
957 .Bl -tag -width /etc/master.passwd.new -compact
958 .It Pa /etc/master.passwd
959 The user database
960 .It Pa /etc/passwd
961 A Version 7 format password file
962 .It Pa /etc/login.conf
963 The user capabilities database
964 .It Pa /etc/group
965 The group database
966 .It Pa /etc/pw.conf
967 Pw default options file
968 .It Pa /var/log/userlog
969 User/group modification logfile
970 .El
971 .Sh EXAMPLES
972 Add new user Glurmo Smith (gsmith).
973 A gsmith login group is created if not already present.
974 The login shell is set to
975 .Xr csh 1 .
976 A new home directory at
977 .Pa /home/gsmith
978 is created if it does not already exist.
979 Finally, a random password is generated and displayed:
980 .Bd -literal -offset indent
981 pw useradd -n gsmith -c "Glurmo Smith" -s csh -m -w random
982 .Ed
983 .Pp
984 Delete the gsmith user and their home directory, including contents.
985 .Bd -literal -offset indent
986 pw userdel -n gsmith -r
987 .Ed
988 .Pp
989 Add the existing user jsmith to the wheel group,
990 in addition to the other groups jsmith is already a member of.
991 .Bd -literal -offset indent
992 pw groupmod wheel -m jsmith
993 .Ed
994 .Pp
995 Generate random password and show it in both plain text and
996 encrypted form not modifying any database.
997 .Bd -literal -offset indent
998 pw usermod nobody -Nw random
999 .Ed
1000 .Sh EXIT STATUS
1001 The
1002 .Nm
1003 utility returns EXIT_SUCCESS on successful operation, otherwise
1004 .Nm
1005 returns one of the
1006 following exit codes defined by
1007 .Xr sysexits 3
1008 as follows:
1009 .Bl -tag -width xxxx
1010 .It EX_USAGE
1011 .Bl -bullet -compact
1012 .It
1013 Command line syntax errors (invalid keyword, unknown option).
1014 .El
1015 .It EX_NOPERM
1016 .Bl -bullet -compact
1017 .It
1018 Attempting to run one of the update modes as non-root.
1019 .El
1020 .It EX_OSERR
1021 .Bl -bullet -compact
1022 .It
1023 Memory allocation error.
1024 .It
1025 Read error from password file descriptor.
1026 .El
1027 .It EX_DATAERR
1028 .Bl -bullet -compact
1029 .It
1030 Bad or invalid data provided or missing on the command line or
1031 via the password file descriptor.
1032 .It
1033 Attempted to remove, rename root account or change its uid.
1034 .El
1035 .It EX_OSFILE
1036 .Bl -bullet -compact
1037 .It
1038 Skeleton directory is invalid or does not exist.
1039 .It
1040 Base home directory is invalid or does not exist.
1041 .It
1042 Invalid or non-existent shell specified.
1043 .El
1044 .It EX_NOUSER
1045 .Bl -bullet -compact
1046 .It
1047 User, user id, group or group id specified does not exist.
1048 .It
1049 User or group recorded, added, or modified unexpectedly disappeared.
1050 .El
1051 .It EX_SOFTWARE
1052 .Bl -bullet -compact
1053 .It
1054 No more group or user ids available within specified range.
1055 .El
1056 .It EX_IOERR
1057 .Bl -bullet -compact
1058 .It
1059 Unable to rewrite configuration file.
1060 .It
1061 Error updating group or user database files.
1062 .It
1063 Update error for passwd or group database files.
1064 .El
1065 .It EX_CONFIG
1066 .Bl -bullet -compact
1067 .It
1068 No base home directory configured.
1069 .El
1070 .El
1071 .Sh SEE ALSO
1072 .Xr chpass 1 ,
1073 .Xr passwd 1 ,
1074 .Xr umask 2 ,
1075 .Xr group 5 ,
1076 .Xr login.conf 5 ,
1077 .Xr passwd 5 ,
1078 .Xr pw.conf 5 ,
1079 .Xr pwd_mkdb 8 ,
1080 .Xr vipw 8
1081 .Sh HISTORY
1082 The
1083 .Nm
1084 utility was written to mimic many of the options used in the SYSV
1085 .Em shadow
1086 support suite, but is modified for passwd and group fields specific to
1087 the
1088 .Bx 4.4
1089 operating system, and combines all of the major elements
1090 into a single command.