RHCSA
RHCSA
RHCSA
BOOT CAMP
ABOUT THE
INSTRUCTOR
Nathan Isburgh
instructor@edgecloud.com
Unix user 15+ years, teaching it 10+ years
RHCE, CISSP
Forgetful, goofy, patient :)
EXPECTATIONS OF
STUDENTS
Strong foundation in basic Linux use and administration
Ask Questions!
Complete the labs
Email if youre going to be late/miss class
Have fun
Learn something
Pass your exam!
Wednesday, March 23, 2011
AFTER RHCSA?
After successfully passing RHCSA, the next certification is
RHCE: Red Hate Certified Engineer.
The RHCE class will also be a week long, boot-camp style
class.
The RHCE exam is also 100% practical, and it is 2.0 hours
long. Most of the focus on this certification is configuring
network services.
TO PASS EXAM:
Details specific to RHEL v. 6
Basic System Administration and Unix interaction
Configuration and deployment of storage and filesystems.
Implementation of networking and basic security / traffic filtering
technologies
Locating Local Reference Materials (--help, man)
Red Hat might even install non-standard software to check that
the candidate can locate documentation!
SCHEDULE
Monday
Tuesday
Wednesday
Thursday
Friday
slideshow.end();
RHCSA
BOOT CAMP
The Boot Process
OVERVIEW
The boot process gets a machine from the useless off state to
the feature rich operating system we all know and love
Requires cooperation between hardware and software to
correctly hand off processing
Akin to the life cycle of a human - birth, newborn, infant,
toddler, teen, adult
BIRTH
Power switch flipped on
Electricity flows from wall, through power supply where it
gets converted to the levels necessary for the computer, and
on to the motherboard, drives, CPU and more
Completely unaware of the world or even whats attached to
the motherboard.
INFANT
BIOS - Basic Input/Output System - CPU looks for
instructions starting at a specific address, which happens to
be where BIOS resides. BIOS initializes and starts the....
POST - Power On Self Test - A simple set of tests that BIOS
performs to verify basic functioning of attached hardware.
Like an infant, extremely limited understanding of world
Searches for valid MBR, loads the software found there and
transfers control to the...
TODDLER
Boot Loader - Special software installed to the MBR of the
boot partition which selects and loads the kernel.
Can be configured to immediately load the default OS, or
can offer choice to user
Slightly better understanding of world - can read linux
filesystems, sometimes includes powerful debugging and
configuration support.
Main job: select and load kernel, transfer control to kernel
TEENAGER
ADULT
init loads the inittab, specifying what the default runlevel should
be, then additional configuration files specify what software needs
to be started. init starts running all of the specified startup scripts
at this point.
Services are started by init, including network configurations, X
Windows, network services, databases, etc.
At this point, the machine is finally becoming useful: otherwise, an
adult
Eventually, login processes are started and the boot process is
complete!
MORE ON INIT
RHEL 6 marks Red Hats departure from the old style SystemV
initialization framework. Time to [mostly] forget about inittab!
RHEL 6 now uses Upstart to handle startup, shutdown and
service management.
http://upstart.ubuntu.com
The only configuration /etc/inittab provides anymore is
what the default runlevel should be, as Upstart supports the
notion of runlevels to ease transition from SysV style
initialization to Upstart.
Wednesday, March 23, 2011
UPSTART
The configuration files for Upstart are under:
/etc/init
Files in this directory detail configuration for certain global
events, like ctrl-alt-delete, as well as maintaining TTY gettys,
handling runlevels and more.
A runlevel defines what services are running...
RUNLEVELS
Runlevels:
S: System startup
0: OS stopped, machine halted ( usually powers off as well )
1: Single user mode - for maintenance
2: Multiuser, no NFS shares
3: Full multiuser, TUI
4: Unused
5: Full multiuser, GUI
6: Reboot
RUNLEVELS
telinit: Signal the init process to change the current
runlevel
Switching runlevels is fairly uncommon - generally only
used if system maintenance needs to be performed
Runlevels can be used to control what services a machine
provides, and can sometimes be useful to quickly
reconfigure a machine for a new task
UPSTART OVERVIEW
So the basic flow of operation for Upstart is as follows:
At bootup, the kernel starts /sbin/init. After /sbin/
init loads configuration files and is ready, the first event
is emitted: startup
The startup event causes /etc/init/rcS.conf to
fire, which in turn runs the familiar /etc/rc.sysinit.
After rc.sysinit finishes, rcS.conf uses /etc/
inittab to determine the default runlevel, then runs
telinit to that runlevel.
Wednesday, March 23, 2011
UPSTART OVERVIEW
telinit emits the runlevel event, which fires off /etc/
rc.conf
rc.conf fires off the familiar /etc/rc.d/rc script with
the appropriate runlevel to fire off all of the startup scripts in
the appropriate /etc/rcX.d directory.
WHEW!
All of this, mainly so that the transition to Upstart is relatively
painless for the system administrators more comfortable with
SysV initialization.
Wednesday, March 23, 2011
INIT SCRIPTS
What is actually running in a given runlevel is defined by the
init scripts for that level.
That standard location for the init scripts is:
/etc/rcX.d
Where the X corresponds to the runlevel
For example, /etc/rc5.d contains all of the init scripts
that, combined, provide runlevel 5 service
RC DIRECTORIES
The files in the rc directories start with either an S or a K:
S means to start the service, ie run the command with
start as an argument
K means to kill the service, ie run the command with
stop as an argument
After the S or K, there is a two digit number which is used
for ordering the execution of the scripts
ENTERING A
RUNLEVEL
So when the init process enters a runlevel, the steps are:
Run all of the Kill scripts, in order, with stop as an
argument
Run all of the Start scripts, in order, with start as an
argument
INIT SCRIPTS
If you look closely, you will see that /etc/rcX.d actually
holds a collection of symbolic links
The actual script files are stored in /etc/init.d
The main reason for this is so that there is only one copy of
each init script, reducing the chance that a script change
wont be reflected in all runlevels.
You can run the scripts directly, or use the service
command to start/stop various components of the OS.
MANAGING INIT
SCRIPTS
You can manage the links to the init scripts manually, or you
can use the chkconfig command to get the job done:
chkconfig --list
List all processes and display their default status in each
run-level.
chkconfig [--level levels] name <on|off|reset>
This command will modify the chkconfig configuration for a
particular service, setting it on/off for the given runlevels.
Wednesday, March 23, 2011
GRUB
Grand Unified Boot Loader
Recall that GRUB is responsible for the initial kernel load at
boot time.
Using GRUB, an administrator can control what kernel is
loaded, what options are passed to the kernel, as well as
initial ramdisk configurations.
GRUB
CONFIGURATION
GRUBs configuration file is /boot/grub/grub.conf, which is configured as
follows:
default=0
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title RedHat Enterprise Linux
!
root (hd0,0)
initrd /initrd
GRUB SHELL
Command mode Pressing c while the boot menu is displayed will
provide the user with the GRUB shell, where a limited set of commands
can be used to explore the filesystem before booting. A full list of the
commands available can be found by pressing Tab while in command
mode.
Editing mode Pressing e while the boot menu is displayed will provide
the user with the opportunity to edit a line in GRUBs configuration file.
Append mode Pressing a while the boot menu is displayed will allow
the user to append to the kernel line for the default kernel in GRUBs
configuration file
Esc can be pressed at any time to return you to the previous menu
BOOTING TO A GIVEN
RUNLEVEL
Using GRUB, add a number to the end of the kernel
command line to override the default runlevel.
Also, adding the letter s or the word single to the end
of the command line is very important: this boots into single
user mode, which by default, will not require a password to
obtain a root shell.
Very important!
LAB
1.
slideshow.end();
RHCSA
BOOT CAMP
Package Management
RPM
Redhat Package Manager
RPMs provide full software packaging features: pre-install
scripts, post-install scripts, dependencies, meta information,
and an installed software database to name a few.
The RPM system maintains a database of all installed
software on a machine - this is useful for tracking and
updating reasons, as well as dependency verification and
software management.
RPM
rpm: The Redhat Package Manager tool. Provides interface
to RPM system, performing queries, installs, upgrades,
uninstalls and general database maintenance operations.
-i option: install the given package
-q option: query the database
-e option: erase the given package from the system
RPM QUERIES
Below are just a few examples of the types of queries you can run against
the RPM database.
rpm -qa
rpm -qi
rpm -qf
rpm -ql!
With any of these commands, you can add the -p option to run the
command against a package before it is installed.
RPM INSTALLATION
VERIFICATION
In addition to storing information about where a package is
installed, rpm also stores permissions, file sizes, md5sums,
and ownership information. This information can be easily
referenced to see if anything has been changed.
rpm -Va
rpm Vi <package>
mTime differs
EXTRACT RPM
CONTENTS
Use this technique to make a clean working copy of the files and directories
that would be installed with a package.
cd /temp/dir
rpm2cpio /path/to/package | cpio -i d m
This would allow you to:
Replace one corrupted file without un-installing and then re-installing a
package
Compare original configuration files versus modified files in the running
system to quickly locate changed lines, for example with the diff utility
YUM
yum: Yellowdog Updater Modified
Supports package installation over the network through
repositories.
RPM backend
Simple interface
REPOSITORIES
Repositories of packages must be listed in files in the /etc/
yum.repos.d directory with names ending in .repo and having a
format like:
[label-for-repo]
name = descriptive text
baseurl = protocol://path/to/directory/of/packages
Access to the Red Hat Network, including any Satellite Servers, is
implemented through a plugin to the yum tool itself and not as a
repository definition in the above format.
LAB
1.
2.
3.
4.
5.
slideshow.end();
RHCSA
BOOT CAMP
System Administration
INSTALLATION
KICKSTART FILES
Fortunately, Kickstart files are extremely simple to understand and
create.
A Kickstart file is a flat text file which answers all of the installation
questions automatically. Therefore, logically, it contains details on:
Partitioning and filesystems
Software packages
Users, Groups, Passwords
Features, networking and more
KICKSTART FILES
There are three primary means of creating a Kickstart file:
From scratch
From an existing Kickstart file ( perhaps from a recent
install? )
Using system-config-kickstart
LAB
1.
Examine /root/anaconda-ks.cfg
2.
NETWORK
CONFIGURATION
There are two main approaches to configuring a machine for network
access:
Static configuration
Dynamic configuration
Static configuration uses set parameters for the configuration, which is
known by the machine and the network and never changes. Generally
used with servers.
Dynamic configuration configures network machines on the fly, where a
service on the network provides all configuration parameters to a
machine when it joins the network. Generally used with workstations.
DYNAMIC
CONFIGURATION
Dynamic configuration is the easiest to use.
The machine just needs to set up its interfaces with the
DHCP protocol.
DHCP: Dynamic Host Configuration Protocol.
A lease is obtained from the DHCP server, providing all
network configuration details for the client. The lease
expires after some amount of time and is renewed by the
client to maintain network access.
STATIC
CONFIGURATION
Static configuration requires four configuration parameters
in order to allow full network functionality:
IP Address
Netmask
Default Gateway or Router
DNS Server(s)
DNS?
Domain Name Service: This is the glue between network
names and IP addresses.
Remember: Humans like names, computers like numbers.
DNS is a service like so many others, mapping names to
numbers and numbers to names. Mostly a convenience.
Also provides for email functionality, geographic load
balancing and limited service failover capabilities.
STATIC
CONFIGURATION
The first two components of static configuration are IP
address and netmask.
These provide LAN-level access
To view current address:
ip addr list
GATEWAYS
The third configuration parameter is the default gateway.
Provides access to inter-networking, or moving from just
the local LAN to other LANs
To see the current routing entries:
ip route show
DNS SERVERS
Final piece of configuration information.
List of one or more IP addresses which provide the DNS
service, allowing name to IP address mapping
To view current nameservers, see:
/etc/resolv.conf
Also consider /etc/nsswitch.conf
STATIC
CONFIGURATION
Once all four pieces of information are configured on the
system, full network service will be available.
To test local connectivity, try pinging the gateway
To test inter-networking connectivity, try pinging 8.8.8.8
or some other external IP address.
To test name resolution, try pinging google.com or
another public DNS name.
CHANGING
NETWORKING
To change the IP address, hostname, netmask and gateway,
you have to edit two configuration files:
/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network
/ETC/SYSCONFIG/NETWORK
NETWORKING={yes|no}
HOSTNAME=<fqdn>
NISDOMAIN=<nis domain name>
IFCFG-* FILES
IFCFG-* FILES
To configure a device with static settings, the ifcfg file should contain
the following:
DEVICE=eth0
BOOTPROTO=none
IPADDR=<ip>
NETMASK=<netmask> ( or PREFIX=<net bits> )
ONBOOT=yes
GATEWAY=<gateway ip>
NETWORK MANAGER
In RHEL 6, Network interfaces are now handled via
Network Manager. Some notable commands/tools:
nmcli - simple CLI to Network Manager
nm-connection-editor - excellent GUI tool for
managing all network connections.
On the test, it is highly recommended to use the connection
editor rather than manually edit config files.
LAB
1.
2.
When you are satisfied with your configuration, restart the network
service to put your changes into effect.
3.
Test your connectivity to server1 to make sure you are still online.
4.
5.
CRON
crond is the cron daemon. Cron provides for the ability to
execute commands on a regular basis.
Generally used to run hourly, daily and weekly type system
maintenance scripts.
Also useful to run reports, cleanup jobs and much, much
more.
SYSTEM CRONS
/etc/anacrontab defines the system cron jobs.
Many distributions use the run-parts script to execute
all scripts found in /etc/cron.hourly, /etc/
cron.daily, etc on the appropriate schedule.
/etc/anacrontab defines the times for each schedule:
daily, weekly, monthly
Due to limitations in anacrontab, the hourly scripts are
configured to run via /etc/cron.d/0hourly
USING CRON
Cron is controlled through crontab files.
There are system-wide crons, accessible under
/etc/cron.*
Every user has their own crontab, accessible through the
crontab command
CRONTAB
crontab: View, edit or remove crontabs
The -l option prints the crontab. The -e option opens
the crontab for editing. The -r option removes the
crontab.
Root can work with the crontab for any user by specifying
the username on the command line:
crontab -e -u bob
CRONTAB SYNTAX
CRONTAB TIMESPECS
The timespec is broken down into 5 fields, separated by
spaces:
minute hour day-of-month month day-of-week
Each field can contain a number, a range of numbers, a
comma-separated list of numbers, an asterisk or a number
slash division rate
Mostly self-explanatory - some examples will help...
TIMESPEC EXAMPLES
11pm every day
0 23 * * *
30 * * * 1-5
0 7 1 * *
* * * * *
0,10,20,30,40,50 * * * *
*/5 8-17 * * 1-5
Every 10 minutes
EXAMPLE CRONTAB
01 4 * * * /usr/local/bin/restart-webserver
00 8 1 * * /usr/bin/mail-report boss@mycompany.com
*/5 * * * * /monitor/bin/check-site -e admin@mycompany.com -o /var/log/check.log
LAB
1. Create a cronjob for the user root that checks the amount
of available space on the system every Friday at 12:34pm.
2. Create a cronjob as a regular user that lists the contents
of /tmp at 3:54am on Sunday, January 2.
LOGS
One of the easiest places to find the cause of a problem is in
the log files.
Log files store informational messages from software. The
types of messages include debug information, status
information, warnings, errors and more.
Some applications manage their own log files. Others use
the system-wide logging package...
SYSLOG
rsyslog - The system logger. A framework consisting of a
library, a daemon, a configuration file and logs.
Any application can use the library and log messages through
rsyslog with simple function calls.
Log messages consist of 3 parts:
Facility
Level
Message
Wednesday, March 23, 2011
SYSLOG
The facility describes what part of the operating system
generated the message, and is selected by the software:
auth, authpriv, cron, daemon, ftp, kern, lpr,
mail, news, security, syslog, user, uucp,
local0-local7
The level represents the importance of the message, and is also
chosen by the software:
emergency, alert, critical, error, warning,
notice, info, debug
Wednesday, March 23, 2011
/ETC/RSYSLOG.CONF
/etc/rsyslog.conf defines where all of the log messages should go.
Destinations include files, screens of logged in users, console, other syslog
servers. Additional configuration is available as well.
Basic rule format:
facility.level
destination
Examples:
*.err
mail.*
/dev/console
/var/log/maillog
*.info;mail.none;authpriv.none
/var/log/messages
/VAR/LOG
maillog: messages from the email subsystem
secure: authentication and security messages
cron: cron messages
boot.log: boot messages
messages: catch-all
dmesg : hardware and kernel events generated before syslogd
LOGS
LOCATING
APPLICATION LOGS
To track down the log file location for an application, you need
to find its configuration file so you can see where the logs are
being written.
Of course, finding the configuration file might be just as
difficult, so its best to start at the source.
init starts all of the system services, and so there is an init
script somewhere that is starting up the application in
question.
The init script almost always references the configuration file
Wednesday, March 23, 2011
LOCATING
APPLICATION LOGS
Now that the configuration file location is known, it only
takes a few moments to scan through it and find out where
logs are being written.
As for the format of the log file, thats completely dependent
on the application. Some will be similar to syslog, others,
like Apache or Qmail, will be completely foreign looking.
Fortunately, a little common sense and judicious application
of Google Ointment will get the information you seek.
MAINTAINING LOGS
/etc/logrotate.conf!
This is the main configuration file for logrotate.
/etc/logrotate.d/!
EVERYTHING in this directory will be parsed as if it is a logrotate
configuration file. Usually, applications such as Apache and Sendmail
will have configuration files in this directory to control how their logs
will be rotated.
logrotate -vf /etc/logrotate.conf
Can be run as root at any time to force log rotation and check for errors.
TROUBLESHOOTING
TOP
top: Self-updating tool displays combination summary at top,
followed by ordered list of processes. Fully customizable.
The summary includes uptime information, memory
breakdowns, CPU utilization and process state summaries
The process display can be customized and sorted to suit need
top - 16:39:32 up 682 days, 10:41, 2 users, load average: 0.01, 0.00, 0.00
Tasks: 118 total,
1 running, 116 sleeping,
1 stopped,
0 zombie
Cpu(s): 0.1%us, 0.0%sy, 0.0%ni, 99.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.1%st
Mem:
262316k total,
258024k used,
4292k free,
7380k buffers
Swap:
524280k total,
74564k used,
449716k free,
67808k cached
PID
1
2
3
USER
root
root
root
PR
15
RT
34
NI VIRT
0 10316
0
0
19
0
RES
648
0
0
SHR
592
0
0
S %CPU %MEM
S
0 0.2
S
0 0.0
S
0 0.0
TIME+
0:06.24
0:04.88
0:00.19
COMMAND
init
migration/0
ksoftirqd/0
DF
df: lists filesystem utilization
Breaks down size and use information for each mounted
filesystem
-h is useful option to display in human-friendly format
[root@dev1 ~]# df -h
Filesystem
/dev/sda1
none
[root@dev1 ~]#
Size
9.4G
129M
LDD, LDCONFIG
ldd: List library dependencies
ldconfig: Update library location database
/etc/ld.so.conf and /etc/ld.so.conf.d/*.conf
for list of pathnames to search for libraries, creates
database for dynamic linker
[root@dev1 ~]# ldd /bin/bash
!
libtermcap.so.2 => /lib64/libtermcap.so.2 (0x00002ac044572000)
!
libdl.so.2 => /lib64/libdl.so.2 (0x00002ac044775000)
!
libc.so.6 => /lib64/libc.so.6 (0x00002ac044979000)
!
/lib64/ld-linux-x86-64.so.2 (0x00002ac044357000)
[root@dev1 ~]# cat /etc/ld.so.conf.d/mysql-x86_64.conf
/usr/lib64/mysql
[root@dev1 ~]# ldconfig
[root@dev1 ~]#
NICE LEVEL
The nice level represents one influence on the calculations
the kernel uses when assigning priorities.
Originally designed and named to allow users to be nice to
other users of the system by assigning a higher nice value to
an intensive process, which in turn lowers its priority.
Ranges from -20 to 19. Default nice level is 0.
Only root can assign negative nice values.
See nice and renice commands
Wednesday, March 23, 2011
LAB
1. Take a few minutes to browse through the various logs in /var/
log. Familiarize yourself with the kinds of information
available.
2. Browse the man page for rsyslog.conf
3. Find where the audit service keeps its log and add a
corresponding new entry to your logrotate configuration. Force
a rotation to see everything work.
4.Remove the audit logrotate configuration and restart the auditd
service.
5. Locate the PIDs of the highest memory and highest CPU
utilization processes. Play with their nice levels.
Wednesday, March 23, 2011
slideshow.end();
RHCSA
BOOT CAMP
Filesystem Administration
PARTITIONING
What is partitioning?
Splitting up a hard drive into organizable chunks
Why?
Isolates filesystem corruption
Simplifies/speeds backups
Allows optimizing filesystems to tasks
FDISK
fdisk: partitioning tool
Works on one disk at a time, allows for viewing and
manipulating partition table.
Online help ( hit m ) makes tool easy to use
At boot, the kernel loads a copy of the partition table into
memory. Most partition editing commands only update the
partition table on the drive, and not in memory. As such, the
command partprobe can be run to update the information
that the kernel has in memory.
Wednesday, March 23, 2011
MKFS
mkfs: format a device to create a new filesystem
Paints the parking stripes for the filesystem structure
Creates superblock, block groups, superblock copies,
bitmaps and inode tables and creates basic structure on
disk
Through -t option, mkfs can create different types of
filesystems
EXT2
Benefits
Default file system for pre - 7.x versions of Red Hat
Heavily tested / Rock solid stability
Drawbacks
Does not have a journal
File system check (fsck) required to mount a dirty file system
System offline and unavailable while fsck is running
Wednesday, March 23, 2011
EXT3
Benefits
Default file system of the old 7.x Red Hat to RHEL 5.x releases
Based on proven stability of Ext2
Has journal for increased reliability
Drawbacks
Inodes allocated when file system is created (other file systems create
them dynamically as they are needed)
Not as efficient as other file systems when dealing with lots of small files
EXT4
Benefits
Default file system of RHEL 6.x releases and newer
Built from a series of extensions to ext3
Many improvements over ext3, including larger scales, timestamps,
performance and more
Drawbacks
Inodes allocated when file system is created (other file systems create
them dynamically as they are needed)
Delayed allocation can potentially lead to data loss ( patches in place )
JOURNALING
Journaling - How does it help?
Deleting a file in Linux requires two steps:
1. The files directory entry must be removed.
2. The files inode must be marked as free in the free space map.
If step 1 happens before a crash, an inode will be orphaned and the file will be lost.
If step 2 happens first before a crash, the inode will be marked free and will
possibly be overwritten.
Journaling keeps a journal of the changes that are planned for the file system
ahead of time. The journal can then replay the changes in the journal at any time
to keep the file system clean.
FILESYSTEM
INTEGRITY CHECKS
fsck: Filesystem Check
Generally only run when a filesystem needs it:
Mount count
Last check
Dirty
Checks all of the filesystem structures for accuracy and
completeness
Wednesday, March 23, 2011
FSTAB
mount_point
fs_type
options
dump
fsck
LAB
1.
2.
3.
Un-mount the /u01 filesystem and force an integrity check. Remount the /u01 filesystem. Use e2label to set the filesystem label
on /u01 to /u01.
AUTOMOUNT
The autofs service can be configured to monitor certain
directories and automatically mount a file system when a
call is made to files in that directory.
When autofs starts, it parses the configuration file /etc/
auto.master to determine which directories it should be
monitoring. Each directory can then have its own
configuration file determining how each file system should
be mounted, or the default file /etc/auto.misc can be
used.
AUTO.MASTER
Basic format for auto.master:
Path
Config file
/misc!! /etc/auto.misc
This tells automountd to watch the /misc pathname for
activity, and if activity is observed, consult /etc/
auto.misc for instructions.
AUTOMOUNT PATH
CONFIG FILES
Basic syntax:
path
options
mount device
LAB
EXTENDED
ATTRIBUTES
Ext2 and Ext3 support attributes that affect how data can be
manipulated.
The chattr command can change these file system
attributes.
The lsattr command will list the file system attributes.
Extended attributes can only be set by the root user, unless
the user_xattr mount option is in effect.
COMMON EXTENDED
FILE ATTRIBUTES
i
ACLS
Ext3 supports access control lists, which allow for more
flexible permissions than standard file system permissions.
ACLs can be listed with the getfacl command.
They can be modified with the setfacl command.
To use ACLs, a file system must have the acl mount option.
Use dumpe2fs -h <block device node> to see default
mount options.
ACL EXAMPLES
QUOTAS
Quotas are used to limit how many filesystem resources are
available to a user.
Inodes and space are controllable.
Hard and soft limits are available, with grace periods.
Enabling quotes is an involved process...
ENABLING QUOTAS
usrquota and grpquota options must be enabled on the filesystem
mount
Two files will be created at the root of the filesystem: aquota.user and
aquota.group
Run quotacheck -mavug
Turn on quotas by running quotaon with the mount point as argument.
Now you can use edquota to set up the quotas
See man pages: quota, repquota, edquota, quotaon,
quotacheck
LAB
1.
DISK ENCRYPTION
Disk encryption is supported under Linux via the Device
Mapper functionality introduced in the 2.6 kernel.
The Device Mapper allows arbitrary device path mapping.
Disk encryption is most commonly implemented with the
dm-crypt Device Mapper module, supporting transparent
device encryption.
dm-crypt supports a simple, internal encryption specification,
as well as the more common LUKS, Linux Unified Key Setup.
LUKS
CRYPTSETUP
To create a new LUKS encrypted device:
cryptsetup luksFormat <device>
Then, to establish access to the device:
cryptsetup luksOpen <device> <mapname>
This command will verify the password and setup a new dm-crypt
device mapper mapping of:
<device> -> dm-crypt(LUKS) -> <mapname>
Creating /dev/mapper/mapname
CRYPTSETUP
After the /dev/mapper/mapname is in place, all operations
operate on the mapper device:
mkfs -t ext4 /dev/mapper/mapname
mount /dev/mapper/mapname /crypt
To remove access to an encrypted device, unmount the
filesystem if its mounted, then:
cryptsetup luksClose mapname
LUKS PERSISTENCE
LAB
1. Create a new 100M logical volume, then set up a LUKS
encrypted ext4 filesystem on the logical volume which will
be persistent across reboots.
2. Reboot your machine to verify the LUKS filesystems
prompt for the passphrase and become accessible
automatically after bootup.
3. Browse through the man pages on cryptsetup and
crypttab.
SELINUX
Every process or object has an SELinux context:
identity:role:domain/type
The SELinux policy controls:
What identities can use which roles
What roles can enter which domains
What domains can access which types
SELINUX
Adding the -Z option to several commands will show how they are
running in regards to SELinux:
ps -Z
ls -Z
To change the context of a file, you can use the chcon command:
chcon -R --reference=/var/www/html <file>
SELinux will log all policy violations to /var/log/messages as
AVC (access vector cache) denials.
LABELING
The SELinux policy includes a specification for default
contexts on all common pathnames in a standard Linux
filesystem, known as the default filesystem labels.
Relabeling involves using the defaults from the policy and
applying the contexts to files. The tool for relabeling is:
restorecon [-R] <path> [path...]
restorecon can work on individual pathnames as well as
recursively apply contexts to a pathname.
CONTROLLING
SELINUX
The tool system-config-selinux can be used to configure
SELinux.
The file /etc/sysconfig/selinux can be edited.
The command getenforce will show the current SELinux mode,
and setenforce will allow you to change the mode.
To change the SELinux mode during boot, you can pass the
enforcing=0 option to the kernel in GRUB.
See also the members of the policycoreutils and
setroubleshoot packages.
LAB
1.
2.
3.
4.
slideshow.end();
RHCSA
BOOT CAMP
Users and Groups
CONFIG FILES
User information is stored in two files:
/etc/passwd
/etc/shadow
Group information is stored in one file:
/etc/group
/ETC/PASSWD
List of user records, one per line, with columns separated by
colons. Format:
login:x:userid:groupid:gecos:homedir:shell
Examples:
root:x:0:0:root:/root:/bin/bash
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
/ETC/SHADOW
Similar colon-separated-column list of records:
login:password:password aging fields
Aging fields track dates for password resets, locks, etc
Examples:
root:pB8msP1fCbCqc:13904:0:99999:7:::
nisburgh:vRoPw6a/jQsp.:14466:0:99999:7:::
/ETC/GROUP
Same colon-separated-column list of records format
groupname:grouppassword:groupid:secondarymembers
MANAGEMENT
USERADD
useradd: Add a new user to the system
Accepts various arguments to control the settings on the
user account. Most common is the -g option to specify the
primary group of the user, and the -G option to list
secondary group memberships. Examples:
useradd lisa
useradd -g clowns -G trouble,simpson bart
USERMOD, USERDEL
usermod: Modify a users settings. Example:
usermod -G detention bart
userdel: Remove a user from the system. Main option to
consider is -r, which tells userdel to remove the users
home and spool directories. Example:
userdel moe
GROUP COMMANDS
groupadd: Adds a new group to the system. Example:
groupadd bullies
groupmod: Mainly used to rename a group. Example:
groupmod -n mktg mkg
groupdel: Remove a group. Example:
groupdel microsoft
PASSWORDS
passwd: Change login password.
Root can change the password for any user on the system
Root can also setup password aging, allowing for timed
password resets and account disabling ( or use chage )
passwd is also the preferred way to lock a user account:
passwd -l mary
PASSWORD AGING
To set the maximum lifetime for a users password:
passwd -x days login
When a users password has expired, you can set the number
of days it can remain expired before disabling the account
completely:
passwd -i days login
IMPORTANT USER
ENVIRONMENT FILES
/etc/skel
/etc/profile
/etc/profile.d
/etc/bashrc
~/.bashrc
~/.bash_profile
LAB
1.
Create a new group dev. Create a new user alice as a member of the dev
group, with a description of Alice from Dev and a default shell of /bin/csh.
Use the passwd command to set a password for alice, then log in as alice and
verify her access.
2.
Set a maximum password lifetime of 4 weeks for the alice account. Look at the
passwd, shadow and group files.
3.
Configure the users guido, linus, and richard. Set all their passwords to
linux.
4.
5.
Configure the directory /home/linux so that each user from the ru group can
read, create, and modify files.
6.
Configure the directory /home/linux/work so that each user can create and read
files, but only the files owner can delete.
7.
Use ACLs to allow alice, not in ru, access to the work folder.
NIS
NIS Servers can be configured to centrally manage system and account information.
These servers can share the contents of /etc/passwd, /etc/shadow, /etc/
group, and several other files among any number of clients.
To configure a client, you must install the ypbind and portmap RPMs, and then
you can run system-config-authentication.
This command will make the proper entries in:
/etc/sysconfig/network
/etc/yp.conf
/etc/nsswitch.conf
/etc/pam.d/system-auth
LAB
LDAP
LDAP Servers can also be configured to centrally manage system and account
information. LDAP is much more secure and flexible than a default NIS
configuration, and as such is becoming much more popular.
To configure a client, you must install the nss-pam-ldap and openldap RPMs,
and then you can run system-config-authentication.
This command will make the proper entries in:
/etc/ldap.conf
/etc/openldap/ldap.conf
/etc/nsswitch.conf
/etc/pam.d/system-auth
LAB
1. Disable NIS authentication and verify you can no longer
authenticate as station#.
2. Configure your server to authenticate against
server1.example.com using LDAP.
3. You should then be able to log in to your server as
station# (where # is your station number) with the
password: redhat
slideshow.end();
RHCSA
BOOT CAMP
Kernel Features
IMPORTANT KERNEL
DIRECTORIES
/boot
/proc
/PROC/*
The /proc folder contains copious amounts of information useful
for troubleshooting. Some examples:
/proc/meminfo
/proc/devices
/proc/dma
/proc/ioports
io port assignments
See the manpage for proc for more information and descriptions
/PROC/*
Also in the /proc folder is detailed information on every
process on the system.
Details on process status, environment, commandline,
and more can be obtained
Read the proc manpage - tons of information available
through /proc
SYSCTL
sysctl: Get/set kernel parameters
sysctl -w kernel.pid_max=65535
sysctl -a
sysctl -w vm.swappiness=100
Also, you can view/edit runtime values under /proc/sys
To make changes permanent, edit /etc/sysctl.conf
LAB
1.
2.
3.
4.
LVM
The Logical Volume Manager
Abstracts the physical hardware into logical drive spaces
which can be dynamically grown/shrunk and span
disparate physical devices
Simplifies hard drive management as it abstracts away the
details of the underlying storage devices.
Adds a small amount of overhead to the VFS layer,
slightly reducing performance.
LVM TERMINOLOGY
Physical Volume (pv)
PVCREATE
VGCREATE
LVCREATE
RESIZING LVS
vgextend <volume group name> <new PV path>
Add a new physical volume to a volume group
lvextend {-l <+extents>| -L <+size>} <lv>
Grow a logical volume
NOTE: Use the + to give the amount of additional space
added, otherwise specify the total desired size to end up
with.
RESIZING LVS
resize2fs <logical volume>
Once the lv has been extended, you will need to extend the file
system
You can grow the file system while it is mounted, but before
shrinking it must first be unmounted.
lvresize -r {-l <+extents>| -L <+size>} <lv>
Resizes logical volume and filesystem at same time!
Be careful if it fails, though!
Wednesday, March 23, 2011
LAB
1.
2.
Use half the available space for a logical volume formatted with
ext4 and mounted persistently across reboots.
3.
Take a snapshot of this logical volume and check the file system for
errors.
4.
Assuming none are found, reset the counter for days and mounts
until a check is forced on the original file system.
5.
Copy some data onto the LV, then expand it and the filesystem by
50MB. fsck, then re-mount the filesystem and verify it's contents.
SWAP SPACE
Swap space allows the kernel to better manage limited system
memory by copying segments of memory onto disk
Performance gains
Expanded memory space
mkswap
swapon/swapoff
/proc/swaps
LAB
1.
slideshow.end();
RHCSA
BOOT CAMP
NFS
The Network File Service, or NFS, is used to share data with
other servers.
The command rpcinfo can be run to confirm that these
services are running on a remote server:
rpcinfo -p server1
To see the shared filesystems, use showmount:
showmount -e server1
ACCESSING NFS
SHARES
To mount an NFS share:
mount server1:/share /server1/share
NFS mounts can be made persistent across reboots by
adding the following to /etc/fstab:
server1:/share
/server1/share
nfs
defaults 0 0
LAB
1.
VSFTPD
VSFTPd is the default ftp server
The primary configuration file is /etc/vsftpd/vsftpd.conf
Provides two levels of user access:
Anonymous: by default these users are chrooted to /var/ftp for security
User: these users authenticate with a username/password and can
download any file they can read and can upload into any directory in which
they have write access
Individual users can be denied by placing their names in:
/etc/vsftpd/ftpusers
LAB
1.
slideshow.end();
RHCSA
BOOT CAMP
Web Services
APACHE
CONFIGURATION
The main apache configuration file is httpd.conf and is
found in /etc/httpd/conf/. This configuration file stores
the core configuration of the web server.
In Apache 2, the /etc/httpd/conf.d directory stores
configurations that are specific to a particular Apache
module. All files in this directory ending in .conf will be
parsed as a configuration file.
APACHE
CONFIGURATION
You can find this example Apache VirtualHost definition at the bottom of httpd.conf:
<VirtualHost ____________>
!
ServerName name
ServerAlias alias
DocumentRoot path
ErrorLog /path/to/error_log
</VirtualHost>
The NameVirtualHost directive must be used to specify an IP that can host
multiple websites.
LAB
1.
2.
3.
4.
SECURING APACHE
Apache support access control through allow and deny directives:
allow from <host|network|ALL>
deny from <host|network|ALL>
These can be applied in the given order:
order allow,deny
order deny,allow
SECURING APACHE
These access control directive are applied through a perDirectory or per-File basis.
The allow, deny and order directives are placed inside
one of the following tags:
<Directory>
<File>
LAB
1.
slideshow.end();
RHCSA
BOOT CAMP
Network Security
TCP WRAPPERS
CHECKING TCP
WRAPPER SUPPORT
Determine which binary the application runs as. Check init script or:
# which sshd
/usr/sbin/sshd
Check for libwrap support in the binary.
If you see libwrap support in the output, then you can configure access
to the service with tcp_wrappers.
# ldd /usr/sbin/sshd | fgrep wrap
libwrap.so.0 => /usr/lib/libwrap.so.0 (0x009c5000)
TCP WRAPPER
OPERATION
If an application is compiled with support for
tcp_wrappers, that application will check connection
attempts against the tcp_wrappers configuration files:
/etc/hosts.allow
/etc/hosts.deny
TCP WRAPPER
OPERATION
These files are parsed in the following order:
The file /etc/hosts.allow is consulted. If the
configuration of this file permits the requested connection,
the connection is immediately allowed.
The file /etc/hosts.deny is consulted. If the
configuration of this file does not permit the requested
connection, the connection is immediately refused.
If the connection is not specifically accepted or rejected in
either file, the connection is permitted.
Wednesday, March 23, 2011
TCP WRAPPER
CONFIGURATION
The basic syntax for these files is:
<daemon>: <client>
For example, to disable ssh connections from
192.168.2.200, add this line to /etc/hosts.deny:
sshd: 192.168.2.200
IPTABLES
IPTables works at the kernel level, just above the network
drivers, to provide several useful features.
Extremely powerful and flexible Layer 2 filtering engine.
NAT support
Port forwarding
And many more
IPTABLES RULE
MATCHING
IPTABLES TOOLS
iptables:
iptables-save:
iptables-restore:
IPTABLES RULES
IPTABLES CHAINS
INPUT
This chain is responsible for filtering traffic destined for the
local system.
OUTPUT
This chain is responsible for handling outbound traffic.
FORWARD
This chain is responsible for controlling traffic routed between
different interfaces.
IPTABLES RULES
Below are a few examples of possible IPTables match criteria:
incoming interface
-i
protocol
-p
source ip address
-s
destination ip address
-d
destination port
--dport
IPTABLES RULES
Finally, some examples of what to do with traffic when
matched:
DROP
REJECT
ACCEPT
Deliver
LOG
IPTABLES RULES
So to summarize the syntax:
iptables
What chain should the rule apply to?
-A INPUT
What is the traffic pattern to look for?
-s 192.168.2.100
What should happen with the traffic?
-j REJECT
LAB
1.
slideshow.end();
RHCSA
BOOT CAMP
Virtualization
VIRTUALIZATION
RHEL 6 virtualization is accomplished via:
KVM - Kernel-based Virtualization Machine
QEMU - Processor emulator
RHEL 6 only supports virtualization via KVM/QEMU, and
only on 64bit systems supporting virtualization extensions
Intel: Intel VT ( flag: vmx )
AMD: AMD-V ( flag: svm )
Wednesday, March 23, 2011
PACKAGES
There are four package groups available to install the
necessary and ancillary software to support virtualization.
Virtualization
Virtualization Client
Virtualization Platform
Virtualization Tools
LIBVIRT
libvirt is the management framework used in RHEL 6
virtualization.
The libvirtd daemon will always be running in the
background to handle virtualization needs and management
requests such as starting, stopping, installing, etc.
Interface to libvirt is provided by:
virsh - command line client
virt-manager - GUI client
Wednesday, March 23, 2011
DEMONSTRATION
LAB
1.
slideshow.end();