xref: /freebsd/usr.sbin/pw/pw.8 (revision 466c257c1f4e0072e94f0224988df9f96b11a941)
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.\"
279fd0dafcSJoerg Wunsch.Dd December 9, 1996
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
49d6f907dcSJoerg Wunsch.Op Fl k Ar dir
50d6f907dcSJoerg Wunsch.Op Fl s Ar shell
51d6f907dcSJoerg Wunsch.Op Fl o
52d6f907dcSJoerg Wunsch.Op Fl L Ar class
53d6f907dcSJoerg Wunsch.Op Fl h Ar fd
549fd0dafcSJoerg Wunsch.Op Fl N
559fd0dafcSJoerg Wunsch.Op Fl P
56f1d684faSDavid Nugent.Op Fl Y
57e97407b4SRuslan Ermilov.Nm
585f12594aSDavid Nugent.Op Fl V Ar etcdir
59d6f907dcSJoerg Wunsch.Ar useradd
60d6f907dcSJoerg Wunsch.Op name|uid
61f1d684faSDavid Nugent.Fl D
62d6f907dcSJoerg Wunsch.Op Fl C Ar config
63d6f907dcSJoerg Wunsch.Op Fl q
64d6f907dcSJoerg Wunsch.Op Fl b Ar dir
65d6f907dcSJoerg Wunsch.Op Fl e Ar days
66d6f907dcSJoerg Wunsch.Op Fl p Ar days
67d6f907dcSJoerg Wunsch.Op Fl g Ar group
68d6f907dcSJoerg Wunsch.Op Fl G Ar grouplist
69d6f907dcSJoerg Wunsch.Op Fl k Ar dir
70610a5778SRuslan Ermilov.Op Fl u Ar min , Ns Ar max
71610a5778SRuslan Ermilov.Op Fl i Ar min , Ns Ar max
72d6f907dcSJoerg Wunsch.Op Fl w Ar method
73d6f907dcSJoerg Wunsch.Op Fl s Ar shell
74f1d684faSDavid Nugent.Op Fl y Ar path
75e97407b4SRuslan Ermilov.Nm
765f12594aSDavid Nugent.Op Fl V Ar etcdir
77d6f907dcSJoerg Wunsch.Ar userdel
78d6f907dcSJoerg Wunsch.Op name|uid
79d6f907dcSJoerg Wunsch.Op Fl n Ar name
80d6f907dcSJoerg Wunsch.Op Fl u Ar uid
81d6f907dcSJoerg Wunsch.Op Fl r
82f1d684faSDavid Nugent.Op Fl Y
83e97407b4SRuslan Ermilov.Nm
845f12594aSDavid Nugent.Op Fl V Ar etcdir
85d6f907dcSJoerg Wunsch.Ar usermod
86d6f907dcSJoerg Wunsch.Op name|uid
87d6f907dcSJoerg Wunsch.Op Fl C Ar config
88d6f907dcSJoerg Wunsch.Op Fl q
89d6f907dcSJoerg Wunsch.Op Fl n Ar name
90d6f907dcSJoerg Wunsch.Op Fl u Ar uid
91d6f907dcSJoerg Wunsch.Op Fl c Ar comment
92d6f907dcSJoerg Wunsch.Op Fl d Ar dir
93d6f907dcSJoerg Wunsch.Op Fl e Ar date
94d6f907dcSJoerg Wunsch.Op Fl p Ar date
95d6f907dcSJoerg Wunsch.Op Fl g Ar group
96d6f907dcSJoerg Wunsch.Op Fl G Ar grouplist
97d6f907dcSJoerg Wunsch.Op Fl l Ar name
98d6f907dcSJoerg Wunsch.Op Fl m
99d6f907dcSJoerg Wunsch.Op Fl k Ar dir
1009fd0dafcSJoerg Wunsch.Op Fl w Ar method
101d6f907dcSJoerg Wunsch.Op Fl s Ar shell
102d6f907dcSJoerg Wunsch.Op Fl L Ar class
103d6f907dcSJoerg Wunsch.Op Fl h Ar fd
1049fd0dafcSJoerg Wunsch.Op Fl N
1059fd0dafcSJoerg Wunsch.Op Fl P
106f1d684faSDavid Nugent.Op Fl Y
107e97407b4SRuslan Ermilov.Nm
1085f12594aSDavid Nugent.Op Fl V Ar etcdir
109d6f907dcSJoerg Wunsch.Ar usershow
110d6f907dcSJoerg Wunsch.Op name|uid
111d6f907dcSJoerg Wunsch.Op Fl n Ar name
112d6f907dcSJoerg Wunsch.Op Fl u Ar uid
113d6f907dcSJoerg Wunsch.Op Fl F
1149fd0dafcSJoerg Wunsch.Op Fl P
1154731d076SDima Dorfman.Op Fl 7
116d6f907dcSJoerg Wunsch.Op Fl a
117e97407b4SRuslan Ermilov.Nm
1185f12594aSDavid Nugent.Op Fl V Ar etcdir
1199fd0dafcSJoerg Wunsch.Ar usernext
1209fd0dafcSJoerg Wunsch.Op Fl C Ar config
1219fd0dafcSJoerg Wunsch.Op Fl q
122e97407b4SRuslan Ermilov.Nm
1235f12594aSDavid Nugent.Op Fl V Ar etcdir
124d6f907dcSJoerg Wunsch.Ar groupadd
125d6f907dcSJoerg Wunsch.Op group|gid
126d6f907dcSJoerg Wunsch.Op Fl C Ar config
127d6f907dcSJoerg Wunsch.Op Fl q
128d6f907dcSJoerg Wunsch.Op Fl n Ar group
129d6f907dcSJoerg Wunsch.Op Fl g Ar gid
1309fd0dafcSJoerg Wunsch.Op Fl M Ar members
131d6f907dcSJoerg Wunsch.Op Fl o
132d6f907dcSJoerg Wunsch.Op Fl h Ar fd
1339fd0dafcSJoerg Wunsch.Op Fl N
1349fd0dafcSJoerg Wunsch.Op Fl P
135f1d684faSDavid Nugent.Op Fl Y
136e97407b4SRuslan Ermilov.Nm
1375f12594aSDavid Nugent.Op Fl V Ar etcdir
138d6f907dcSJoerg Wunsch.Ar groupdel
13906f64964SJoseph Koshy.Op group|gid
140d6f907dcSJoerg Wunsch.Op Fl n Ar name
141d6f907dcSJoerg Wunsch.Op Fl g Ar gid
142f1d684faSDavid Nugent.Op Fl Y
143e97407b4SRuslan Ermilov.Nm
1445f12594aSDavid Nugent.Op Fl V Ar etcdir
145d6f907dcSJoerg Wunsch.Ar groupmod
14606f64964SJoseph Koshy.Op group|gid
147d6f907dcSJoerg Wunsch.Op Fl C Ar config
148d6f907dcSJoerg Wunsch.Op Fl q
149d6f907dcSJoerg Wunsch.Op Fl n Ar name
150d6f907dcSJoerg Wunsch.Op Fl g Ar gid
151d6f907dcSJoerg Wunsch.Op Fl l Ar name
1529fd0dafcSJoerg Wunsch.Op Fl M Ar members
1539fd0dafcSJoerg Wunsch.Op Fl m Ar newmembers
154d6f907dcSJoerg Wunsch.Op Fl h Ar fd
1559fd0dafcSJoerg Wunsch.Op Fl N
1569fd0dafcSJoerg Wunsch.Op Fl P
157f1d684faSDavid Nugent.Op Fl Y
158e97407b4SRuslan Ermilov.Nm
1595f12594aSDavid Nugent.Op Fl V Ar etcdir
160d6f907dcSJoerg Wunsch.Ar groupshow
16106f64964SJoseph Koshy.Op group|gid
162d6f907dcSJoerg Wunsch.Op Fl n Ar name
163d6f907dcSJoerg Wunsch.Op Fl g Ar gid
164d6f907dcSJoerg Wunsch.Op Fl F
1659fd0dafcSJoerg Wunsch.Op Fl P
166d6f907dcSJoerg Wunsch.Op Fl a
167e97407b4SRuslan Ermilov.Nm
1685f12594aSDavid Nugent.Op Fl V Ar etcdir
1699fd0dafcSJoerg Wunsch.Ar groupnext
1709fd0dafcSJoerg Wunsch.Op Fl C Ar config
1719fd0dafcSJoerg Wunsch.Op Fl q
172e468afb4SDima Dorfman.Nm
173e468afb4SDima Dorfman.Op Fl V Ar etcdir
174e468afb4SDima Dorfman.Ar lock
175e468afb4SDima Dorfman.Op name|uid
176e468afb4SDima Dorfman.Op Fl C Ar config
177e468afb4SDima Dorfman.Op Fl q
178e468afb4SDima Dorfman.Nm
179e468afb4SDima Dorfman.Op Fl V Ar etcdir
180e468afb4SDima Dorfman.Ar unlock
181e468afb4SDima Dorfman.Op name|uid
182e468afb4SDima Dorfman.Op Fl C Ar config
183e468afb4SDima Dorfman.Op Fl q
184d6f907dcSJoerg Wunsch.Sh DESCRIPTION
1851dcc6ec7SPhilippe Charnier.Nm Pw
186d6f907dcSJoerg Wunschis a command-line based editor for the system
1871dcc6ec7SPhilippe Charnier.Ar user
188d6f907dcSJoerg Wunschand
1891dcc6ec7SPhilippe Charnier.Ar group
1903a7e7077SDaniel O'Callaghanfiles, allowing the superuser an easy to use and standardized way of adding,
191d6f907dcSJoerg Wunschmodifying and removing users and groups.
192d6f907dcSJoerg WunschNote that
1931dcc6ec7SPhilippe Charnier.Nm
194137db389SSteve Priceonly operates on the local user and group files.  NIS users and groups must be
195d6f907dcSJoerg Wunschmaintained on the NIS server.
1961dcc6ec7SPhilippe Charnier.Nm Pw
197053375e8SMike Pritchardhandles updating the
198053375e8SMike Pritchard.Pa passwd ,
199053375e8SMike Pritchard.Pa master.passwd ,
200053375e8SMike Pritchard.Pa group
201053375e8SMike Pritchardand the secure and insecure
202d6f907dcSJoerg Wunschpassword database files, and must be run as root.
203d6f907dcSJoerg Wunsch.Pp
204137db389SSteve PriceThe first one or two keywords provided to
205137db389SSteve Price.Nm
206137db389SSteve Priceon the command line provide the context for the remainder of the arguments.
207137db389SSteve PriceThe keywords
208d6f907dcSJoerg Wunsch.Ar user
209d6f907dcSJoerg Wunschand
210d6f907dcSJoerg Wunsch.Ar group
211137db389SSteve Pricemay be combined with
212d6f907dcSJoerg Wunsch.Ar add ,
213d6f907dcSJoerg Wunsch.Ar del ,
2149fd0dafcSJoerg Wunsch.Ar mod ,
215d6f907dcSJoerg Wunsch.Ar show ,
2169fd0dafcSJoerg Wunschor
217137db389SSteve Price.Ar next
2184e86fcacSSheldon Hearnin any order.
2194e86fcacSSheldon Hearn(For example,
220137db389SSteve Price.Ar showuser ,
221137db389SSteve Price.Ar usershow ,
222610a5778SRuslan Ermilov.Ar show user ,
223610a5778SRuslan Ermilovand
224137db389SSteve Price.Ar user show
225137db389SSteve Priceall mean the same thing.)
226137db389SSteve PriceThis flexibility is useful for interactive scripts calling
2271dcc6ec7SPhilippe Charnier.Nm
228137db389SSteve Pricefor user and group database manipulation.
229d6f907dcSJoerg WunschFollowing these keywords, you may optionally specify the user or group name or numeric
230d6f907dcSJoerg Wunschid as an alternative to using the
231d6f907dcSJoerg Wunsch.Fl n Ar name ,
232d6f907dcSJoerg Wunsch.Fl u Ar uid ,
233d6f907dcSJoerg Wunsch.Fl g Ar gid
2349fd0dafcSJoerg Wunschoptions.
235d6f907dcSJoerg Wunsch.Pp
2365f12594aSDavid NugentThe following flags are common to most or all modes of operation;
237d6f907dcSJoerg Wunsch.Pp
2389fd0dafcSJoerg Wunsch.Bl -tag -width "-G grouplist"
2395f12594aSDavid Nugent.It Fl V Ar etcdir
2405f12594aSDavid NugentThis flag sets an alternate location for the password, group and configuration files,
2415f12594aSDavid Nugentand may be used to maintain a user/group database in an alternate location.
2425f12594aSDavid NugentIf this switch is specified, the system
2435f12594aSDavid Nugent.Pa /etc/pw.conf
2445f12594aSDavid Nugentwill not be sourced for default configuration data, but the file pw.conf in the
2455f12594aSDavid Nugentspecified directory will be used instead (or none, if it does not exist).
2465f12594aSDavid NugentThe
2475f12594aSDavid Nugent.Fl C
2485f12594aSDavid Nugentflag may be used to override this behaviour.
2495f12594aSDavid NugentAs an exception to the general rule where options must follow the operation
2505f12594aSDavid Nugenttype, the
2515f12594aSDavid Nugent.Fl V
2525f12594aSDavid Nugentflag may be used on the command line before the operation keyword.
253d6f907dcSJoerg Wunsch.It Fl C Ar config
254d6f907dcSJoerg WunschBy default,
2551dcc6ec7SPhilippe Charnier.Nm
256d6f907dcSJoerg Wunschreads the file
257d6f907dcSJoerg Wunsch.Pa /etc/pw.conf
258137db389SSteve Priceto obtain policy information on how new user accounts and groups are to be created.
259137db389SSteve PriceThe
2609fd0dafcSJoerg Wunsch.Fl C
2619fd0dafcSJoerg Wunschoption specifies a different configuration file.
262137db389SSteve PriceWhile most of the contents of the configuration file may be overridden via
263137db389SSteve Pricecommand-line options, it may be more convenient to keep standard information in a
264137db389SSteve Priceconfiguration file.
265d6f907dcSJoerg Wunsch.It Fl q
266d6f907dcSJoerg WunschUse of this option causes
2671dcc6ec7SPhilippe Charnier.Nm
268d6f907dcSJoerg Wunschto suppress error messages, which may be useful in interactive environments where it
269d6f907dcSJoerg Wunschis preferable to interpret status codes returned by
2701dcc6ec7SPhilippe Charnier.Nm
271d6f907dcSJoerg Wunschrather than messing up a carefully formatted display.
2729fd0dafcSJoerg Wunsch.It Fl N
273137db389SSteve PriceThis option is available in
274137db389SSteve Price.Ar add
275137db389SSteve Priceand
276137db389SSteve Price.Ar modify
277137db389SSteve Priceoperations, and tells
2781dcc6ec7SPhilippe Charnier.Nm
279137db389SSteve Priceto output the result of the operation without updating the user or group
280137db389SSteve Pricedatabases.
2819fd0dafcSJoerg WunschYou may use the
2829fd0dafcSJoerg Wunsch.Fl P
2839fd0dafcSJoerg Wunschoption to switch between standard passwd and readable formats.
284f1d684faSDavid Nugent.It Fl Y
285f1d684faSDavid NugentUsing this option with any of the update modes causes
2861dcc6ec7SPhilippe Charnier.Nm
287f1d684faSDavid Nugentto run
288f1d684faSDavid Nugent.Xr make 1
289f1d684faSDavid Nugentafter changing to the directory
290f1d684faSDavid Nugent.Pa /var/yp .
291137db389SSteve PriceThis is intended to allow automatic updating of NIS database files.
292f1d684faSDavid NugentIf separate passwd and group files are being used by NIS, then use the
293f1d684faSDavid Nugent.Fl y Ar path
294137db389SSteve Priceoption to specify the location of the NIS passwd database so that
295137db389SSteve Price.Nm
296137db389SSteve Pricewill concurrently update it with the system password
297f1d684faSDavid Nugentdatabases.
298d6f907dcSJoerg Wunsch.El
299d6f907dcSJoerg Wunsch.Sh USER OPTIONS
300d6f907dcSJoerg WunschThe following options apply to the
301137db389SSteve Price.Ar useradd
302d6f907dcSJoerg Wunschand
303137db389SSteve Price.Ar usermod
304d6f907dcSJoerg Wunschcommands:
305d6f907dcSJoerg Wunsch.Pp
3069fd0dafcSJoerg Wunsch.Bl -tag -width "-G grouplist"
307d6f907dcSJoerg Wunsch.It Fl n Ar name
3081dcc6ec7SPhilippe CharnierSpecify the user/account name.
309d6f907dcSJoerg Wunsch.It Fl u Ar uid
3101dcc6ec7SPhilippe CharnierSpecify the user/account numeric id.
311d6f907dcSJoerg Wunsch.Pp
312137db389SSteve PriceUsually, you only need to provide one or the other of these options, as the account
313137db389SSteve Pricename will imply the uid, or vice versa.
314137db389SSteve PriceHowever, there are times when you need to provide both.
315d6f907dcSJoerg WunschFor example, when changing the uid of an existing user with
316d6f907dcSJoerg Wunsch.Ar usermod ,
317d6f907dcSJoerg Wunschor overriding the default uid when creating a new account.
318d6f907dcSJoerg WunschIf you wish
3191dcc6ec7SPhilippe Charnier.Nm
320137db389SSteve Priceto automatically allocate the uid to a new user with
321d6f907dcSJoerg Wunsch.Ar useradd ,
322d6f907dcSJoerg Wunschthen you should
323d6f907dcSJoerg Wunsch.Em not
324d6f907dcSJoerg Wunschuse the
32508657612SRuslan Ermilov.Fl u
3269fd0dafcSJoerg Wunschoption.
327137db389SSteve PriceYou may also provide either the account or userid immediately after the
328137db389SSteve Price.Ar useradd ,
329137db389SSteve Price.Ar userdel ,
330137db389SSteve Price.Ar usermod
331137db389SSteve Priceor
332137db389SSteve Price.Ar usershow
333137db389SSteve Pricekeywords on the command line without using the
33408657612SRuslan Ermilov.Fl n
335137db389SSteve Priceor
33608657612SRuslan Ermilov.Fl u
337137db389SSteve Priceoptions.
338d6f907dcSJoerg Wunsch.El
339d6f907dcSJoerg Wunsch.Pp
340d6f907dcSJoerg Wunsch.Bl -tag -width "-G grouplist"
341d6f907dcSJoerg Wunsch.It Fl c Ar comment
342d6f907dcSJoerg WunschThis field sets the contents of the passwd GECOS field, which normally contains up
343d6f907dcSJoerg Wunschto four comma-separated fields containing the user's full name, office or location,
344137db389SSteve Priceand work and home phone numbers.
345d6f907dcSJoerg WunschThese sub-fields are used by convention only, however, and are optional.
346d6f907dcSJoerg WunschIf this field is to contain spaces, you need to quote the comment itself with double
347d6f907dcSJoerg Wunschquotes
348d6f907dcSJoerg Wunsch.Ql \&" .
349d6f907dcSJoerg WunschAvoid using commas in this field as these are used as sub-field separators, and the
350d6f907dcSJoerg Wunschcolon
351d6f907dcSJoerg Wunsch.Ql \&:
352137db389SSteve Pricecharacter also cannot be used as this is the field separator for the passwd
353137db389SSteve Pricefile itself.
354d6f907dcSJoerg Wunsch.It Fl d Ar dir
355d6f907dcSJoerg WunschThis option sets the account's home directory.
356d6f907dcSJoerg WunschNormally, you will only use this if the home directory is to be different from the
357137db389SSteve Pricedefault determined from
358137db389SSteve Price.Pa /etc/pw.conf
3591dcc6ec7SPhilippe Charnier- normally
3601dcc6ec7SPhilippe Charnier.Pa /home
361137db389SSteve Pricewith the account name as a subdirectory.
362d6f907dcSJoerg Wunsch.It Fl e Ar date
3631dcc6ec7SPhilippe CharnierSet the account's expiration date.
364d6f907dcSJoerg WunschFormat of the date is either a UNIX time in decimal, or a date in
365137db389SSteve Price.Ql dd-mmm-yy[yy]
366d6f907dcSJoerg Wunschformat, where dd is the day, mmm is the month, either in numeric or alphabetic format
3671dcc6ec7SPhilippe Charnier('Jan', 'Feb', etc) and year is either a two or four digit year.
368d6f907dcSJoerg WunschThis option also accepts a relative date in the form
369d6f907dcSJoerg Wunsch.Ql \&+n[mhdwoy]
370d6f907dcSJoerg Wunschwhere
371d6f907dcSJoerg Wunsch.Ql \&n
372d6f907dcSJoerg Wunschis a decimal, octal (leading 0) or hexadecimal (leading 0x) digit followed by the
373053375e8SMike Pritchardnumber of Minutes, Hours, Days, Weeks, Months or Years from the current date at
374137db389SSteve Pricewhich the expiration date is to be set.
375d6f907dcSJoerg Wunsch.It Fl p Ar date
3761dcc6ec7SPhilippe CharnierSet the account's password expiration date.
377137db389SSteve PriceThis field is similar to the account expiration date option, except that it
378d6f907dcSJoerg Wunschapplies to forced password changes.
379137db389SSteve PriceThis is set in the same manner as the
38008657612SRuslan Ermilov.Fl e
381137db389SSteve Priceoption.
382d6f907dcSJoerg Wunsch.It Fl g Ar group
3831dcc6ec7SPhilippe CharnierSet the account's primary group to the given group.
384d6f907dcSJoerg Wunsch.Ar group
385137db389SSteve Pricemay be defined by either its name or group number.
386d6f907dcSJoerg Wunsch.It Fl G Ar grouplist
387137db389SSteve PriceSets additional group memberships for an account.
388d6f907dcSJoerg Wunsch.Ar grouplist
389137db389SSteve Priceis a comma-separated list of group names or group numbers.
390137db389SSteve PriceThe user's name is added to the group lists in
391d6f907dcSJoerg Wunsch.Pa /etc/group ,
392137db389SSteve Priceand
393d6f907dcSJoerg Wunschremoved from any groups not specified in
394d6f907dcSJoerg Wunsch.Ar grouplist .
395137db389SSteve PriceNote: a user should not be added to their primary group with
396137db389SSteve Price.Ar grouplist .
397137db389SSteve PriceAlso, group membership changes do not take effect for current user login
398137db389SSteve Pricesessions, requiring the user to reconnect to be affected by the changes.
3999fd0dafcSJoerg Wunsch.It Fl L Ar class
4009fd0dafcSJoerg WunschThis option sets the login class for the user being created.
4019fd0dafcSJoerg WunschSee
4029fd0dafcSJoerg Wunsch.Xr login.conf 5
40316b4ad52SGiorgos Keramidasand
40416b4ad52SGiorgos Keramidas.Xr passwd 5
405137db389SSteve Pricefor more information on user login classes.
406d6f907dcSJoerg Wunsch.It Fl m
407d6f907dcSJoerg WunschThis option instructs
4081dcc6ec7SPhilippe Charnier.Nm
409d6f907dcSJoerg Wunschto attempt to create the user's home directory.
410d6f907dcSJoerg WunschWhile primarily useful when adding a new account with
411d6f907dcSJoerg Wunsch.Ar useradd ,
412d6f907dcSJoerg Wunschthis may also be of use when moving an existing user's home directory elsewhere on
413d6f907dcSJoerg Wunschthe filesystem.
414d6f907dcSJoerg WunschThe new home directory is populated with the contents of the
415d6f907dcSJoerg Wunsch.Ar skeleton
416d6f907dcSJoerg Wunschdirectory, which typically contains a set of shell configuration files that the
417053375e8SMike Pritcharduser may personalize to taste.
418d6f907dcSJoerg WunschWhen
41908657612SRuslan Ermilov.Fl m
420d6f907dcSJoerg Wunschis used on an account with
421d6f907dcSJoerg Wunsch.Ar usermod ,
422137db389SSteve Priceexisting configuration files in the user's home directory are
423d6f907dcSJoerg Wunsch.Em not
424137db389SSteve Priceoverwritten from the skeleton files.
425d6f907dcSJoerg Wunsch.Pp
426137db389SSteve PriceWhen a user's home directory is created, it will by default be a subdirectory of the
427d6f907dcSJoerg Wunsch.Ar basehome
428137db389SSteve Pricedirectory as specified by the
42908657612SRuslan Ermilov.Fl b
430137db389SSteve Priceoption (see below), bearing the name of the new account.
431137db389SSteve PriceThis can be overridden by the
43208657612SRuslan Ermilov.Fl d
433d6f907dcSJoerg Wunschoption on the command line, if desired.
434d6f907dcSJoerg Wunsch.It Fl k Ar dir
4351dcc6ec7SPhilippe CharnierSet the
436d6f907dcSJoerg Wunsch.Ar skeleton
437137db389SSteve Pricedirectory, from which basic startup and configuration files are copied when
438d6f907dcSJoerg Wunschthe user's home directory is created.
439137db389SSteve PriceThis option only has meaning when used with the
44008657612SRuslan Ermilov.Fl d
441137db389SSteve Priceor
44208657612SRuslan Ermilov.Fl m
443137db389SSteve Priceflags.
444d6f907dcSJoerg Wunsch.It Fl s Ar shell
4451dcc6ec7SPhilippe CharnierSet or changes the user's login shell to
446d6f907dcSJoerg Wunsch.Ar shell .
447d6f907dcSJoerg WunschIf the path to the shell program is omitted,
4481dcc6ec7SPhilippe Charnier.Nm
449d6f907dcSJoerg Wunschsearches the
450d6f907dcSJoerg Wunsch.Ar shellpath
451d6f907dcSJoerg Wunschspecified in
452d6f907dcSJoerg Wunsch.Pa /etc/pw.conf
453d6f907dcSJoerg Wunschand fills it in as appropriate.
454d6f907dcSJoerg WunschNote that unless you have a specific reason to do so, you should avoid
455d6f907dcSJoerg Wunschspecifying the path - this will allow
4561dcc6ec7SPhilippe Charnier.Nm
457d6f907dcSJoerg Wunschto validate that the program exists and is executable.
458d6f907dcSJoerg WunschSpecifying a full path (or supplying a blank "" shell) avoids this check
459d6f907dcSJoerg Wunschand allows for such entries as
4601dcc6ec7SPhilippe Charnier.Pa /nonexistent
461d6f907dcSJoerg Wunschthat should be set for accounts not intended for interactive login.
462d6f907dcSJoerg Wunsch.It Fl h Ar fd
463d6f907dcSJoerg WunschThis option provides a special interface by which interactive scripts can
464d6f907dcSJoerg Wunschset an account password using
465e97407b4SRuslan Ermilov.Nm .
466137db389SSteve PriceBecause the command line and environment are fundamentally insecure mechanisms
467d6f907dcSJoerg Wunschby which programs can accept information,
4681dcc6ec7SPhilippe Charnier.Nm
469d6f907dcSJoerg Wunschwill only allow setting of account and group passwords via a file descriptor
470d6f907dcSJoerg Wunsch(usually a pipe between an interactive script and the program).
471d6f907dcSJoerg Wunsch.Ar sh ,
472d6f907dcSJoerg Wunsch.Ar bash ,
473d6f907dcSJoerg Wunsch.Ar ksh
474d6f907dcSJoerg Wunschand
475d6f907dcSJoerg Wunsch.Ar perl
476137db389SSteve Priceall possess mechanisms by which this can be done.
477d6f907dcSJoerg WunschAlternatively,
478325970a9SPhilippe Charnier.Nm
479d6f907dcSJoerg Wunschwill prompt for the user's password if
48008657612SRuslan Ermilov.Fl h Ar 0
481d6f907dcSJoerg Wunschis given, nominating
482d6f907dcSJoerg Wunsch.Em stdin
483d6f907dcSJoerg Wunschas the file descriptor on which to read the password.
484137db389SSteve PriceNote that this password will be read only once and is intended
485137db389SSteve Pricefor use by a script rather than for interactive use.
486d6f907dcSJoerg WunschIf you wish to have new password confirmation along the lines of
487d6f907dcSJoerg Wunsch.Xr passwd 1 ,
488137db389SSteve Pricethis must be implemented as part of an interactive script that calls
489e97407b4SRuslan Ermilov.Nm .
490d6f907dcSJoerg Wunsch.Pp
491d6f907dcSJoerg WunschIf a value of
492d6f907dcSJoerg Wunsch.Ql \&-
493d6f907dcSJoerg Wunschis given as the argument
494d6f907dcSJoerg Wunsch.Ar fd ,
495d6f907dcSJoerg Wunschthen the password will be set to
496d6f907dcSJoerg Wunsch.Ql \&* ,
497137db389SSteve Pricerendering the account inaccessible via password-based login.
498d6f907dcSJoerg Wunsch.El
499d6f907dcSJoerg Wunsch.Pp
500d6f907dcSJoerg WunschIt is possible to use
501d6f907dcSJoerg Wunsch.Ar useradd
502d6f907dcSJoerg Wunschto create a new account that duplicates an existing user id.
503d6f907dcSJoerg WunschWhile this is normally considered an error and will be rejected, the
50408657612SRuslan Ermilov.Fl o
5059fd0dafcSJoerg Wunschoption overrides the check for duplicates and allows the duplication of
5069fd0dafcSJoerg Wunschthe user id.
5079fd0dafcSJoerg WunschThis may be useful if you allow the same user to login under
5089fd0dafcSJoerg Wunschdifferent contexts (different group allocations, different home
5099fd0dafcSJoerg Wunschdirectory, different shell) while providing basically the same
5109fd0dafcSJoerg Wunschpermissions for access to the user's files in each account.
511d6f907dcSJoerg Wunsch.Pp
512d6f907dcSJoerg WunschThe
513d6f907dcSJoerg Wunsch.Ar useradd
514d6f907dcSJoerg Wunschcommand also has the ability to set new user and group defaults by using the
51508657612SRuslan Ermilov.Fl D
5169fd0dafcSJoerg Wunschoption.
517d6f907dcSJoerg WunschInstead of adding a new user,
5181dcc6ec7SPhilippe Charnier.Nm
519d6f907dcSJoerg Wunschwrites a new set of defaults to its configuration file,
520d6f907dcSJoerg Wunsch.Pa /etc/pw.conf .
521d6f907dcSJoerg WunschWhen using the
52208657612SRuslan Ermilov.Fl D
5239fd0dafcSJoerg Wunschoption, you must not use either
52408657612SRuslan Ermilov.Fl n Ar name
525d6f907dcSJoerg Wunschor
52608657612SRuslan Ermilov.Fl u Ar uid
527d6f907dcSJoerg Wunschor an error will result.
528d6f907dcSJoerg WunschUse of
52908657612SRuslan Ermilov.Fl D
5309fd0dafcSJoerg Wunschchanges the meaning of several command line switches in the
531d6f907dcSJoerg Wunsch.Ar useradd
532d6f907dcSJoerg Wunschcommand.
533d6f907dcSJoerg WunschThese are:
534d6f907dcSJoerg Wunsch.Bl -tag -width "-G grouplist"
535d6f907dcSJoerg Wunsch.It Fl D
536d6f907dcSJoerg WunschSet default values in
537d6f907dcSJoerg Wunsch.Pa /etc/pw.conf
538d6f907dcSJoerg Wunschconfiguration file, or a different named configuration file if the
53908657612SRuslan Ermilov.Fl C Ar config
5409fd0dafcSJoerg Wunschoption is used.
541d6f907dcSJoerg Wunsch.It Fl b Ar dir
5421dcc6ec7SPhilippe CharnierSet the root directory in which user home directories are created.
543d6f907dcSJoerg WunschThe default value for this is
5441dcc6ec7SPhilippe Charnier.Pa /home ,
545d6f907dcSJoerg Wunschbut it may be set elsewhere as desired.
546d6f907dcSJoerg Wunsch.It Fl e Ar days
5471dcc6ec7SPhilippe CharnierSet the default account expiration period in days.
548d6f907dcSJoerg WunschUnlike use without
54908657612SRuslan Ermilov.Fl D ,
550d6f907dcSJoerg Wunschthe argument must be numeric, which specifies the number of days after creation when
551d6f907dcSJoerg Wunschthe account is to expire.
552d6f907dcSJoerg WunschA value of 0 suppresses automatic calculation of the expiry date.
553d6f907dcSJoerg Wunsch.It Fl p Ar days
5541dcc6ec7SPhilippe CharnierSet the default password expiration period in days.
555d6f907dcSJoerg Wunsch.It Fl g Ar group
5561dcc6ec7SPhilippe CharnierSet the default group for new users.
557d6f907dcSJoerg WunschIf a blank group is specified using
55808657612SRuslan Ermilov.Fl g Ar \&"" ,
559137db389SSteve Pricethen new users will be allocated their own private primary group
560137db389SSteve Pricewith the same name as their login name.
561d6f907dcSJoerg WunschIf a group is supplied, either its name or uid may be given as an argument.
562d6f907dcSJoerg Wunsch.It Fl G Ar grouplist
563137db389SSteve PriceSet the default groups in which new users are granted membership.
564d6f907dcSJoerg WunschThis is a separate set of groups from the primary group, and you should avoid
565137db389SSteve Pricenominating the same group as both primary and extra groups.
566d6f907dcSJoerg WunschIn other words, these extra groups determine membership in groups
567d6f907dcSJoerg Wunsch.Em other than
568d6f907dcSJoerg Wunschthe primary group.
569d6f907dcSJoerg Wunsch.Ar grouplist
570137db389SSteve Priceis a comma-separated list of group names or ids, and are always
571d6f907dcSJoerg Wunschstored in
572d6f907dcSJoerg Wunsch.Pa /etc/pw.conf
573d6f907dcSJoerg Wunschby their symbolic names.
5749fd0dafcSJoerg Wunsch.It Fl L Ar class
5759fd0dafcSJoerg WunschThis option sets the default login class for new users.
576d6f907dcSJoerg Wunsch.It Fl k Ar dir
5771dcc6ec7SPhilippe CharnierSet the default
578d6f907dcSJoerg Wunsch.Em skeleton
579053375e8SMike Pritcharddirectory, from which prototype shell and other initialization files are copied when
5801dcc6ec7SPhilippe Charnier.Nm
581d6f907dcSJoerg Wunschcreates a user's home directory.
582610a5778SRuslan Ermilov.It Xo
583610a5778SRuslan Ermilov.Fl u Ar min , Ns Ar max ,
584610a5778SRuslan Ermilov.Fl i Ar min , Ns Ar max
585610a5778SRuslan Ermilov.Xc
5869fd0dafcSJoerg WunschThese options set the minimum and maximum user and group ids allocated for new accounts
587d6f907dcSJoerg Wunschand groups created by
588e97407b4SRuslan Ermilov.Nm .
589d6f907dcSJoerg WunschThe default values for each is 1000 minimum and 32000 maximum.
590d6f907dcSJoerg Wunsch.Ar min
591d6f907dcSJoerg Wunschand
592d6f907dcSJoerg Wunsch.Ar max
593d6f907dcSJoerg Wunschare both numbers, where max must be greater than min, and both must be between 0
594d6f907dcSJoerg Wunschand 32767.
595d6f907dcSJoerg WunschIn general, user and group ids less than 100 are reserved for use by the system,
596d6f907dcSJoerg Wunschand numbers greater than 32000 may also be reserved for special purposes (used by
597d6f907dcSJoerg Wunschsome system daemons).
598d6f907dcSJoerg Wunsch.It Fl w Ar method
599d6f907dcSJoerg WunschThe
60008657612SRuslan Ermilov.Fl w
6019fd0dafcSJoerg Wunschoption sets the default method used to set passwords for newly created user accounts.
602d6f907dcSJoerg Wunsch.Ar method
603d6f907dcSJoerg Wunschis one of:
604d6f907dcSJoerg Wunsch.Pp
605d6f907dcSJoerg Wunsch.Bl -tag -width random -offset indent -compact
606d6f907dcSJoerg Wunsch.It no
6071dcc6ec7SPhilippe Charnierdisable login on newly created accounts
608d6f907dcSJoerg Wunsch.It yes
6091dcc6ec7SPhilippe Charnierforce the password to be the account name
610d6f907dcSJoerg Wunsch.It none
6111dcc6ec7SPhilippe Charnierforce a blank password
612d6f907dcSJoerg Wunsch.It random
6131dcc6ec7SPhilippe Charniergenerate a random password
614d6f907dcSJoerg Wunsch.El
615d6f907dcSJoerg Wunsch.Pp
616d6f907dcSJoerg WunschThe
617d6f907dcSJoerg Wunsch.Ql \&random
618d6f907dcSJoerg Wunschor
619d6f907dcSJoerg Wunsch.Ql \&no
620d6f907dcSJoerg Wunschmethods are the most secure; in the former case,
6211dcc6ec7SPhilippe Charnier.Nm
622d6f907dcSJoerg Wunschgenerates a password and prints it to stdout, which is suitable where you issue
623d6f907dcSJoerg Wunschusers with passwords to access their accounts rather than having the user nominate
624d6f907dcSJoerg Wunschtheir own (possibly poorly chosen) password.
625d6f907dcSJoerg WunschThe
626d6f907dcSJoerg Wunsch.Ql \&no
627d6f907dcSJoerg Wunschmethod requires that the superuser use
628d6f907dcSJoerg Wunsch.Xr passwd 1
629d6f907dcSJoerg Wunschto render the account accessible with a password.
630f1d684faSDavid Nugent.It Fl y Ar path
631f1d684faSDavid NugentThis sets the pathname of the database used by NIS if you are not sharing
632f1d684faSDavid Nugentthe information from
633f1d684faSDavid Nugent.Pa /etc/master.passwd
634f1d684faSDavid Nugentdirectly with NIS.
635137db389SSteve PriceYou should only set this option for NIS servers.
636d6f907dcSJoerg Wunsch.El
637d6f907dcSJoerg Wunsch.Pp
638d6f907dcSJoerg WunschThe
639d6f907dcSJoerg Wunsch.Ar userdel
640f2e366a1SSheldon Hearncommand has only three valid options.
641f2e366a1SSheldon HearnThe
64208657612SRuslan Ermilov.Fl n Ar name
643d6f907dcSJoerg Wunschand
64408657612SRuslan Ermilov.Fl u Ar uid
6459fd0dafcSJoerg Wunschoptions have already been covered above.
6469fd0dafcSJoerg WunschThe additional option is:
6479fd0dafcSJoerg Wunsch.Bl -tag -width "-G grouplist"
648d6f907dcSJoerg Wunsch.It Fl r
649d6f907dcSJoerg WunschThis tells
6501dcc6ec7SPhilippe Charnier.Nm
651d6f907dcSJoerg Wunschto remove the user's home directory and all of its contents.
6521dcc6ec7SPhilippe Charnier.Nm Pw
653d6f907dcSJoerg Wunscherrs on the side of caution when removing files from the system.
654d6f907dcSJoerg WunschFirstly, it will not do so if the uid of the account being removed is also used by
655d6f907dcSJoerg Wunschanother account on the system, and the 'home' directory in the password file is
656d6f907dcSJoerg Wunscha valid path that commences with the character
657d6f907dcSJoerg Wunsch.Ql \&/ .
658d6f907dcSJoerg WunschSecondly, it will only remove files and directories that are actually owned by
659d6f907dcSJoerg Wunschthe user, or symbolic links owned by anyone under the user's home directory.
660d6f907dcSJoerg WunschFinally, after deleting all contents owned by the user only empty directories
661d6f907dcSJoerg Wunschwill be removed.
662053375e8SMike PritchardIf any additional cleanup work is required, this is left to the administrator.
663d6f907dcSJoerg Wunsch.El
664d6f907dcSJoerg Wunsch.Pp
665d6f907dcSJoerg WunschMail spool files and crontabs are always removed when an account is deleted as these
666d6f907dcSJoerg Wunschare unconditionally attached to the user name.
667d6f907dcSJoerg WunschJobs queued for processing by
668d6f907dcSJoerg Wunsch.Ar at
669137db389SSteve Priceare also removed if the user's uid is unique and not also used by another account on the
670137db389SSteve Pricesystem.
671d6f907dcSJoerg Wunsch.Pp
672d6f907dcSJoerg WunschThe
673d6f907dcSJoerg Wunsch.Ar usershow
674d6f907dcSJoerg Wunschcommand allows viewing of an account in one of two formats.
675d6f907dcSJoerg WunschBy default, the format is identical to the format used in
676d6f907dcSJoerg Wunsch.Pa /etc/master.passwd
677d6f907dcSJoerg Wunschwith the password field replaced with a
678d6f907dcSJoerg Wunsch.Ql \&* .
679d6f907dcSJoerg WunschIf the
68008657612SRuslan Ermilov.Fl P
6819fd0dafcSJoerg Wunschoption is used, then
6821dcc6ec7SPhilippe Charnier.Nm
683d6f907dcSJoerg Wunschoutputs the account details in a more human readable form.
6844731d076SDima DorfmanIf the
6854731d076SDima Dorfman.Fl 7
6864731d076SDima Dorfmanoption is used, the account details are shown in v7 format.
687d6f907dcSJoerg WunschThe
68808657612SRuslan Ermilov.Fl a
6899fd0dafcSJoerg Wunschoption lists all users currently on file.
690466c257cSDima DorfmanUsing
691466c257cSDima Dorfman.Fl F
692466c257cSDima Dorfmanforces
693466c257cSDima Dorfman.Nm
694466c257cSDima Dorfmanto print the details of an account even if it does not exist.
6959fd0dafcSJoerg Wunsch.Pp
6969fd0dafcSJoerg WunschThe command
6979fd0dafcSJoerg Wunsch.Ar usernext
6989fd0dafcSJoerg Wunschreturns the next available user and group ids separated by a colon.
6999fd0dafcSJoerg WunschThis is normally of interest only to interactive scripts or front-ends
7009fd0dafcSJoerg Wunschthat use
701e97407b4SRuslan Ermilov.Nm .
702d6f907dcSJoerg Wunsch.Sh GROUP OPTIONS
703d6f907dcSJoerg WunschThe
70408657612SRuslan Ermilov.Fl C
705d6f907dcSJoerg Wunschand
70608657612SRuslan Ermilov.Fl q
7079fd0dafcSJoerg Wunschoptions (explained at the start of the previous section) are available
7089fd0dafcSJoerg Wunschwith the group manipulation commands.
709d6f907dcSJoerg WunschOther common options to all group-related commands are:
7109fd0dafcSJoerg Wunsch.Bl -tag -width "-m newmembers"
711d6f907dcSJoerg Wunsch.It Fl n Ar name
7121dcc6ec7SPhilippe CharnierSpecify the group name.
713d6f907dcSJoerg Wunsch.It Fl g Ar gid
7141dcc6ec7SPhilippe CharnierSpecify the group numeric id.
715d6f907dcSJoerg Wunsch.Pp
7169fd0dafcSJoerg WunschAs with the account name and id fields, you will usually only need
7179fd0dafcSJoerg Wunschto supply one of these, as the group name implies the uid and vice
7189fd0dafcSJoerg Wunschversa.
7199fd0dafcSJoerg WunschYou will only need to use both when setting a specific group id
7209fd0dafcSJoerg Wunschagainst a new group or when changing the uid of an existing group.
7217ecd7a42SJoseph Koshy.It Fl M Ar memberlist
7229fd0dafcSJoerg WunschThis option provides an alternative way to add existing users to a
7239fd0dafcSJoerg Wunschnew group (in groupadd) or replace an existing membership list (in
7249fd0dafcSJoerg Wunschgroupmod).
7259fd0dafcSJoerg Wunsch.Ar memberlist
7269fd0dafcSJoerg Wunschis a comma separated list of valid and existing user names or uids.
7279fd0dafcSJoerg Wunsch.It Fl m Ar newmembers
7289fd0dafcSJoerg WunschSimilar to
72908657612SRuslan Ermilov.Fl M ,
7309fd0dafcSJoerg Wunschthis option allows the
7319fd0dafcSJoerg Wunsch.Em addition
732137db389SSteve Priceof existing users to a group without replacing the existing list of
7339fd0dafcSJoerg Wunschmembers.
734137db389SSteve PriceLogin names or user ids may be used, and duplicate users are
735137db389SSteve Pricesilently eliminated.
736d6f907dcSJoerg Wunsch.El
737d6f907dcSJoerg Wunsch.Pp
738d6f907dcSJoerg Wunsch.Ar groupadd
739d6f907dcSJoerg Wunschalso has a
74008657612SRuslan Ermilov.Fl o
741137db389SSteve Priceoption that allows allocation of an existing group id to a new group.
742d6f907dcSJoerg WunschThe default action is to reject an attempt to add a group, and this option overrides
743d6f907dcSJoerg Wunschthe check for duplicate group ids.
744d6f907dcSJoerg WunschThere is rarely any need to duplicate a group id.
745d6f907dcSJoerg Wunsch.Pp
746d6f907dcSJoerg WunschThe
747d6f907dcSJoerg Wunsch.Ar groupmod
748137db389SSteve Pricecommand adds one additional option:
749d6f907dcSJoerg Wunsch.Pp
7509fd0dafcSJoerg Wunsch.Bl -tag -width "-m newmembers"
751d6f907dcSJoerg Wunsch.It Fl l Ar name
752d6f907dcSJoerg WunschThis option allows changing of an existing group name to
753d6f907dcSJoerg Wunsch.Ql \&name .
754d6f907dcSJoerg WunschThe new name must not already exist, and any attempt to duplicate an existing group
755d6f907dcSJoerg Wunschname will be rejected.
756d6f907dcSJoerg Wunsch.El
757d6f907dcSJoerg Wunsch.Pp
758d6f907dcSJoerg WunschOptions for
759d6f907dcSJoerg Wunsch.Ar groupshow
760d6f907dcSJoerg Wunschare the same as for
761d6f907dcSJoerg Wunsch.Ar usershow ,
762d6f907dcSJoerg Wunschwith the
76308657612SRuslan Ermilov.Fl g Ar gid
764d6f907dcSJoerg Wunschreplacing
76508657612SRuslan Ermilov.Fl u Ar uid
766d6f907dcSJoerg Wunschto specify the group id.
7674731d076SDima DorfmanThe
7684731d076SDima Dorfman.Fl 7
7694731d076SDima Dorfmanoption does not apply to the
7704731d076SDima Dorfman.Ar groupshow
7714731d076SDima Dorfmancommand.
772d6f907dcSJoerg Wunsch.Pp
7739fd0dafcSJoerg WunschThe command
7749fd0dafcSJoerg Wunsch.Ar groupnext
7759fd0dafcSJoerg Wunschreturns the next available group id on standard output.
776e468afb4SDima Dorfman.Sh USER LOCKING
777e468afb4SDima Dorfman.Nm Pw
778e468afb4SDima Dorfmansupports a simple password locking mechanism for users; it works by
779e468afb4SDima Dorfmanprepending the string
780e468afb4SDima Dorfman.Ql *LOCKED*
781e468afb4SDima Dorfmanto the beginning of the password field in
782e468afb4SDima Dorfman.Pa master.passwd
783e468afb4SDima Dorfmanto prevent successful authentication.
784e468afb4SDima Dorfman.Pp
785e468afb4SDima DorfmanThe
786e468afb4SDima Dorfman.Ar lock
787e468afb4SDima Dorfmanand
788e468afb4SDima Dorfman.Ar unlock
789e468afb4SDima Dorfmancommands take a user name or uid of the account to lock or unlock,
790e468afb4SDima Dorfmanrespectively.  The
79108657612SRuslan Ermilov.Fl V ,
79208657612SRuslan Ermilov.Fl C ,
793e468afb4SDima Dorfmanand
79408657612SRuslan Ermilov.Fl q
795e468afb4SDima Dorfmanoptions as described above are accepted by these commands.
7969fd0dafcSJoerg Wunsch.Sh DIAGNOSTICS
7971dcc6ec7SPhilippe Charnier.Nm Pw
798137db389SSteve Pricereturns EXIT_SUCCESS on successful operation, otherwise
799137db389SSteve Price.Nm
800137db389SSteve Pricereturns one of the
8019fd0dafcSJoerg Wunschfollowing exit codes defined by
8029fd0dafcSJoerg Wunsch.Xr sysexits 3
8039fd0dafcSJoerg Wunschas follows:
8049fd0dafcSJoerg Wunsch.Bl -tag -width xxxx
8059fd0dafcSJoerg Wunsch.It EX_USAGE
8069fd0dafcSJoerg Wunsch.Bl -bullet -compact
8079fd0dafcSJoerg Wunsch.It
8081dcc6ec7SPhilippe CharnierCommand line syntax errors (invalid keyword, unknown option).
8099fd0dafcSJoerg Wunsch.El
8109fd0dafcSJoerg Wunsch.It EX_NOPERM
8119fd0dafcSJoerg Wunsch.Bl -bullet -compact
8129fd0dafcSJoerg Wunsch.It
8139fd0dafcSJoerg WunschAttempting to run one of the update modes as non-root.
8149fd0dafcSJoerg Wunsch.El
8159fd0dafcSJoerg Wunsch.It EX_OSERR
8169fd0dafcSJoerg Wunsch.Bl -bullet -compact
8179fd0dafcSJoerg Wunsch.It
8189fd0dafcSJoerg WunschMemory allocation error.
8199fd0dafcSJoerg Wunsch.It
8209fd0dafcSJoerg WunschRead error from password file descriptor.
8219fd0dafcSJoerg Wunsch.El
8229fd0dafcSJoerg Wunsch.It EX_DATAERR
8239fd0dafcSJoerg Wunsch.Bl -bullet -compact
8249fd0dafcSJoerg Wunsch.It
8259fd0dafcSJoerg WunschBad or invalid data provided or missing on the command line or
826137db389SSteve Pricevia the password file descriptor.
8279fd0dafcSJoerg Wunsch.It
8289fd0dafcSJoerg WunschAttempted to remove, rename root account or change its uid.
8299fd0dafcSJoerg Wunsch.El
8309fd0dafcSJoerg Wunsch.It EX_OSFILE
8319fd0dafcSJoerg Wunsch.Bl -bullet -compact
8329fd0dafcSJoerg Wunsch.It
8339fd0dafcSJoerg WunschSkeleton directory is invalid or does not exist.
8349fd0dafcSJoerg Wunsch.It
8359fd0dafcSJoerg WunschBase home directory is invalid or does not exist.
8369fd0dafcSJoerg Wunsch.It
837137db389SSteve PriceInvalid or non-existent shell specified.
8389fd0dafcSJoerg Wunsch.El
8399fd0dafcSJoerg Wunsch.It EX_NOUSER
8409fd0dafcSJoerg Wunsch.Bl -bullet -compact
8419fd0dafcSJoerg Wunsch.It
8429fd0dafcSJoerg WunschUser, user id, group or group id specified does not exist.
8439fd0dafcSJoerg Wunsch.It
844137db389SSteve PriceUser or group recorded, added, or modified unexpectedly disappeared.
8459fd0dafcSJoerg Wunsch.El
8469fd0dafcSJoerg Wunsch.It EX_SOFTWARE
8479fd0dafcSJoerg Wunsch.Bl -bullet -compact
8489fd0dafcSJoerg Wunsch.It
8499fd0dafcSJoerg WunschNo more group or user ids available within specified range.
8509fd0dafcSJoerg Wunsch.El
8519fd0dafcSJoerg Wunsch.It EX_IOERR
8529fd0dafcSJoerg Wunsch.Bl -bullet -compact
8539fd0dafcSJoerg Wunsch.It
8549fd0dafcSJoerg WunschUnable to rewrite configuration file.
8559fd0dafcSJoerg Wunsch.It
8569fd0dafcSJoerg WunschError updating group or user database files.
8579fd0dafcSJoerg Wunsch.It
8589fd0dafcSJoerg WunschUpdate error for passwd or group database files.
8599fd0dafcSJoerg Wunsch.El
8609fd0dafcSJoerg Wunsch.It EX_CONFIG
8619fd0dafcSJoerg Wunsch.Bl -bullet -compact
8629fd0dafcSJoerg Wunsch.It
8639fd0dafcSJoerg WunschNo base home directory configured.
8649fd0dafcSJoerg Wunsch.El
8659fd0dafcSJoerg Wunsch.El
866d6f907dcSJoerg Wunsch.Sh NOTES
867d6f907dcSJoerg WunschFor a summary of options available with each command, you can use
868d6f907dcSJoerg Wunsch.Dl pw [command] help
869d6f907dcSJoerg WunschFor example,
870d6f907dcSJoerg Wunsch.Dl pw useradd help
871d6f907dcSJoerg Wunschlists all available options for the useradd operation.
872d9b711b7SDavid Nugent.Pp
8731dcc6ec7SPhilippe Charnier.Nm Pw
874137db389SSteve Priceallows 8-bit characters in the passwd GECOS field (user's full name,
875d9b711b7SDavid Nugentoffice, work and home phone number subfields), but disallows them in
876d9b711b7SDavid Nugentuser login and group names.
877137db389SSteve PriceUse 8-bit characters with caution, as connection to the Internet will
878d9b711b7SDavid Nugentrequire that your mail transport program supports 8BITMIME, and will
879d9b711b7SDavid Nugentconvert headers containing 8-bit characters to 7-bit quoted-printable
880d9b711b7SDavid Nugentformat.
881d9b711b7SDavid Nugent.Xr sendmail 8
882d9b711b7SDavid Nugentdoes support this.
883137db389SSteve PriceUse of 8-bit characters in the GECOS field should be used in
884d9b711b7SDavid Nugentconjunction with the user's default locale and character set
885d9b711b7SDavid Nugentand should not be implemented without their use.
886d9b711b7SDavid NugentUsing 8-bit characters may also affect other
887137db389SSteve Priceprograms that transmit the contents of the GECOS field over the
888137db389SSteve PriceInternet, such as
889d9b711b7SDavid Nugent.Xr fingerd 8 ,
890137db389SSteve Priceand a small number of TCP/IP clients, such as IRC, where full names
891d9b711b7SDavid Nugentspecified in the passwd file may be used by default.
892d6f907dcSJoerg Wunsch.Sh FILES
893d6f907dcSJoerg Wunsch.Bl -tag -width /etc/master.passwd.new -compact
894d6f907dcSJoerg Wunsch.It Pa /etc/master.passwd
895d6f907dcSJoerg WunschThe user database
896d6f907dcSJoerg Wunsch.It Pa /etc/passwd
897d6f907dcSJoerg WunschA Version 7 format password file
8989fd0dafcSJoerg Wunsch.It Pa /etc/login.conf
8999fd0dafcSJoerg WunschThe user capabilities database
900d6f907dcSJoerg Wunsch.It Pa /etc/group
901d6f907dcSJoerg WunschThe group database
902d6f907dcSJoerg Wunsch.It Pa /etc/master.passwd.new
903d6f907dcSJoerg WunschTemporary copy of the master password file
904d6f907dcSJoerg Wunsch.It Pa /etc/passwd.new
905d6f907dcSJoerg WunschTemporary copy of the Version 7 password file
906d6f907dcSJoerg Wunsch.It Pa /etc/group.new
907d6f907dcSJoerg WunschTemporary copy of the group file
908d6f907dcSJoerg Wunsch.It Pa /etc/pw.conf
909d6f907dcSJoerg WunschPw default options file
910d6f907dcSJoerg Wunsch.El
911d6f907dcSJoerg Wunsch.Sh SEE ALSO
912d6f907dcSJoerg Wunsch.Xr chpass 1 ,
913053375e8SMike Pritchard.Xr passwd 1 ,
914d6f907dcSJoerg Wunsch.Xr group 5 ,
915bfd34a4aSWolfram Schneider.Xr login.conf 5 ,
916053375e8SMike Pritchard.Xr passwd 5 ,
917053375e8SMike Pritchard.Xr pw.conf 5 ,
918d6f907dcSJoerg Wunsch.Xr pwd_mkdb 8 ,
919053375e8SMike Pritchard.Xr vipw 8
920d6f907dcSJoerg Wunsch.Sh HISTORY
9211dcc6ec7SPhilippe Charnier.Nm Pw
9229fd0dafcSJoerg Wunschwas written to mimic many of the options used in the SYSV
923d6f907dcSJoerg Wunsch.Em shadow
9249fd0dafcSJoerg Wunschsupport suite, but is modified for passwd and group fields specific to
925053375e8SMike Pritchardthe
926053375e8SMike Pritchard.Bx 4.4
9279fd0dafcSJoerg Wunschoperating system, and combines all of the major elements
9289fd0dafcSJoerg Wunschinto a single command.
929