This section describes information related to the philosophy of
system administration that is specific to Red Hat Enterprise Linux.
Automation of frequently-performed tasks under Red Hat Enterprise Linux requires
knowledge of several different types of technologies. First are the
commands that control the timing of command or script execution. The
cron and at commands are most
commonly used in these roles.
Incorporating an easy-to-understand yet powerfully flexible time
specification system, cron can schedule the
execution of commands or scripts for recurring intervals ranging in
length from minutes to months. The crontab command
is used to manipulate the files controlling the
cron daemon that actually schedules each
cron job for execution.
The at command (and the closely-related command
batch) are more appropriate for scheduling the
execution of one-time scripts or commands. These commands implement a
rudimentary batch subsystem consisting of multiple queues with varying
scheduling priorities. The priorities are known as
niceness levels (due to the name of the command
— nice). Both at and
batch are perfect for tasks that must start at a
given time but are not time-critical in terms of finishing.
Next are the various scripting languages. These are the
"programming languages" that the average system administrator uses to
automate manual operations. There are many scripting languages (and
each system administrator tends to have a personal favorite), but the
following are currently the most common:
Over and above the obvious differences between these languages,
the biggest difference is in the way in which these languages interact
with other utility programs on a Red Hat Enterprise Linux system. Scripts written with
the bash shell tend to make more extensive use of
the many small utility programs (for example, to perform character
string manipulation), while perl scripts perform
more of these types of operations using features built into the
language itself. A script written using python can
fully exploit the language's object-oriented capabilities, making
complex scripts more easily extensible.
This means that, in order to truly master shell scripting, you
must be familiar with the many utility programs (such as
grep and sed) that are part of
Red Hat Enterprise Linux. Learning perl (and
python), on the other hand, tends to be a more
"self-contained" process. However, many perl
language constructs are based on the syntax of various traditional
UNIX utility programs, and as such are familiar to those Red Hat Enterprise Linux system
administrators with shell scripting experience.
In the areas of documentation and communication, there is little
that is specific to Red Hat Enterprise Linux. Since documentation and communication can
consist of anything from adding comments to a text-based configuration
file to updating a webpage or sending an email, a system administrator
using Red Hat Enterprise Linux must have access to text editors, HTML editors, and mail
clients.
Here is a small sample of the many text editors available under
Red Hat Enterprise Linux:
The gedit text editor
The Emacs text editor
The Vim text editor
The gedit text editor is a strictly
graphical application (in other words, it requires an active X Window
System environment), while vim and
Emacs are primarily text-based in
nature.
The subject of the best text editor has sparked debate for nearly
as long as computers have existed and will continue to do so.
Therefore, the best approach is to try each editor for yourself, and
use what works best for you.
For HTML editors, system administrators can use the Composer
function of the Mozilla Web browser. Of
course, some system administrators prefer to hand-code their HTML,
making a regular text editor a perfectly acceptable tool as
well.
As far as email is concerned, Red Hat Enterprise Linux includes the
Evolution graphical email client, the
Mozilla email client (which is also
graphical), and mutt, which is text-based.
As with text editors, the choice of an email client tends to be a
personal one; therefore, the best approach is to try each client for
yourself, and use what works best for you.
As stated earlier in this chapter, security cannot be an
afterthought, and security under Red Hat Enterprise Linux is more than skin-deep.
Authentication and access controls are deeply-integrated into the
operating system and are based on designs gleaned from long experience
in the UNIX community.
For authentication, Red Hat Enterprise Linux uses PAM — Pluggable
Authentication Modules. PAM makes it possible to fine-tune user
authentication via the configuration of shared libraries that all
PAM-aware applications use, all without requiring any changes to the
applications themselves.
Access control under Red Hat Enterprise Linux uses traditional UNIX-style permissions
(read, write, execute) against user, group, and "everyone else"
classifications. Like UNIX, Red Hat Enterprise Linux also makes use of
setuid and setgid bits
to temporarily confer expanded access rights to processes running a
particular program, based on the ownership of the program file. Of
course, this makes it critical that any program to be run with setuid
or setgid privileges must be carefully audited to ensure that no
exploitable vulnerabilities exist.
Red Hat Enterprise Linux also includes support for access control
lists. An access control list (ACL) is a construct that
allows extremely fine-grained control over what users or groups may
access a file or directory. For example, a file's permissions may
restrict all access by anyone other than the file's owner, yet the
file's ACL can be configured to allow only user
bob to write and group
finance to read the file.
Another aspect of security is being able to keep track of system
activity. Red Hat Enterprise Linux makes extensive use of logging, both at a kernel and
an application level. Logging is controlled by the system logging
daemon syslogd, which can log system information
locally (normally to files in the /var/log/
directory) or to a remote system (which acts as a dedicated log server
for multiple computers.)
Intrusion detection sytems (IDS) are powerful tools for any Red Hat Enterprise Linux
system administrator. An IDS makes it possible for system
administrators to determine whether unauthorized changes were made to
one or more systems. The overall design of the operating system
itself includes IDS-like functionality.
Because Red Hat Enterprise Linux is installed using the RPM Package Manager (RPM),
it is possible to use RPM to verify whether any changes have been made
to the packages comprising the operating system. However, because RPM
is primarily a package management tool, its abilities as an IDS are
somewhat limited. Even so, it can be a good first step toward
monitoring a Red Hat Enterprise Linux system for unauthorized modifications.