There are a variety of different commands available in the UNIX® environment to manipulate user accounts. The most
common commands are summarized below, followed by more detailed examples of their
usage.
adduser(8) is a simple
program for adding new users. It creates entries in the system passwd and group files. It will also
create a home directory for the new user, copy in the default configuration files
(“dotfiles”) from /usr/share/skel, and can
optionally mail the new user a welcome message.
Example 13-1. Adding a user on FreeBSD
#adduser
Username: jru
Full name: J. Random User
Uid (Leave empty for default):
Login group [jru]:
Login group is jru. Invite jru into other groups? []: wheel
Login class [default]:
Shell (sh csh tcsh zsh nologin) [sh]: zsh
Home directory [/home/jru]:
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]:
Use a random password? (yes/no) [no]:
Enter password:
Enter password again:
Lock out the account after creation? [no]:
Username : jru
Password : ****
Full Name : J. Random User
Uid : 1001
Class :
Groups : jru wheel
Home : /home/jru
Shell : /usr/local/bin/zsh
Locked : no
OK? (yes/no): yes
adduser: INFO: Successfully added (jru) to the user database.
Add another user? (yes/no): no
Goodbye!
#
Note: The password you type in is not echoed, nor are asterisks displayed. Make
sure that you do not mistype the password.
Removes the user from the system's local password file.
Removes the user's home directory (if it is owned by the user).
Removes the incoming mail files belonging to the user from /var/mail.
Removes all files owned by the user from temporary file storage areas such as /tmp.
Finally, removes the username from all groups to which it belongs in /etc/group.
Note: If a group becomes empty and the group name is the same as the username,
the group is removed; this complements the per-user unique groups created by adduser(8).
rmuser(8) cannot be
used to remove superuser accounts, since that is almost always an indication of massive
destruction.
By default, an interactive mode is used, which attempts to make sure you know what you
are doing.
Example 13-2. rmuser Interactive Account Removal
#rmuser jru
Matching password entry:
jru:*:1001:1001::0:0:J. Random User:/home/jru:/usr/local/bin/zsh
Is this the entry you wish to remove? y
Remove user's home directory (/home/jru)? y
Updating password file, updating databases, done.
Updating group file: trusted (removing group jru -- personal group is empty) done.
Removing user's incoming mail file /var/mail/jru: done.
Removing files belonging to jru from /tmp: done.
Removing files belonging to jru from /var/tmp: done.
Removing files belonging to jru from /var/tmp/vi.recover: done.
#
chpass(1) changes user
database information such as passwords, shells, and personal information.
Only system administrators, as the superuser, may change other users' information and
passwords with chpass(1).
When passed no options, aside from an optional username, chpass(1) displays an
editor containing user information. When the user exists from the editor, the user
database is updated with the new information.
Note: You will be asked for your password after exiting the editor if you are
not the superuser.
Example 13-3. Interactive chpass by Superuser
#Changing user database information for jru.
Login: jru
Password: *
Uid [#]: 1001
Gid [# or name]: 1001
Change [month day year]:
Expire [month day year]:
Class:
Home directory: /home/jru
Shell: /usr/local/bin/zsh
Full Name: J. Random User
Office Location:
Office Phone:
Home Phone:
Other information:
The normal user can change only a small subset of this information, and only for
themselves.
Example 13-4. Interactive chpass by Normal User
#Changing user database information for jru.
Shell: /usr/local/bin/zsh
Full Name: J. Random User
Office Location:
Office Phone:
Home Phone:
Other information:
Note:chfn(1) and chsh(1) are just links
to chpass(1), as are ypchpass(1), ypchfn(1), and ypchsh(1). NIS support
is automatic, so specifying the yp before the command is not
necessary. If this is confusing to you, do not worry, NIS will be covered in Chapter 27.
pw(8) is a command
line utility to create, remove, modify, and display users and groups. It functions as a
front end to the system user and group files. pw(8) has a very
powerful set of command line options that make it suitable for use in shell scripts, but
new users may find it more complicated than the other commands presented here.