xref: /freebsd/usr.sbin/pw/pw.8 (revision eebbeceec9812ff065fb03a10e66742094a12a11)
1db34a710SJoerg Wunsch.\" Copyright (C) 1996
2db34a710SJoerg Wunsch.\" David L. Nugent.  All rights reserved.
3d6f907dcSJoerg Wunsch.\"
49fd0dafcSJoerg Wunsch.\" Redistribution and use in source and binary forms, with or without
59fd0dafcSJoerg Wunsch.\" modification, are permitted provided that the following conditions
69fd0dafcSJoerg Wunsch.\" are met:
79fd0dafcSJoerg Wunsch.\" 1. Redistributions of source code must retain the above copyright
89fd0dafcSJoerg Wunsch.\"    notice, this list of conditions and the following disclaimer.
99fd0dafcSJoerg Wunsch.\" 2. Redistributions in binary form must reproduce the above copyright
109fd0dafcSJoerg Wunsch.\"    notice, this list of conditions and the following disclaimer in the
119fd0dafcSJoerg Wunsch.\"    documentation and/or other materials provided with the distribution.
12d6f907dcSJoerg Wunsch.\"
13db34a710SJoerg Wunsch.\" THIS SOFTWARE IS PROVIDED BY DAVID L. NUGENT AND CONTRIBUTORS ``AS IS'' AND
149fd0dafcSJoerg Wunsch.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
159fd0dafcSJoerg Wunsch.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16db34a710SJoerg Wunsch.\" ARE DISCLAIMED.  IN NO EVENT SHALL DAVID L. NUGENT OR CONTRIBUTORS BE LIABLE
179fd0dafcSJoerg Wunsch.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
189fd0dafcSJoerg Wunsch.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
199fd0dafcSJoerg Wunsch.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
209fd0dafcSJoerg Wunsch.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
219fd0dafcSJoerg Wunsch.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
229fd0dafcSJoerg Wunsch.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
239fd0dafcSJoerg Wunsch.\" SUCH DAMAGE.
249fd0dafcSJoerg Wunsch.\"
2597d92980SPeter Wemm.\" $FreeBSD$
269fd0dafcSJoerg Wunsch.\"
27eebbeceeSLukas Ertl.Dd March 27, 2007
28d6f907dcSJoerg Wunsch.Dt PW 8
29d6f907dcSJoerg Wunsch.Os
30d6f907dcSJoerg Wunsch.Sh NAME
31d6f907dcSJoerg Wunsch.Nm pw
329fd0dafcSJoerg Wunsch.Nd create, remove, modify & display system users and groups
33d6f907dcSJoerg Wunsch.Sh SYNOPSIS
34e97407b4SRuslan Ermilov.Nm
355f12594aSDavid Nugent.Op Fl V Ar etcdir
36d6f907dcSJoerg Wunsch.Ar useradd
37d6f907dcSJoerg Wunsch.Op name|uid
38d6f907dcSJoerg Wunsch.Op Fl C Ar config
39d6f907dcSJoerg Wunsch.Op Fl q
40d6f907dcSJoerg Wunsch.Op Fl n Ar name
41d6f907dcSJoerg Wunsch.Op Fl u Ar uid
42d6f907dcSJoerg Wunsch.Op Fl c Ar comment
43d6f907dcSJoerg Wunsch.Op Fl d Ar dir
44d6f907dcSJoerg Wunsch.Op Fl e Ar date
45d6f907dcSJoerg Wunsch.Op Fl p Ar date
46d6f907dcSJoerg Wunsch.Op Fl g Ar group
47d6f907dcSJoerg Wunsch.Op Fl G Ar grouplist
48d6f907dcSJoerg Wunsch.Op Fl m
49eebbeceeSLukas Ertl.Op Fl M Ar mode
50d6f907dcSJoerg Wunsch.Op Fl k Ar dir
51f5875822SSADA Kenji.Op Fl w Ar method
52d6f907dcSJoerg Wunsch.Op Fl s Ar shell
53d6f907dcSJoerg Wunsch.Op Fl o
54d6f907dcSJoerg Wunsch.Op Fl L Ar class
5587d6b5caSIan Dowse.Op Fl h Ar fd | Fl H Ar fd
569fd0dafcSJoerg Wunsch.Op Fl N
579fd0dafcSJoerg Wunsch.Op Fl P
58f1d684faSDavid Nugent.Op Fl Y
59e97407b4SRuslan Ermilov.Nm
605f12594aSDavid Nugent.Op Fl V Ar etcdir
61d6f907dcSJoerg Wunsch.Ar useradd
62d6f907dcSJoerg Wunsch.Op name|uid
63f1d684faSDavid Nugent.Fl D
64d6f907dcSJoerg Wunsch.Op Fl C Ar config
65d6f907dcSJoerg Wunsch.Op Fl q
66d6f907dcSJoerg Wunsch.Op Fl b Ar dir
67d6f907dcSJoerg Wunsch.Op Fl e Ar days
68d6f907dcSJoerg Wunsch.Op Fl p Ar days
69d6f907dcSJoerg Wunsch.Op Fl g Ar group
70d6f907dcSJoerg Wunsch.Op Fl G Ar grouplist
71d6f907dcSJoerg Wunsch.Op Fl k Ar dir
72610a5778SRuslan Ermilov.Op Fl u Ar min , Ns Ar max
73610a5778SRuslan Ermilov.Op Fl i Ar min , Ns Ar max
74d6f907dcSJoerg Wunsch.Op Fl w Ar method
75d6f907dcSJoerg Wunsch.Op Fl s Ar shell
76f1d684faSDavid Nugent.Op Fl y Ar path
77e97407b4SRuslan Ermilov.Nm
785f12594aSDavid Nugent.Op Fl V Ar etcdir
79d6f907dcSJoerg Wunsch.Ar userdel
80d6f907dcSJoerg Wunsch.Op name|uid
81d6f907dcSJoerg Wunsch.Op Fl n Ar name
82d6f907dcSJoerg Wunsch.Op Fl u Ar uid
83d6f907dcSJoerg Wunsch.Op Fl r
84f1d684faSDavid Nugent.Op Fl Y
85e97407b4SRuslan Ermilov.Nm
865f12594aSDavid Nugent.Op Fl V Ar etcdir
87d6f907dcSJoerg Wunsch.Ar usermod
88d6f907dcSJoerg Wunsch.Op name|uid
89d6f907dcSJoerg Wunsch.Op Fl C Ar config
90d6f907dcSJoerg Wunsch.Op Fl q
91d6f907dcSJoerg Wunsch.Op Fl n Ar name
92d6f907dcSJoerg Wunsch.Op Fl u Ar uid
93d6f907dcSJoerg Wunsch.Op Fl c Ar comment
94d6f907dcSJoerg Wunsch.Op Fl d Ar dir
95d6f907dcSJoerg Wunsch.Op Fl e Ar date
96d6f907dcSJoerg Wunsch.Op Fl p Ar date
97d6f907dcSJoerg Wunsch.Op Fl g Ar group
98d6f907dcSJoerg Wunsch.Op Fl G Ar grouplist
99d6f907dcSJoerg Wunsch.Op Fl l Ar name
100d6f907dcSJoerg Wunsch.Op Fl m
101eebbeceeSLukas Ertl.Op Fl M Ar mode
102d6f907dcSJoerg Wunsch.Op Fl k Ar dir
1039fd0dafcSJoerg Wunsch.Op Fl w Ar method
104d6f907dcSJoerg Wunsch.Op Fl s Ar shell
105d6f907dcSJoerg Wunsch.Op Fl L Ar class
10687d6b5caSIan Dowse.Op Fl h Ar fd | Fl H Ar fd
1079fd0dafcSJoerg Wunsch.Op Fl N
1089fd0dafcSJoerg Wunsch.Op Fl P
109f1d684faSDavid Nugent.Op Fl Y
110e97407b4SRuslan Ermilov.Nm
1115f12594aSDavid Nugent.Op Fl V Ar etcdir
112d6f907dcSJoerg Wunsch.Ar usershow
113d6f907dcSJoerg Wunsch.Op name|uid
114d6f907dcSJoerg Wunsch.Op Fl n Ar name
115d6f907dcSJoerg Wunsch.Op Fl u Ar uid
116d6f907dcSJoerg Wunsch.Op Fl F
1179fd0dafcSJoerg Wunsch.Op Fl P
1184731d076SDima Dorfman.Op Fl 7
119d6f907dcSJoerg Wunsch.Op Fl a
120e97407b4SRuslan Ermilov.Nm
1215f12594aSDavid Nugent.Op Fl V Ar etcdir
1229fd0dafcSJoerg Wunsch.Ar usernext
1239fd0dafcSJoerg Wunsch.Op Fl C Ar config
1249fd0dafcSJoerg Wunsch.Op Fl q
125e97407b4SRuslan Ermilov.Nm
1265f12594aSDavid Nugent.Op Fl V Ar etcdir
127d6f907dcSJoerg Wunsch.Ar groupadd
128d6f907dcSJoerg Wunsch.Op group|gid
129d6f907dcSJoerg Wunsch.Op Fl C Ar config
130d6f907dcSJoerg Wunsch.Op Fl q
131d6f907dcSJoerg Wunsch.Op Fl n Ar group
132d6f907dcSJoerg Wunsch.Op Fl g Ar gid
1339fd0dafcSJoerg Wunsch.Op Fl M Ar members
134d6f907dcSJoerg Wunsch.Op Fl o
13587d6b5caSIan Dowse.Op Fl h Ar fd | Fl H Ar fd
1369fd0dafcSJoerg Wunsch.Op Fl N
1379fd0dafcSJoerg Wunsch.Op Fl P
138f1d684faSDavid Nugent.Op Fl Y
139e97407b4SRuslan Ermilov.Nm
1405f12594aSDavid Nugent.Op Fl V Ar etcdir
141d6f907dcSJoerg Wunsch.Ar groupdel
14206f64964SJoseph Koshy.Op group|gid
143d6f907dcSJoerg Wunsch.Op Fl n Ar name
144d6f907dcSJoerg Wunsch.Op Fl g Ar gid
145f1d684faSDavid Nugent.Op Fl Y
146e97407b4SRuslan Ermilov.Nm
1475f12594aSDavid Nugent.Op Fl V Ar etcdir
148d6f907dcSJoerg Wunsch.Ar groupmod
14906f64964SJoseph Koshy.Op group|gid
150d6f907dcSJoerg Wunsch.Op Fl C Ar config
151d6f907dcSJoerg Wunsch.Op Fl q
152d6f907dcSJoerg Wunsch.Op Fl n Ar name
153d6f907dcSJoerg Wunsch.Op Fl g Ar gid
154d6f907dcSJoerg Wunsch.Op Fl l Ar name
1559fd0dafcSJoerg Wunsch.Op Fl M Ar members
1569fd0dafcSJoerg Wunsch.Op Fl m Ar newmembers
15787d6b5caSIan Dowse.Op Fl h Ar fd | Fl H Ar fd
1589fd0dafcSJoerg Wunsch.Op Fl N
1599fd0dafcSJoerg Wunsch.Op Fl P
160f1d684faSDavid Nugent.Op Fl Y
161e97407b4SRuslan Ermilov.Nm
1625f12594aSDavid Nugent.Op Fl V Ar etcdir
163d6f907dcSJoerg Wunsch.Ar groupshow
16406f64964SJoseph Koshy.Op group|gid
165d6f907dcSJoerg Wunsch.Op Fl n Ar name
166d6f907dcSJoerg Wunsch.Op Fl g Ar gid
167d6f907dcSJoerg Wunsch.Op Fl F
1689fd0dafcSJoerg Wunsch.Op Fl P
169d6f907dcSJoerg Wunsch.Op Fl a
170e97407b4SRuslan Ermilov.Nm
1715f12594aSDavid Nugent.Op Fl V Ar etcdir
1729fd0dafcSJoerg Wunsch.Ar groupnext
1739fd0dafcSJoerg Wunsch.Op Fl C Ar config
1749fd0dafcSJoerg Wunsch.Op Fl q
175e468afb4SDima Dorfman.Nm
176e468afb4SDima Dorfman.Op Fl V Ar etcdir
177e468afb4SDima Dorfman.Ar lock
178e468afb4SDima Dorfman.Op name|uid
179e468afb4SDima Dorfman.Op Fl C Ar config
180e468afb4SDima Dorfman.Op Fl q
181e468afb4SDima Dorfman.Nm
182e468afb4SDima Dorfman.Op Fl V Ar etcdir
183e468afb4SDima Dorfman.Ar unlock
184e468afb4SDima Dorfman.Op name|uid
185e468afb4SDima Dorfman.Op Fl C Ar config
186e468afb4SDima Dorfman.Op Fl q
187d6f907dcSJoerg Wunsch.Sh DESCRIPTION
188490d5836SPhilippe CharnierThe
189490d5836SPhilippe Charnier.Nm
190490d5836SPhilippe Charnierutility is a command-line based editor for the system
1911dcc6ec7SPhilippe Charnier.Ar user
192d6f907dcSJoerg Wunschand
1931dcc6ec7SPhilippe Charnier.Ar group
1943a7e7077SDaniel O'Callaghanfiles, allowing the superuser an easy to use and standardized way of adding,
195d6f907dcSJoerg Wunschmodifying and removing users and groups.
196d6f907dcSJoerg WunschNote that
1971dcc6ec7SPhilippe Charnier.Nm
198490d5836SPhilippe Charnieronly operates on the local user and group files.
199490d5836SPhilippe Charnier.Tn NIS
200490d5836SPhilippe Charnierusers and groups must be
201490d5836SPhilippe Charniermaintained on the
202490d5836SPhilippe Charnier.Tn NIS
203490d5836SPhilippe Charnierserver.
204490d5836SPhilippe CharnierThe
205490d5836SPhilippe Charnier.Nm
206490d5836SPhilippe Charnierutility handles updating the
207053375e8SMike Pritchard.Pa passwd ,
208053375e8SMike Pritchard.Pa master.passwd ,
209053375e8SMike Pritchard.Pa group
210053375e8SMike Pritchardand the secure and insecure
211d6f907dcSJoerg Wunschpassword database files, and must be run as root.
212d6f907dcSJoerg Wunsch.Pp
213137db389SSteve PriceThe first one or two keywords provided to
214137db389SSteve Price.Nm
215137db389SSteve Priceon the command line provide the context for the remainder of the arguments.
216137db389SSteve PriceThe keywords
217d6f907dcSJoerg Wunsch.Ar user
218d6f907dcSJoerg Wunschand
219d6f907dcSJoerg Wunsch.Ar group
220137db389SSteve Pricemay be combined with
221d6f907dcSJoerg Wunsch.Ar add ,
222d6f907dcSJoerg Wunsch.Ar del ,
2239fd0dafcSJoerg Wunsch.Ar mod ,
224d6f907dcSJoerg Wunsch.Ar show ,
2259fd0dafcSJoerg Wunschor
226137db389SSteve Price.Ar next
2274e86fcacSSheldon Hearnin any order.
2284e86fcacSSheldon Hearn(For example,
229137db389SSteve Price.Ar showuser ,
230137db389SSteve Price.Ar usershow ,
231610a5778SRuslan Ermilov.Ar show user ,
232610a5778SRuslan Ermilovand
233137db389SSteve Price.Ar user show
234137db389SSteve Priceall mean the same thing.)
235137db389SSteve PriceThis flexibility is useful for interactive scripts calling
2361dcc6ec7SPhilippe Charnier.Nm
237137db389SSteve Pricefor user and group database manipulation.
238d6f907dcSJoerg WunschFollowing these keywords, you may optionally specify the user or group name or numeric
239d6f907dcSJoerg Wunschid as an alternative to using the
240d6f907dcSJoerg Wunsch.Fl n Ar name ,
241d6f907dcSJoerg Wunsch.Fl u Ar uid ,
242d6f907dcSJoerg Wunsch.Fl g Ar gid
2439fd0dafcSJoerg Wunschoptions.
244d6f907dcSJoerg Wunsch.Pp
245d5a3b1edSDima DorfmanThe following flags are common to most or all modes of operation:
246d6f907dcSJoerg Wunsch.Pp
2479fd0dafcSJoerg Wunsch.Bl -tag -width "-G grouplist"
2485f12594aSDavid Nugent.It Fl V Ar etcdir
2495f12594aSDavid NugentThis flag sets an alternate location for the password, group and configuration files,
2505f12594aSDavid Nugentand may be used to maintain a user/group database in an alternate location.
2515f12594aSDavid NugentIf this switch is specified, the system
2525f12594aSDavid Nugent.Pa /etc/pw.conf
2535f12594aSDavid Nugentwill not be sourced for default configuration data, but the file pw.conf in the
2545f12594aSDavid Nugentspecified directory will be used instead (or none, if it does not exist).
2555f12594aSDavid NugentThe
2565f12594aSDavid Nugent.Fl C
2575f12594aSDavid Nugentflag may be used to override this behaviour.
2585f12594aSDavid NugentAs an exception to the general rule where options must follow the operation
2595f12594aSDavid Nugenttype, the
2605f12594aSDavid Nugent.Fl V
2615f12594aSDavid Nugentflag may be used on the command line before the operation keyword.
262d6f907dcSJoerg Wunsch.It Fl C Ar config
263d6f907dcSJoerg WunschBy default,
2641dcc6ec7SPhilippe Charnier.Nm
265d6f907dcSJoerg Wunschreads the file
266d6f907dcSJoerg Wunsch.Pa /etc/pw.conf
267137db389SSteve Priceto obtain policy information on how new user accounts and groups are to be created.
268137db389SSteve PriceThe
2699fd0dafcSJoerg Wunsch.Fl C
2709fd0dafcSJoerg Wunschoption specifies a different configuration file.
271137db389SSteve PriceWhile most of the contents of the configuration file may be overridden via
272137db389SSteve Pricecommand-line options, it may be more convenient to keep standard information in a
273137db389SSteve Priceconfiguration file.
274d6f907dcSJoerg Wunsch.It Fl q
275d6f907dcSJoerg WunschUse of this option causes
2761dcc6ec7SPhilippe Charnier.Nm
277d6f907dcSJoerg Wunschto suppress error messages, which may be useful in interactive environments where it
278d6f907dcSJoerg Wunschis preferable to interpret status codes returned by
2791dcc6ec7SPhilippe Charnier.Nm
280d6f907dcSJoerg Wunschrather than messing up a carefully formatted display.
2819fd0dafcSJoerg Wunsch.It Fl N
282137db389SSteve PriceThis option is available in
283137db389SSteve Price.Ar add
284137db389SSteve Priceand
285137db389SSteve Price.Ar modify
286137db389SSteve Priceoperations, and tells
2871dcc6ec7SPhilippe Charnier.Nm
288137db389SSteve Priceto output the result of the operation without updating the user or group
289137db389SSteve Pricedatabases.
2909fd0dafcSJoerg WunschYou may use the
2919fd0dafcSJoerg Wunsch.Fl P
2929fd0dafcSJoerg Wunschoption to switch between standard passwd and readable formats.
293f1d684faSDavid Nugent.It Fl Y
294f1d684faSDavid NugentUsing this option with any of the update modes causes
2951dcc6ec7SPhilippe Charnier.Nm
296f1d684faSDavid Nugentto run
297f1d684faSDavid Nugent.Xr make 1
298f1d684faSDavid Nugentafter changing to the directory
299f1d684faSDavid Nugent.Pa /var/yp .
300490d5836SPhilippe CharnierThis is intended to allow automatic updating of
301490d5836SPhilippe Charnier.Tn NIS
302490d5836SPhilippe Charnierdatabase files.
303490d5836SPhilippe CharnierIf separate passwd and group files are being used by
304490d5836SPhilippe Charnier.Tn NIS ,
305490d5836SPhilippe Charnierthen use the
306f1d684faSDavid Nugent.Fl y Ar path
307490d5836SPhilippe Charnieroption to specify the location of the
308490d5836SPhilippe Charnier.Tn NIS
309490d5836SPhilippe Charnierpasswd database so that
310137db389SSteve Price.Nm
311137db389SSteve Pricewill concurrently update it with the system password
312f1d684faSDavid Nugentdatabases.
313d6f907dcSJoerg Wunsch.El
314d6f907dcSJoerg Wunsch.Sh USER OPTIONS
315d6f907dcSJoerg WunschThe following options apply to the
316137db389SSteve Price.Ar useradd
317d6f907dcSJoerg Wunschand
318137db389SSteve Price.Ar usermod
319d6f907dcSJoerg Wunschcommands:
320d6f907dcSJoerg Wunsch.Pp
3219fd0dafcSJoerg Wunsch.Bl -tag -width "-G grouplist"
322d6f907dcSJoerg Wunsch.It Fl n Ar name
3231dcc6ec7SPhilippe CharnierSpecify the user/account name.
324d6f907dcSJoerg Wunsch.It Fl u Ar uid
3251dcc6ec7SPhilippe CharnierSpecify the user/account numeric id.
326d6f907dcSJoerg Wunsch.Pp
327137db389SSteve PriceUsually, you only need to provide one or the other of these options, as the account
328137db389SSteve Pricename will imply the uid, or vice versa.
329137db389SSteve PriceHowever, there are times when you need to provide both.
330d6f907dcSJoerg WunschFor example, when changing the uid of an existing user with
331d6f907dcSJoerg Wunsch.Ar usermod ,
332d6f907dcSJoerg Wunschor overriding the default uid when creating a new account.
333d6f907dcSJoerg WunschIf you wish
3341dcc6ec7SPhilippe Charnier.Nm
335137db389SSteve Priceto automatically allocate the uid to a new user with
336d6f907dcSJoerg Wunsch.Ar useradd ,
337d6f907dcSJoerg Wunschthen you should
338d6f907dcSJoerg Wunsch.Em not
339d6f907dcSJoerg Wunschuse the
34008657612SRuslan Ermilov.Fl u
3419fd0dafcSJoerg Wunschoption.
342137db389SSteve PriceYou may also provide either the account or userid immediately after the
343137db389SSteve Price.Ar useradd ,
344137db389SSteve Price.Ar userdel ,
345137db389SSteve Price.Ar usermod
346137db389SSteve Priceor
347137db389SSteve Price.Ar usershow
348137db389SSteve Pricekeywords on the command line without using the
34908657612SRuslan Ermilov.Fl n
350137db389SSteve Priceor
35108657612SRuslan Ermilov.Fl u
352137db389SSteve Priceoptions.
353d6f907dcSJoerg Wunsch.El
354d6f907dcSJoerg Wunsch.Pp
355d6f907dcSJoerg Wunsch.Bl -tag -width "-G grouplist"
356d6f907dcSJoerg Wunsch.It Fl c Ar comment
357d6f907dcSJoerg WunschThis field sets the contents of the passwd GECOS field, which normally contains up
358d6f907dcSJoerg Wunschto four comma-separated fields containing the user's full name, office or location,
359137db389SSteve Priceand work and home phone numbers.
360d6f907dcSJoerg WunschThese sub-fields are used by convention only, however, and are optional.
361d6f907dcSJoerg WunschIf this field is to contain spaces, you need to quote the comment itself with double
362d6f907dcSJoerg Wunschquotes
363d6f907dcSJoerg Wunsch.Ql \&" .
364d6f907dcSJoerg WunschAvoid using commas in this field as these are used as sub-field separators, and the
365d6f907dcSJoerg Wunschcolon
366d6f907dcSJoerg Wunsch.Ql \&:
367137db389SSteve Pricecharacter also cannot be used as this is the field separator for the passwd
368137db389SSteve Pricefile itself.
369d6f907dcSJoerg Wunsch.It Fl d Ar dir
370d6f907dcSJoerg WunschThis option sets the account's home directory.
371d6f907dcSJoerg WunschNormally, you will only use this if the home directory is to be different from the
372137db389SSteve Pricedefault determined from
373137db389SSteve Price.Pa /etc/pw.conf
3741dcc6ec7SPhilippe Charnier- normally
3751dcc6ec7SPhilippe Charnier.Pa /home
376137db389SSteve Pricewith the account name as a subdirectory.
377d6f907dcSJoerg Wunsch.It Fl e Ar date
3781dcc6ec7SPhilippe CharnierSet the account's expiration date.
379d6f907dcSJoerg WunschFormat of the date is either a UNIX time in decimal, or a date in
380137db389SSteve Price.Ql dd-mmm-yy[yy]
381d6f907dcSJoerg Wunschformat, where dd is the day, mmm is the month, either in numeric or alphabetic format
3821dcc6ec7SPhilippe Charnier('Jan', 'Feb', etc) and year is either a two or four digit year.
383d6f907dcSJoerg WunschThis option also accepts a relative date in the form
384d6f907dcSJoerg Wunsch.Ql \&+n[mhdwoy]
385d6f907dcSJoerg Wunschwhere
386d6f907dcSJoerg Wunsch.Ql \&n
387d6f907dcSJoerg Wunschis a decimal, octal (leading 0) or hexadecimal (leading 0x) digit followed by the
388053375e8SMike Pritchardnumber of Minutes, Hours, Days, Weeks, Months or Years from the current date at
389137db389SSteve Pricewhich the expiration date is to be set.
390d6f907dcSJoerg Wunsch.It Fl p Ar date
3911dcc6ec7SPhilippe CharnierSet the account's password expiration date.
392137db389SSteve PriceThis field is similar to the account expiration date option, except that it
393d6f907dcSJoerg Wunschapplies to forced password changes.
394137db389SSteve PriceThis is set in the same manner as the
39508657612SRuslan Ermilov.Fl e
396137db389SSteve Priceoption.
397d6f907dcSJoerg Wunsch.It Fl g Ar group
3981dcc6ec7SPhilippe CharnierSet the account's primary group to the given group.
399d6f907dcSJoerg Wunsch.Ar group
400137db389SSteve Pricemay be defined by either its name or group number.
401d6f907dcSJoerg Wunsch.It Fl G Ar grouplist
402490d5836SPhilippe CharnierSet additional group memberships for an account.
403d6f907dcSJoerg Wunsch.Ar grouplist
404137db389SSteve Priceis a comma-separated list of group names or group numbers.
405137db389SSteve PriceThe user's name is added to the group lists in
406d6f907dcSJoerg Wunsch.Pa /etc/group ,
407137db389SSteve Priceand
408d6f907dcSJoerg Wunschremoved from any groups not specified in
409d6f907dcSJoerg Wunsch.Ar grouplist .
410137db389SSteve PriceNote: a user should not be added to their primary group with
411137db389SSteve Price.Ar grouplist .
412137db389SSteve PriceAlso, group membership changes do not take effect for current user login
413137db389SSteve Pricesessions, requiring the user to reconnect to be affected by the changes.
4149fd0dafcSJoerg Wunsch.It Fl L Ar class
4159fd0dafcSJoerg WunschThis option sets the login class for the user being created.
4169fd0dafcSJoerg WunschSee
4179fd0dafcSJoerg Wunsch.Xr login.conf 5
41816b4ad52SGiorgos Keramidasand
41916b4ad52SGiorgos Keramidas.Xr passwd 5
420137db389SSteve Pricefor more information on user login classes.
421d6f907dcSJoerg Wunsch.It Fl m
422d6f907dcSJoerg WunschThis option instructs
4231dcc6ec7SPhilippe Charnier.Nm
424d6f907dcSJoerg Wunschto attempt to create the user's home directory.
425d6f907dcSJoerg WunschWhile primarily useful when adding a new account with
426d6f907dcSJoerg Wunsch.Ar useradd ,
427d6f907dcSJoerg Wunschthis may also be of use when moving an existing user's home directory elsewhere on
428d6f907dcSJoerg Wunschthe file system.
429d6f907dcSJoerg WunschThe new home directory is populated with the contents of the
430d6f907dcSJoerg Wunsch.Ar skeleton
431d6f907dcSJoerg Wunschdirectory, which typically contains a set of shell configuration files that the
432053375e8SMike Pritcharduser may personalize to taste.
43331e224ddSTom RhodesFiles in this directory are usually named
434fd59f59aSTom Rhodes.Pa dot . Ns Aq Ar config
43531e224ddSTom Rhodeswhere the
436fd59f59aSTom Rhodes.Pa dot
43731e224ddSTom Rhodesprefix will be stripped.
438d6f907dcSJoerg WunschWhen
43908657612SRuslan Ermilov.Fl m
440d6f907dcSJoerg Wunschis used on an account with
441d6f907dcSJoerg Wunsch.Ar usermod ,
442137db389SSteve Priceexisting configuration files in the user's home directory are
443d6f907dcSJoerg Wunsch.Em not
444137db389SSteve Priceoverwritten from the skeleton files.
445d6f907dcSJoerg Wunsch.Pp
446137db389SSteve PriceWhen a user's home directory is created, it will by default be a subdirectory of the
447d6f907dcSJoerg Wunsch.Ar basehome
448137db389SSteve Pricedirectory as specified by the
44908657612SRuslan Ermilov.Fl b
450137db389SSteve Priceoption (see below), bearing the name of the new account.
451137db389SSteve PriceThis can be overridden by the
45208657612SRuslan Ermilov.Fl d
453d6f907dcSJoerg Wunschoption on the command line, if desired.
454eebbeceeSLukas Ertl.It Fl M Ar mode
455eebbeceeSLukas ErtlCreate the user's home directory with the specified
456eebbeceeSLukas Ertl.Ar mode .
457eebbeceeSLukas ErtlIf omitted, it is derived from the parent process'
458eebbeceeSLukas Ertl.Xr umask 2 .
459eebbeceeSLukas ErtlThis option is only useful in combination with the
460eebbeceeSLukas Ertl.Fl m
461eebbeceeSLukas Ertlflag.
462d6f907dcSJoerg Wunsch.It Fl k Ar dir
4631dcc6ec7SPhilippe CharnierSet the
464d6f907dcSJoerg Wunsch.Ar skeleton
465137db389SSteve Pricedirectory, from which basic startup and configuration files are copied when
466d6f907dcSJoerg Wunschthe user's home directory is created.
467137db389SSteve PriceThis option only has meaning when used with the
46808657612SRuslan Ermilov.Fl d
469137db389SSteve Priceor
47008657612SRuslan Ermilov.Fl m
471137db389SSteve Priceflags.
472d6f907dcSJoerg Wunsch.It Fl s Ar shell
4731dcc6ec7SPhilippe CharnierSet or changes the user's login shell to
474d6f907dcSJoerg Wunsch.Ar shell .
475d6f907dcSJoerg WunschIf the path to the shell program is omitted,
4761dcc6ec7SPhilippe Charnier.Nm
477d6f907dcSJoerg Wunschsearches the
478d6f907dcSJoerg Wunsch.Ar shellpath
479d6f907dcSJoerg Wunschspecified in
480d6f907dcSJoerg Wunsch.Pa /etc/pw.conf
481d6f907dcSJoerg Wunschand fills it in as appropriate.
482d6f907dcSJoerg WunschNote that unless you have a specific reason to do so, you should avoid
483d6f907dcSJoerg Wunschspecifying the path - this will allow
4841dcc6ec7SPhilippe Charnier.Nm
485d6f907dcSJoerg Wunschto validate that the program exists and is executable.
486d6f907dcSJoerg WunschSpecifying a full path (or supplying a blank "" shell) avoids this check
487d6f907dcSJoerg Wunschand allows for such entries as
4881dcc6ec7SPhilippe Charnier.Pa /nonexistent
489d6f907dcSJoerg Wunschthat should be set for accounts not intended for interactive login.
490d6f907dcSJoerg Wunsch.It Fl h Ar fd
491d6f907dcSJoerg WunschThis option provides a special interface by which interactive scripts can
492d6f907dcSJoerg Wunschset an account password using
493e97407b4SRuslan Ermilov.Nm .
494137db389SSteve PriceBecause the command line and environment are fundamentally insecure mechanisms
495d6f907dcSJoerg Wunschby which programs can accept information,
4961dcc6ec7SPhilippe Charnier.Nm
497d6f907dcSJoerg Wunschwill only allow setting of account and group passwords via a file descriptor
498d6f907dcSJoerg Wunsch(usually a pipe between an interactive script and the program).
499d6f907dcSJoerg Wunsch.Ar sh ,
500d6f907dcSJoerg Wunsch.Ar bash ,
501d6f907dcSJoerg Wunsch.Ar ksh
502d6f907dcSJoerg Wunschand
503d6f907dcSJoerg Wunsch.Ar perl
504137db389SSteve Priceall possess mechanisms by which this can be done.
505d6f907dcSJoerg WunschAlternatively,
506325970a9SPhilippe Charnier.Nm
507d6f907dcSJoerg Wunschwill prompt for the user's password if
50808657612SRuslan Ermilov.Fl h Ar 0
509d6f907dcSJoerg Wunschis given, nominating
510d6f907dcSJoerg Wunsch.Em stdin
511d6f907dcSJoerg Wunschas the file descriptor on which to read the password.
512137db389SSteve PriceNote that this password will be read only once and is intended
513137db389SSteve Pricefor use by a script rather than for interactive use.
514d6f907dcSJoerg WunschIf you wish to have new password confirmation along the lines of
515d6f907dcSJoerg Wunsch.Xr passwd 1 ,
516137db389SSteve Pricethis must be implemented as part of an interactive script that calls
517e97407b4SRuslan Ermilov.Nm .
518d6f907dcSJoerg Wunsch.Pp
519d6f907dcSJoerg WunschIf a value of
520d6f907dcSJoerg Wunsch.Ql \&-
521d6f907dcSJoerg Wunschis given as the argument
522d6f907dcSJoerg Wunsch.Ar fd ,
523d6f907dcSJoerg Wunschthen the password will be set to
524d6f907dcSJoerg Wunsch.Ql \&* ,
525137db389SSteve Pricerendering the account inaccessible via password-based login.
52687d6b5caSIan Dowse.It Fl H Ar fd
52787d6b5caSIan DowseRead an encrypted password string from the specified file descriptor.
52887d6b5caSIan DowseThis is like
52987d6b5caSIan Dowse.Fl h ,
53087d6b5caSIan Dowsebut the password should be supplied already encrypted in a form
53187d6b5caSIan Dowsesuitable for writing directly to the password database.
532d6f907dcSJoerg Wunsch.El
533d6f907dcSJoerg Wunsch.Pp
534d6f907dcSJoerg WunschIt is possible to use
535d6f907dcSJoerg Wunsch.Ar useradd
536d6f907dcSJoerg Wunschto create a new account that duplicates an existing user id.
537d6f907dcSJoerg WunschWhile this is normally considered an error and will be rejected, the
53808657612SRuslan Ermilov.Fl o
5399fd0dafcSJoerg Wunschoption overrides the check for duplicates and allows the duplication of
5409fd0dafcSJoerg Wunschthe user id.
5419fd0dafcSJoerg WunschThis may be useful if you allow the same user to login under
5429fd0dafcSJoerg Wunschdifferent contexts (different group allocations, different home
5439fd0dafcSJoerg Wunschdirectory, different shell) while providing basically the same
5449fd0dafcSJoerg Wunschpermissions for access to the user's files in each account.
545d6f907dcSJoerg Wunsch.Pp
546d6f907dcSJoerg WunschThe
547d6f907dcSJoerg Wunsch.Ar useradd
548d6f907dcSJoerg Wunschcommand also has the ability to set new user and group defaults by using the
54908657612SRuslan Ermilov.Fl D
5509fd0dafcSJoerg Wunschoption.
551d6f907dcSJoerg WunschInstead of adding a new user,
5521dcc6ec7SPhilippe Charnier.Nm
553d6f907dcSJoerg Wunschwrites a new set of defaults to its configuration file,
554d6f907dcSJoerg Wunsch.Pa /etc/pw.conf .
555d6f907dcSJoerg WunschWhen using the
55608657612SRuslan Ermilov.Fl D
5579fd0dafcSJoerg Wunschoption, you must not use either
55808657612SRuslan Ermilov.Fl n Ar name
559d6f907dcSJoerg Wunschor
56008657612SRuslan Ermilov.Fl u Ar uid
561d6f907dcSJoerg Wunschor an error will result.
562d6f907dcSJoerg WunschUse of
56308657612SRuslan Ermilov.Fl D
5649fd0dafcSJoerg Wunschchanges the meaning of several command line switches in the
565d6f907dcSJoerg Wunsch.Ar useradd
566d6f907dcSJoerg Wunschcommand.
567d6f907dcSJoerg WunschThese are:
568d6f907dcSJoerg Wunsch.Bl -tag -width "-G grouplist"
569d6f907dcSJoerg Wunsch.It Fl D
570d6f907dcSJoerg WunschSet default values in
571d6f907dcSJoerg Wunsch.Pa /etc/pw.conf
572d6f907dcSJoerg Wunschconfiguration file, or a different named configuration file if the
57308657612SRuslan Ermilov.Fl C Ar config
5749fd0dafcSJoerg Wunschoption is used.
575d6f907dcSJoerg Wunsch.It Fl b Ar dir
5761dcc6ec7SPhilippe CharnierSet the root directory in which user home directories are created.
577d6f907dcSJoerg WunschThe default value for this is
5781dcc6ec7SPhilippe Charnier.Pa /home ,
579d6f907dcSJoerg Wunschbut it may be set elsewhere as desired.
580d6f907dcSJoerg Wunsch.It Fl e Ar days
5811dcc6ec7SPhilippe CharnierSet the default account expiration period in days.
582d6f907dcSJoerg WunschUnlike use without
58308657612SRuslan Ermilov.Fl D ,
584d6f907dcSJoerg Wunschthe argument must be numeric, which specifies the number of days after creation when
585d6f907dcSJoerg Wunschthe account is to expire.
586d6f907dcSJoerg WunschA value of 0 suppresses automatic calculation of the expiry date.
587d6f907dcSJoerg Wunsch.It Fl p Ar days
5881dcc6ec7SPhilippe CharnierSet the default password expiration period in days.
589d6f907dcSJoerg Wunsch.It Fl g Ar group
5901dcc6ec7SPhilippe CharnierSet the default group for new users.
591d6f907dcSJoerg WunschIf a blank group is specified using
59208657612SRuslan Ermilov.Fl g Ar \&"" ,
593137db389SSteve Pricethen new users will be allocated their own private primary group
594137db389SSteve Pricewith the same name as their login name.
595d6f907dcSJoerg WunschIf a group is supplied, either its name or uid may be given as an argument.
596d6f907dcSJoerg Wunsch.It Fl G Ar grouplist
597137db389SSteve PriceSet the default groups in which new users are granted membership.
598d6f907dcSJoerg WunschThis is a separate set of groups from the primary group, and you should avoid
599137db389SSteve Pricenominating the same group as both primary and extra groups.
600d6f907dcSJoerg WunschIn other words, these extra groups determine membership in groups
601d6f907dcSJoerg Wunsch.Em other than
602d6f907dcSJoerg Wunschthe primary group.
603d6f907dcSJoerg Wunsch.Ar grouplist
604137db389SSteve Priceis a comma-separated list of group names or ids, and are always
605d6f907dcSJoerg Wunschstored in
606d6f907dcSJoerg Wunsch.Pa /etc/pw.conf
607d6f907dcSJoerg Wunschby their symbolic names.
6089fd0dafcSJoerg Wunsch.It Fl L Ar class
6099fd0dafcSJoerg WunschThis option sets the default login class for new users.
610d6f907dcSJoerg Wunsch.It Fl k Ar dir
6111dcc6ec7SPhilippe CharnierSet the default
612d6f907dcSJoerg Wunsch.Em skeleton
613053375e8SMike Pritcharddirectory, from which prototype shell and other initialization files are copied when
6141dcc6ec7SPhilippe Charnier.Nm
615d6f907dcSJoerg Wunschcreates a user's home directory.
61631e224ddSTom RhodesSee description of
61731e224ddSTom Rhodes.Fl k
61831e224ddSTom Rhodesfor naming conventions of these files.
619610a5778SRuslan Ermilov.It Xo
620610a5778SRuslan Ermilov.Fl u Ar min , Ns Ar max ,
621610a5778SRuslan Ermilov.Fl i Ar min , Ns Ar max
622610a5778SRuslan Ermilov.Xc
6239fd0dafcSJoerg WunschThese options set the minimum and maximum user and group ids allocated for new accounts
624d6f907dcSJoerg Wunschand groups created by
625e97407b4SRuslan Ermilov.Nm .
626d6f907dcSJoerg WunschThe default values for each is 1000 minimum and 32000 maximum.
627d6f907dcSJoerg Wunsch.Ar min
628d6f907dcSJoerg Wunschand
629d6f907dcSJoerg Wunsch.Ar max
630d6f907dcSJoerg Wunschare both numbers, where max must be greater than min, and both must be between 0
631d6f907dcSJoerg Wunschand 32767.
632d6f907dcSJoerg WunschIn general, user and group ids less than 100 are reserved for use by the system,
633d6f907dcSJoerg Wunschand numbers greater than 32000 may also be reserved for special purposes (used by
634d6f907dcSJoerg Wunschsome system daemons).
635d6f907dcSJoerg Wunsch.It Fl w Ar method
636d6f907dcSJoerg WunschThe
63708657612SRuslan Ermilov.Fl w
6389fd0dafcSJoerg Wunschoption sets the default method used to set passwords for newly created user accounts.
639d6f907dcSJoerg Wunsch.Ar method
640d6f907dcSJoerg Wunschis one of:
641d6f907dcSJoerg Wunsch.Pp
642d6f907dcSJoerg Wunsch.Bl -tag -width random -offset indent -compact
643d6f907dcSJoerg Wunsch.It no
6441dcc6ec7SPhilippe Charnierdisable login on newly created accounts
645d6f907dcSJoerg Wunsch.It yes
6461dcc6ec7SPhilippe Charnierforce the password to be the account name
647d6f907dcSJoerg Wunsch.It none
6481dcc6ec7SPhilippe Charnierforce a blank password
649d6f907dcSJoerg Wunsch.It random
6501dcc6ec7SPhilippe Charniergenerate a random password
651d6f907dcSJoerg Wunsch.El
652d6f907dcSJoerg Wunsch.Pp
653d6f907dcSJoerg WunschThe
654d6f907dcSJoerg Wunsch.Ql \&random
655d6f907dcSJoerg Wunschor
656d6f907dcSJoerg Wunsch.Ql \&no
657d6f907dcSJoerg Wunschmethods are the most secure; in the former case,
6581dcc6ec7SPhilippe Charnier.Nm
659d6f907dcSJoerg Wunschgenerates a password and prints it to stdout, which is suitable where you issue
660d6f907dcSJoerg Wunschusers with passwords to access their accounts rather than having the user nominate
661d6f907dcSJoerg Wunschtheir own (possibly poorly chosen) password.
662d6f907dcSJoerg WunschThe
663d6f907dcSJoerg Wunsch.Ql \&no
664d6f907dcSJoerg Wunschmethod requires that the superuser use
665d6f907dcSJoerg Wunsch.Xr passwd 1
666d6f907dcSJoerg Wunschto render the account accessible with a password.
667f1d684faSDavid Nugent.It Fl y Ar path
668490d5836SPhilippe CharnierThis sets the pathname of the database used by
669490d5836SPhilippe Charnier.Tn NIS
670490d5836SPhilippe Charnierif you are not sharing
671f1d684faSDavid Nugentthe information from
672f1d684faSDavid Nugent.Pa /etc/master.passwd
673490d5836SPhilippe Charnierdirectly with
674490d5836SPhilippe Charnier.Tn NIS .
675490d5836SPhilippe CharnierYou should only set this option for
676490d5836SPhilippe Charnier.Tn NIS
677490d5836SPhilippe Charnierservers.
678d6f907dcSJoerg Wunsch.El
679d6f907dcSJoerg Wunsch.Pp
680d6f907dcSJoerg WunschThe
681d6f907dcSJoerg Wunsch.Ar userdel
682f2e366a1SSheldon Hearncommand has only three valid options.
683f2e366a1SSheldon HearnThe
68408657612SRuslan Ermilov.Fl n Ar name
685d6f907dcSJoerg Wunschand
68608657612SRuslan Ermilov.Fl u Ar uid
6879fd0dafcSJoerg Wunschoptions have already been covered above.
6889fd0dafcSJoerg WunschThe additional option is:
6899fd0dafcSJoerg Wunsch.Bl -tag -width "-G grouplist"
690d6f907dcSJoerg Wunsch.It Fl r
691d6f907dcSJoerg WunschThis tells
6921dcc6ec7SPhilippe Charnier.Nm
693d6f907dcSJoerg Wunschto remove the user's home directory and all of its contents.
694490d5836SPhilippe CharnierThe
695490d5836SPhilippe Charnier.Nm
696490d5836SPhilippe Charnierutility errs on the side of caution when removing files from the system.
697d6f907dcSJoerg WunschFirstly, it will not do so if the uid of the account being removed is also used by
698d6f907dcSJoerg Wunschanother account on the system, and the 'home' directory in the password file is
699d6f907dcSJoerg Wunscha valid path that commences with the character
700d6f907dcSJoerg Wunsch.Ql \&/ .
701d6f907dcSJoerg WunschSecondly, it will only remove files and directories that are actually owned by
702d6f907dcSJoerg Wunschthe user, or symbolic links owned by anyone under the user's home directory.
703d6f907dcSJoerg WunschFinally, after deleting all contents owned by the user only empty directories
704d6f907dcSJoerg Wunschwill be removed.
705053375e8SMike PritchardIf any additional cleanup work is required, this is left to the administrator.
706d6f907dcSJoerg Wunsch.El
707d6f907dcSJoerg Wunsch.Pp
708d6f907dcSJoerg WunschMail spool files and crontabs are always removed when an account is deleted as these
709d6f907dcSJoerg Wunschare unconditionally attached to the user name.
710d6f907dcSJoerg WunschJobs queued for processing by
711d6f907dcSJoerg Wunsch.Ar at
712137db389SSteve Priceare also removed if the user's uid is unique and not also used by another account on the
713137db389SSteve Pricesystem.
714d6f907dcSJoerg Wunsch.Pp
715d6f907dcSJoerg WunschThe
716d6f907dcSJoerg Wunsch.Ar usershow
717d6f907dcSJoerg Wunschcommand allows viewing of an account in one of two formats.
718d6f907dcSJoerg WunschBy default, the format is identical to the format used in
719d6f907dcSJoerg Wunsch.Pa /etc/master.passwd
720d6f907dcSJoerg Wunschwith the password field replaced with a
721d6f907dcSJoerg Wunsch.Ql \&* .
722d6f907dcSJoerg WunschIf the
72308657612SRuslan Ermilov.Fl P
7249fd0dafcSJoerg Wunschoption is used, then
7251dcc6ec7SPhilippe Charnier.Nm
726d6f907dcSJoerg Wunschoutputs the account details in a more human readable form.
7274731d076SDima DorfmanIf the
7284731d076SDima Dorfman.Fl 7
7294731d076SDima Dorfmanoption is used, the account details are shown in v7 format.
730d6f907dcSJoerg WunschThe
73108657612SRuslan Ermilov.Fl a
7329fd0dafcSJoerg Wunschoption lists all users currently on file.
733466c257cSDima DorfmanUsing
734466c257cSDima Dorfman.Fl F
735466c257cSDima Dorfmanforces
736466c257cSDima Dorfman.Nm
737466c257cSDima Dorfmanto print the details of an account even if it does not exist.
7389fd0dafcSJoerg Wunsch.Pp
7399fd0dafcSJoerg WunschThe command
7409fd0dafcSJoerg Wunsch.Ar usernext
7419fd0dafcSJoerg Wunschreturns the next available user and group ids separated by a colon.
7429fd0dafcSJoerg WunschThis is normally of interest only to interactive scripts or front-ends
7439fd0dafcSJoerg Wunschthat use
744e97407b4SRuslan Ermilov.Nm .
745d6f907dcSJoerg Wunsch.Sh GROUP OPTIONS
746d6f907dcSJoerg WunschThe
74708657612SRuslan Ermilov.Fl C
748d6f907dcSJoerg Wunschand
74908657612SRuslan Ermilov.Fl q
7509fd0dafcSJoerg Wunschoptions (explained at the start of the previous section) are available
7519fd0dafcSJoerg Wunschwith the group manipulation commands.
752d6f907dcSJoerg WunschOther common options to all group-related commands are:
7539fd0dafcSJoerg Wunsch.Bl -tag -width "-m newmembers"
754d6f907dcSJoerg Wunsch.It Fl n Ar name
7551dcc6ec7SPhilippe CharnierSpecify the group name.
756d6f907dcSJoerg Wunsch.It Fl g Ar gid
7571dcc6ec7SPhilippe CharnierSpecify the group numeric id.
758d6f907dcSJoerg Wunsch.Pp
7599fd0dafcSJoerg WunschAs with the account name and id fields, you will usually only need
7609fd0dafcSJoerg Wunschto supply one of these, as the group name implies the uid and vice
7619fd0dafcSJoerg Wunschversa.
7629fd0dafcSJoerg WunschYou will only need to use both when setting a specific group id
7639fd0dafcSJoerg Wunschagainst a new group or when changing the uid of an existing group.
7647ecd7a42SJoseph Koshy.It Fl M Ar memberlist
7659fd0dafcSJoerg WunschThis option provides an alternative way to add existing users to a
7669fd0dafcSJoerg Wunschnew group (in groupadd) or replace an existing membership list (in
7679fd0dafcSJoerg Wunschgroupmod).
7689fd0dafcSJoerg Wunsch.Ar memberlist
7699fd0dafcSJoerg Wunschis a comma separated list of valid and existing user names or uids.
7709fd0dafcSJoerg Wunsch.It Fl m Ar newmembers
7719fd0dafcSJoerg WunschSimilar to
77208657612SRuslan Ermilov.Fl M ,
7739fd0dafcSJoerg Wunschthis option allows the
7749fd0dafcSJoerg Wunsch.Em addition
775137db389SSteve Priceof existing users to a group without replacing the existing list of
7769fd0dafcSJoerg Wunschmembers.
777137db389SSteve PriceLogin names or user ids may be used, and duplicate users are
778137db389SSteve Pricesilently eliminated.
779d6f907dcSJoerg Wunsch.El
780d6f907dcSJoerg Wunsch.Pp
781d6f907dcSJoerg Wunsch.Ar groupadd
782d6f907dcSJoerg Wunschalso has a
78308657612SRuslan Ermilov.Fl o
784137db389SSteve Priceoption that allows allocation of an existing group id to a new group.
785d6f907dcSJoerg WunschThe default action is to reject an attempt to add a group, and this option overrides
786d6f907dcSJoerg Wunschthe check for duplicate group ids.
787d6f907dcSJoerg WunschThere is rarely any need to duplicate a group id.
788d6f907dcSJoerg Wunsch.Pp
789d6f907dcSJoerg WunschThe
790d6f907dcSJoerg Wunsch.Ar groupmod
791137db389SSteve Pricecommand adds one additional option:
792d6f907dcSJoerg Wunsch.Pp
7939fd0dafcSJoerg Wunsch.Bl -tag -width "-m newmembers"
794d6f907dcSJoerg Wunsch.It Fl l Ar name
795d6f907dcSJoerg WunschThis option allows changing of an existing group name to
796d6f907dcSJoerg Wunsch.Ql \&name .
797d6f907dcSJoerg WunschThe new name must not already exist, and any attempt to duplicate an existing group
798d6f907dcSJoerg Wunschname will be rejected.
799d6f907dcSJoerg Wunsch.El
800d6f907dcSJoerg Wunsch.Pp
801d6f907dcSJoerg WunschOptions for
802d6f907dcSJoerg Wunsch.Ar groupshow
803d6f907dcSJoerg Wunschare the same as for
804d6f907dcSJoerg Wunsch.Ar usershow ,
805d6f907dcSJoerg Wunschwith the
80608657612SRuslan Ermilov.Fl g Ar gid
807d6f907dcSJoerg Wunschreplacing
80808657612SRuslan Ermilov.Fl u Ar uid
809d6f907dcSJoerg Wunschto specify the group id.
8104731d076SDima DorfmanThe
8114731d076SDima Dorfman.Fl 7
8124731d076SDima Dorfmanoption does not apply to the
8134731d076SDima Dorfman.Ar groupshow
8144731d076SDima Dorfmancommand.
815d6f907dcSJoerg Wunsch.Pp
8169fd0dafcSJoerg WunschThe command
8179fd0dafcSJoerg Wunsch.Ar groupnext
8189fd0dafcSJoerg Wunschreturns the next available group id on standard output.
819e468afb4SDima Dorfman.Sh USER LOCKING
820490d5836SPhilippe CharnierThe
821490d5836SPhilippe Charnier.Nm
822490d5836SPhilippe Charnierutility
823e468afb4SDima Dorfmansupports a simple password locking mechanism for users; it works by
824e468afb4SDima Dorfmanprepending the string
825e468afb4SDima Dorfman.Ql *LOCKED*
826e468afb4SDima Dorfmanto the beginning of the password field in
827e468afb4SDima Dorfman.Pa master.passwd
828e468afb4SDima Dorfmanto prevent successful authentication.
829e468afb4SDima Dorfman.Pp
830e468afb4SDima DorfmanThe
831e468afb4SDima Dorfman.Ar lock
832e468afb4SDima Dorfmanand
833e468afb4SDima Dorfman.Ar unlock
834e468afb4SDima Dorfmancommands take a user name or uid of the account to lock or unlock,
83507bfccd7SRuslan Ermilovrespectively.
83607bfccd7SRuslan ErmilovThe
83708657612SRuslan Ermilov.Fl V ,
83808657612SRuslan Ermilov.Fl C ,
839e468afb4SDima Dorfmanand
84008657612SRuslan Ermilov.Fl q
841e468afb4SDima Dorfmanoptions as described above are accepted by these commands.
84259a3c79dSRuslan Ermilov.Sh NOTES
84359a3c79dSRuslan ErmilovFor a summary of options available with each command, you can use
84459a3c79dSRuslan Ermilov.Dl pw [command] help
84559a3c79dSRuslan ErmilovFor example,
84659a3c79dSRuslan Ermilov.Dl pw useradd help
84759a3c79dSRuslan Ermilovlists all available options for the useradd operation.
84859a3c79dSRuslan Ermilov.Pp
84959a3c79dSRuslan ErmilovThe
85059a3c79dSRuslan Ermilov.Nm
85159a3c79dSRuslan Ermilovutility allows 8-bit characters in the passwd GECOS field (user's full name,
85259a3c79dSRuslan Ermilovoffice, work and home phone number subfields), but disallows them in
85359a3c79dSRuslan Ermilovuser login and group names.
85459a3c79dSRuslan ErmilovUse 8-bit characters with caution, as connection to the Internet will
85559a3c79dSRuslan Ermilovrequire that your mail transport program supports 8BITMIME, and will
85659a3c79dSRuslan Ermilovconvert headers containing 8-bit characters to 7-bit quoted-printable
85759a3c79dSRuslan Ermilovformat.
85859a3c79dSRuslan Ermilov.Xr sendmail 8
85959a3c79dSRuslan Ermilovdoes support this.
86059a3c79dSRuslan ErmilovUse of 8-bit characters in the GECOS field should be used in
86159a3c79dSRuslan Ermilovconjunction with the user's default locale and character set
86259a3c79dSRuslan Ermilovand should not be implemented without their use.
86359a3c79dSRuslan ErmilovUsing 8-bit characters may also affect other
86459a3c79dSRuslan Ermilovprograms that transmit the contents of the GECOS field over the
86559a3c79dSRuslan ErmilovInternet, such as
86659a3c79dSRuslan Ermilov.Xr fingerd 8 ,
86759a3c79dSRuslan Ermilovand a small number of TCP/IP clients, such as IRC, where full names
86859a3c79dSRuslan Ermilovspecified in the passwd file may be used by default.
86959a3c79dSRuslan Ermilov.Pp
87059a3c79dSRuslan ErmilovThe
87159a3c79dSRuslan Ermilov.Nm
87259a3c79dSRuslan Ermilovutility writes a log to the
87359a3c79dSRuslan Ermilov.Pa /var/log/userlog
87459a3c79dSRuslan Ermilovfile when actions such as user or group additions or deletions occur.
87559a3c79dSRuslan ErmilovThe location of this logfile can be changed in
87659a3c79dSRuslan Ermilov.Xr pw.conf 5 .
87759a3c79dSRuslan Ermilov.Sh FILES
87859a3c79dSRuslan Ermilov.Bl -tag -width /etc/master.passwd.new -compact
87959a3c79dSRuslan Ermilov.It Pa /etc/master.passwd
88059a3c79dSRuslan ErmilovThe user database
88159a3c79dSRuslan Ermilov.It Pa /etc/passwd
88259a3c79dSRuslan ErmilovA Version 7 format password file
88359a3c79dSRuslan Ermilov.It Pa /etc/login.conf
88459a3c79dSRuslan ErmilovThe user capabilities database
88559a3c79dSRuslan Ermilov.It Pa /etc/group
88659a3c79dSRuslan ErmilovThe group database
88759a3c79dSRuslan Ermilov.It Pa /etc/master.passwd.new
88859a3c79dSRuslan ErmilovTemporary copy of the master password file
88959a3c79dSRuslan Ermilov.It Pa /etc/passwd.new
89059a3c79dSRuslan ErmilovTemporary copy of the Version 7 password file
89159a3c79dSRuslan Ermilov.It Pa /etc/group.new
89259a3c79dSRuslan ErmilovTemporary copy of the group file
89359a3c79dSRuslan Ermilov.It Pa /etc/pw.conf
89459a3c79dSRuslan ErmilovPw default options file
89559a3c79dSRuslan Ermilov.It Pa /var/log/userlog
89659a3c79dSRuslan ErmilovUser/group modification logfile
89759a3c79dSRuslan Ermilov.El
898a866e170SRuslan Ermilov.Sh EXIT STATUS
899490d5836SPhilippe CharnierThe
900490d5836SPhilippe Charnier.Nm
901490d5836SPhilippe Charnierutility returns EXIT_SUCCESS on successful operation, otherwise
902137db389SSteve Price.Nm
903137db389SSteve Pricereturns one of the
9049fd0dafcSJoerg Wunschfollowing exit codes defined by
9059fd0dafcSJoerg Wunsch.Xr sysexits 3
9069fd0dafcSJoerg Wunschas follows:
9079fd0dafcSJoerg Wunsch.Bl -tag -width xxxx
9089fd0dafcSJoerg Wunsch.It EX_USAGE
9099fd0dafcSJoerg Wunsch.Bl -bullet -compact
9109fd0dafcSJoerg Wunsch.It
9111dcc6ec7SPhilippe CharnierCommand line syntax errors (invalid keyword, unknown option).
9129fd0dafcSJoerg Wunsch.El
9139fd0dafcSJoerg Wunsch.It EX_NOPERM
9149fd0dafcSJoerg Wunsch.Bl -bullet -compact
9159fd0dafcSJoerg Wunsch.It
9169fd0dafcSJoerg WunschAttempting to run one of the update modes as non-root.
9179fd0dafcSJoerg Wunsch.El
9189fd0dafcSJoerg Wunsch.It EX_OSERR
9199fd0dafcSJoerg Wunsch.Bl -bullet -compact
9209fd0dafcSJoerg Wunsch.It
9219fd0dafcSJoerg WunschMemory allocation error.
9229fd0dafcSJoerg Wunsch.It
9239fd0dafcSJoerg WunschRead error from password file descriptor.
9249fd0dafcSJoerg Wunsch.El
9259fd0dafcSJoerg Wunsch.It EX_DATAERR
9269fd0dafcSJoerg Wunsch.Bl -bullet -compact
9279fd0dafcSJoerg Wunsch.It
9289fd0dafcSJoerg WunschBad or invalid data provided or missing on the command line or
929137db389SSteve Pricevia the password file descriptor.
9309fd0dafcSJoerg Wunsch.It
9319fd0dafcSJoerg WunschAttempted to remove, rename root account or change its uid.
9329fd0dafcSJoerg Wunsch.El
9339fd0dafcSJoerg Wunsch.It EX_OSFILE
9349fd0dafcSJoerg Wunsch.Bl -bullet -compact
9359fd0dafcSJoerg Wunsch.It
9369fd0dafcSJoerg WunschSkeleton directory is invalid or does not exist.
9379fd0dafcSJoerg Wunsch.It
9389fd0dafcSJoerg WunschBase home directory is invalid or does not exist.
9399fd0dafcSJoerg Wunsch.It
940137db389SSteve PriceInvalid or non-existent shell specified.
9419fd0dafcSJoerg Wunsch.El
9429fd0dafcSJoerg Wunsch.It EX_NOUSER
9439fd0dafcSJoerg Wunsch.Bl -bullet -compact
9449fd0dafcSJoerg Wunsch.It
9459fd0dafcSJoerg WunschUser, user id, group or group id specified does not exist.
9469fd0dafcSJoerg Wunsch.It
947137db389SSteve PriceUser or group recorded, added, or modified unexpectedly disappeared.
9489fd0dafcSJoerg Wunsch.El
9499fd0dafcSJoerg Wunsch.It EX_SOFTWARE
9509fd0dafcSJoerg Wunsch.Bl -bullet -compact
9519fd0dafcSJoerg Wunsch.It
9529fd0dafcSJoerg WunschNo more group or user ids available within specified range.
9539fd0dafcSJoerg Wunsch.El
9549fd0dafcSJoerg Wunsch.It EX_IOERR
9559fd0dafcSJoerg Wunsch.Bl -bullet -compact
9569fd0dafcSJoerg Wunsch.It
9579fd0dafcSJoerg WunschUnable to rewrite configuration file.
9589fd0dafcSJoerg Wunsch.It
9599fd0dafcSJoerg WunschError updating group or user database files.
9609fd0dafcSJoerg Wunsch.It
9619fd0dafcSJoerg WunschUpdate error for passwd or group database files.
9629fd0dafcSJoerg Wunsch.El
9639fd0dafcSJoerg Wunsch.It EX_CONFIG
9649fd0dafcSJoerg Wunsch.Bl -bullet -compact
9659fd0dafcSJoerg Wunsch.It
9669fd0dafcSJoerg WunschNo base home directory configured.
9679fd0dafcSJoerg Wunsch.El
9689fd0dafcSJoerg Wunsch.El
969d6f907dcSJoerg Wunsch.Sh SEE ALSO
970d6f907dcSJoerg Wunsch.Xr chpass 1 ,
971053375e8SMike Pritchard.Xr passwd 1 ,
972eebbeceeSLukas Ertl.Xr umask 2 ,
973d6f907dcSJoerg Wunsch.Xr group 5 ,
974bfd34a4aSWolfram Schneider.Xr login.conf 5 ,
975053375e8SMike Pritchard.Xr passwd 5 ,
976053375e8SMike Pritchard.Xr pw.conf 5 ,
977d6f907dcSJoerg Wunsch.Xr pwd_mkdb 8 ,
978053375e8SMike Pritchard.Xr vipw 8
979d6f907dcSJoerg Wunsch.Sh HISTORY
980490d5836SPhilippe CharnierThe
981490d5836SPhilippe Charnier.Nm
982490d5836SPhilippe Charnierutility was written to mimic many of the options used in the SYSV
983d6f907dcSJoerg Wunsch.Em shadow
9849fd0dafcSJoerg Wunschsupport suite, but is modified for passwd and group fields specific to
985053375e8SMike Pritchardthe
986053375e8SMike Pritchard.Bx 4.4
9879fd0dafcSJoerg Wunschoperating system, and combines all of the major elements
9889fd0dafcSJoerg Wunschinto a single command.
989