You've read about users previously, but this section examines how the sysadmin can manage the users. Users must be created, assigned a UID, provided a home directory, provided an initial set of files for their home directory, and assigned to groups so that they can use the system resources securely and efficiently. The system administrator might elect to restrict a user's access not only to files, but to the amount of disk space they use as well. (You learn more about that in the 'Disk Quotas' section later in this chapter.)
User Management Tools
Fedora provides several command-line tools for managing users, as well as graphical tools. Many experienced sysadmins prefer the command-line tools because they are quick and easy to use and they can be included in scripts if the sysadmin wants to script a repetitive task. Here are the most commonly used commands for managing users:
> useradd
— This command is used to add a new user account to the system. Its options permit the sysadmin to specify the user's home directory and initial group or to create the user with the default home directory and group assignments.
> useradd -D
— This command sets the system defaults for creating the user's home directory, account expiration date, default group, and command shell. See the specific options in man useradd
. Used without any arguments, it displays the defaults for the system. The default set of files for a user are found in /etc/skel.
The set of files initially used to populate a new user's home directory are kept in /etc/skel. This is convenient for the system administrator because any special files, links, or directories that need to be universally applied can be placed in /etc/skel and will be duplicated automatically with appropriate permissions for each new user.
# ls -al /etc/skel
total 60
drwxr-xr-x 4 root root 4096 2007-10-21 19:58 .
drwxr-xr-x 112 root root 12288 2007-10-22 20:40 ..
-rw-r--r-- 1 root root 33 2007-08-31 15:20 .bash_logout
-rw-r--r-- 1 root root 176 2007-08-31 15:20 .bash_profile
-rw-r--r-- 1 root root 124 2007-08-31 15:20 .bashrc
drwxr-xr-x 2 root root 4096 2007-10-17 17:52 .gnome2
Each line provides the file permissions, the number of files housed under that file or directory name, the file owner, the file group, the file size, the creation date, and the filename.
As you can see, root owns every file here, but the adduser
command (a symbolic link to the actual command named useradd
) copies everything in /etc/skel
to the new home directory and resets file ownership and permissions to the new user. Certain user files might exist that the system administrator does not want the user to change; the permissions for those files in /home/username
can be reset so that the user can read them but can't write to them.
> userdel
— This command completely removes a user's account (thereby eliminating that user's home directory and all files it contains).
> passwd
— This command updates the authentication tokens used by the password management system.
To lock a user out of his account, use the following command:
# passwd -l username
This prepends a double !
(exclamation point, also called a bang) to the user's encrypted password; the command to reverse the process uses the -u option. This is a more elegant and preferred solution to the problem than the traditional UNIX way of manually editing the file.
> usermod
— This command changes several user attributes. The most commonly used arguments are -s
to change the shell and -u to change the UID. No changes can be made while the user is logged in or running a process.
> chsh
— This command changes the user's default shell. For Fedora, the default shell is /bin/bash
, known as the
Monitoring User Activity on the System
Monitoring user activity is part of the sysadmin's duties and an essential task in tracking how system resources are being used. The w
command tells the sysadmin who is logged in, where he is logged in, and what he is doing. No one is able to hide from the super user. The w
command can be followed by a specific user's name to show only that user.
The ac
command provides information about the total connect time of a user measured in hours. It accesses the /var/log/wtmp
file for the source of its information. The ac
command is most useful in shell scripts to generate reports on operating system usage for management review.
Interestingly, a phenomenon known as wtmp
files jumps back into the past and ac
shows unusual amounts of connected time for users. Although this can be attributed to some innocuous factors having to do with the system clock, it is worthy of investigation by the sysadmin because it can also be the result of a security breach.
The last
command searches through the /var/log/wtmp
file and lists all the users logged in and out since that file was first created. The user reboot
exists so that you might know who has logged in since the last reboot. A companion to last
is the command lastb
, which shows all failed, or bad, logins. It is useful for determining whether a legitimate user is having trouble or a hacker is attempting access.
The accounting system on your computer keeps track of user usage statistics and is kept in the current /var/log/wtmp
file. That file is managed by the init
and login
processes. If you want to explore the depths of the accounting system, use the GNU info system: info accounting
.