userdb addr set field=value field=value... userdb addr unset field field... userdb addr del userdb path/addr (set | unset | del) ... userdb -f file addr (set | unset | del) ... userdb -show path userdb -show path addr userdb -show -f file userdb -show -f file addr
The userdb
command is a convenient script to individually
manipulate entries in /etc/userdb
. See makeuserdb(8) for a description of its contents.
/etc/userdb
can always be edited using any text editor, the
userdb
command allows a convenient way to modify this file from
another script.
/etc/userdb
can also be a subdirectory, instead of a file.
Specify foo/bar/addr to manipulate addr in the file
/etc/userdb/foo/bar
. You can also use the -f flag: -f
/etc/userdb/foo/bar is equivalent. Use whatever form makes the most sense to
you.
/etc/userdb
must not have any group or world permissions. That's
because its contents may include system passwords (depending upon the
application which uses this virtual user account database).
Each line in /etc/userdb
takes following form:
addr<TAB>field=value|field=value...
addr specifies a unique virtual address. It is followed by a single tab character, then a list of field=value pairs, separated by vertical slash characters. See makeuserdb(8) for definitions of fields.
A text editor can be used to add blank lines or comments in
/etc/userdb
. Any blank lines or comments are ignored by the
userdb
script.
The names of the actual fields, and their contents, are defined entirely by
applications that use the /etc/userdb
database, the
userdb
command just adds or removes arbitrary fields.
For example:
userdb default/info set mail=/home/mail/info
This command accesses the address "info" in
/etc/userdb/default
.
If the second argument to userdb
is "set", the
remaining arguments are taken as field=value pairs, which are
added to the record for addr. If there is no record for addr, a
new record will be appended to the file. If addr exists, any existing
values of any specified fields are removed. If =value is missing,
userdb
stops and prompts for it. This is useful if you're setting
a password field, where you do not want to specify the password on the command
line, which can be seen by the ps(1) command. If userdb
is being
executed by a script, the value can be provided on standard input.
Use "unset" to delete fields from an existing record. Use "del" to delete all fields in the existing record, plus the record itself.
If the first argument to userdb is -show
, userdb
displays the contents of /etc/userdb
. If /etc/userdb
is a
subdirectory path must refer to a specific file in /etc/userdb
. The
-f option can be used instead of path
in order to specify an
arbitrary file.
If addr
is not specified, userdb produces a list, on standard
output, containing all addresses found in the file, on per line. If
addr
is specified, userdb produces a list, on standard output, of
all the fields in the record for this addr
.
The actual virtual account/address database is /etc/userdb.dat
.
This is a binary database file. /etc/userdb
is the plain text
version. After running userdb, execute the makeuserdb(8) command to rebuild
/etc/userdb.dat
and have any changes take effect.
addr must be unique. When /etc/userdb
is a subdirectory,
it's possible to create the same addr in different files in this
subdirectory. This is an error that is not currently detected. Only one of the
duplicate entries will take effect after executing makeuserdb(8). Each time makeuserdb(8) is executed a different duplicate
entry may become the active one.
/etc/userdb
- plain text file, or directory of plain text
files.lock.filename
- lock file for filename
.tmp.filename
- temporary file used to create new contents
of filename