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