Below are my notes about the RHCSA exam. I created them for preparing myself; please notice that they do not contain the content of the exam. I am not allowed to tell you about anything about the exam, so please don’t ask.
The notes are partly in German and badly formatted. Sorry about that, I just copied and pasted this stuff from my private wiki. Enjoy!

==== 1 - Kenntnis und Verwendung der wichtigsten Tools ====
=== 1.1 - Auf eine Shell-Prompt und Ausgabe von Befehlen in der korrekten Syntax zugreifen ===
  * Sowas wie ls oder ls -l. alias, exit, cd .., cd - und cd. cd - wechselt ins letzte Verzeichnis, cd ins Home.
  * ps und ps -l listen laufende Prozesse im aktuellen des aktuellen Terminals auf. 
  * Ctrl +r sucht nach Kommandos, Ctrl + l cleart den Screen. Ctrl + d loggt einen aus.  Ctrl + Alt + Del startet das System neu.
  * Symlinks und Hardlinks legen. 
  * nice und renice, top,
  * /etc/security/limits.conf
  * virt.manager
  * virtsh
  * lsmod |grep kvm -> zeigt nichts -> "Add/Remove Software" -> "Virtualization" -> virt-manager und kvm installieren
  * service libvirtd start, chkconfig --list |grep libv zeigen dann, dass das Zeugs schon beim Booten mit gestartet wird.
  * Access a shell, login, type some simple commands
  * Shell can be accessed by logging into virtual consoles CTRL + ALT + F1 oder Menu -> System Tools -> Terminal
  * Meitens öffnet sich /bin/bash, kann aber auch /bintcsh oder /bin/ksh sein.

=== 1.2 - Eingabe-/Ausgabe-Umleitung (>, >>, |, 2>, etc.) verwenden ===
  * Jede Datei unter Linux ist mit einem einzigartigen File-Deskriptor verknüpft.
  * cat /dev/input/mice
  * Jedes Kommando unter Linux wird der Zugriff auf drei wichtige Dateien gewährt: standard input, standard output und standard error.
  * Die File-Deskriptoren dazu lauten 0, 1 und 2.
  * ls -l myfile >test.txt
  * mail bla <test.txt 
  * cat bla >> test.txt (append)
  * redirect stdout: ls -l 1>/tmp/test.txt
  * redirect stderr: ls -l blah 2>/tmp/test.txt 
  * redirect sderr to stdout: ls -l blah >/dev/null 2>&1
  * Das "&" sagt Linux, dass "1" keine Datei ist.
  * stderr und stdout umleiten: commando >target 2>&1 (gemeinsame Zieldatei "target")

=== 1.3 - grep und normalen Ausdrücken zur Textanalyse verwenden ===
  * grep -ic 0 fruit.txt gibt Anzahl der Matches an.
  * grep -v -> "inverted search"
  * grep '^G' fruits.txt -> Sucht alle Wörter heraus, die mit einem großen "G" beginnen

=== 1.4 - Mit ssh und VNC auf Remote-Systeme zugreifen ===
  * vncviewer
  * ssh root@server
  * vncviewer server:port
  * openssh und openssh-server müssen dafür installiert sein
  * tigervnc, tigervnc-server und vino müssen für VNC-Verbindung installiert sein


=== 1.5 - Benutzer in Runlevels mit mehreren Benutzern anmelden und umschalten ===
  * /etc/inittab legt das default runlevel fest
  * 0 = halt, 1= single user mode (no networking), 2 = multi user without NFS (no networking), 3 = full multiuser mode
  * 4 = unused, 5 = X11, 6 = reboot
  * Das Runlevel sollte nicht auf 0 (halt) oder 6 (reboot) gesetzt werden, da sich das System sonst in einem Loop befinden würde.
  * init 0 würde das System herunter fahren
  * init 6 würde das System rebooten
  * tt y= teletypewriter
  * su = switch user
  * su - verwendet das Environment des Ziel-Users
  * Runlevel im Grub während des Bootens festlegen: grub append> ro root=/dev/VolGroup00/LogVol00 rhgb quiet 3


=== 1.6 - Dateien mit tar, star, gzip und bzip2 archivieren, komprimieren, entpacken und dekomprimieren ===
  * tar -czvf tar.tar filetobetared
  * tar -xzvf extractme.tar
  * tar -cjvf bzipped.tbz2 files
  * -j steht für bzip2
  * .tgz = tar.gz
  * Viewing the content of an archive: tar tvf archive.tar
  * Extract a single file: tar xvf archive.tar /var/log/messages
  * Extract a single directory: tar xvf archive.tar /var/log
  * tar xvf archive.tar -C /target_dir/is_here/

=== 1.7 - Textdateien erstellen und bearbeiten ===
  * vim


=== 1.8 - Dateien und Verzeichnisse erstellen, löschen, kopieren und verschieben ===
  * rsync, mv, cp, scp, ln, cat
  * mv -i = prompt before overwriting


=== 1.9 - Harte und weiche Links erstellen ===
  * ln -s /original/file/also/source /name/of/softlink/file
  * Nur Dateien können gehardlinkt werden.
  * Hardlinks sind nur innerhalb der gleichen Partition möglich.
  * Softlinks funktionieren auch partitionsübergreifend.

=== 1.10 - Standardmäßige ugo-/rwx-Berechtigungen auflisten, festlegen und ändern ===
  * rwx
  * 777 = rwxrwxrwx
  * owner group everyone
  * setuid = only used for binary files, the file is to be executed with the permissions of the owner of the file. capital S
  * setgid = same as set setuid, but only for groups. capital S
  * sticky bit = used primarily on directories, that bit dictates that a file created in the directory can be removed only by the user that created the file. capital T

=== 1.11 - Systemdokumentation, wie man, info sowie Dateien in /usr/share/doc finden, lesen und verwenden ===
  * man vim
  * man -k vim = nach vim in den Manpages suchen
  * makewhatis & which = building man pages
  * /usr/share/doc contains various documentation files.

==== 2 - Arbeit mit laufenden Systemen ====
=== 2.1 - Ein System normal booten, neu booten und herunterfahren ===
  * /sbin/shutdown -h now = herunterfahren
  * /sbin/shutdown -r now = reboot
  * oder halt und reboot


=== 2.2 - System manuell in verschiedene Runlevels booten ===
  * Beim GRUB-Menü -> press any key within the first three seconds
  * press "a" to append to the kernel command
  * add  <space><runlevel>
  * example: grub append> ro root=/bla/bla rhgb quit 3

=== 2.3 - Im Einzelbenutzermodus auf ein System zugreifen ===
  * add the keyword rescue as a parameter for the kernel.
  * example: linux rescue
  * or: linux rescue cd
  * linux rescue rdblacklist=foobar
  * chroot /mnt/bla
  * mount -t ext4 /dev/mapper/bla /target
  * fdisk -l
  * pvdisplay
  * vgdisplay
  * lvdisplay
  * reinstalling the boot loaded:
  * chrooten, dann /sbin/grub-install /dev/sda
  * boot into single user mode: kernel parameter add " single"
  * boot into emergency mode: kernel parameter add " emergency"


=== 2.4 - Prozesse mit hoher CPU- oder Speicherauslastung erkennen, die Prozesspriorität mit renice anpassen und Prozesse abbrechen ===
  * ps aux oder ps -e
  * process tree: ps -ejH
  * get info about threads: ps -elF oder ps axms
  * get security info: ps axZ oder ps -eM
  * to see every root process: ps -U root -u root u
  * top
  * renice +1 987 -u daemin root -p 32
  * This example would change the priority of the process IDs 987 and 32 and all processes owned by users daemon and root.
  * kill -9 2342
  * top: M sortiert nach RAM, P nach CPU 

=== 2.5 - Systemprotokolldateien finden und interpretieren ===
  * /var/log/messages
  * tail, cat, less, more, wc, head...


=== 2.6 - Auf die Konsole einer virtuellen Maschine zugreifen ===
  * virt-manager
  * virt-viewer
  * virsh vncdisplay domain
  * vncviewer localhost:display


=== 2.7 - Virtuelle Maschinen starten und anhalten ===
  * virt-manager
  * virsh start domain
  * virsh shutdown domain

=== 2.8 - Netzwerkservices starten, anhalten und deren Status prüfen ===
  * service service_name stop
  * service service_name start
  * service service_name status
  * example: service httpd status
  * service --status-all

==== 3 - Lokalen Speicher konfigurieren ====
=== 3.1 - Primäre, erweiterte und logische Partitionen aufführen, erstellen, löschen und den Partitionstyp festlegen ===
  * fdisk -l
  * cfdisk /dev/sda
  * fdisk /dev/sda
  * parted /dev/sda
  * xvde sind xen block devices
  * Redhat empfiehlt heutzutage parted

=== 3.2 - Physische Volumes erstellen und entfernen, physische Volumes zu Volumegruppen zuweisen und logische Volumes erstellen und löschen ===
  * pvcreate
  * vgcreate
  * lvcreate
  * pvremove
  * vgremove
  * lvremove
  * lvmdiskscan
  * oder interactive software: lvm
  * vgextend
  * lvcreate -L 100M MyVolGroup
  * lvcreate -l 100%FREE -n lv_oradata vg_oradat

=== 3.3 - LUKS-verschlüsselte Partitionen und logische Volumes erstellen und für die Aufforderung zur Passworteingabe konfigurieren und ein entschlüsseltes Dateisystem beim Booten einrichten ===
  * cryptsetup luksFormat device
  * cryptsetup luksOpen device mappername
  * mkfs.fs mappername
  * edit /etc/crypttab: mappername device none -> (/etc/crypttab: use UUID or LABEL for device)
  * edit /etc/fstab: /dev/mapper/mappername /mpoint (…)


=== 3.4 - Systeme für die Einrichtung von Dateisystemen beim Booten durch UUID (Universally Unique ID) oder Gerätebezeichnung konfigurieren ===
  * UUID (Universally Unique ID) herausfinden: blkid /dev/sda1 -> /dev/xvde1: LABEL="_/" UUID="1d2396e9-72b2-4954-8d31-f68e3bb6e677" TYPE="ext4"
  * oder: ll /dev/disk/by-uuid/
  * /etc/fstab editieren: use LABEL=label or UUID=uuid to specify the device


=== 3.5 - Neue Partitionen und logische Volumes hinzufügen und zerstörungsfrei auf ein System wechseln ===
  * cfdisk device -or- fdisk device -or- parted
  * Neues LV erstellen: lvcreate
  * mkswap /dev/sda5
  * swapon

==== 4 -  Dateisysteme erstellen und konfigurieren ====
=== 4.1 - ext2-, ext3- und ext4-Dateisysteme erstellen, einrichten, entfernen und verwenden ===
  * mount -t ext4 /dev/sda2 /mnt/tmp
  * mkfs.ext4 /dev/sda2
  * umount /mnt/tmp

=== 4.2 - LUKS-verschlüsselte Dateisysteme einrichten, entfernen und verwenden ===
  * cryptsetup luksOpen <device> <mappername>
  * mount /dev/mapper/mappername /mnt/tmp
  * umount /dev/mapper/mappername
  * cryptsetup luksClose mappername
  * vim /etc/fstab -> u01 /dev/Oracle/u01 none luks
  * vim /etc/fstab -> /dev/mapper/u01 /u01 ext4 defaults 1 1

=== 4.3 - CIFS- und NFS-Netzwerkdateisysteme einrichten und entfernen ===
  * yum install cifs-utils samba-client* nfs-util*
  * NFS-Freigaben ansehen: showmount -e <IP>
  * NFS-Freigabe mounten: mount 192.168.0.1:/home/nfs /data
  * CIFS("Samba")-Freigaben ansehen: smbclient -L <IP>
  * mount -t cifs -o username=root //<IP>/public/share /mnt/data
  * vim /etc/fstab -> //host/share /mnt/pnt  cifs  user=valentin,password=geheim 0 0

=== 4.4 - Systeme für die automatische Einrichtung von ext4-, LUKS-verschlüsselte und Netzwerkdateisysteme konfigurieren ===
  * vim /etc/auto.master -> /rhome/etc/auto.home --timeout=60 
  * vim /etc/auto.home -> *-fstype=nfs,soft,intr <IP>:/home/&
  * service autofs restart
  * cd /rhome
  * NFS in /etc/auto.* konfigurieren: nfs: mpoint -rw,intr host:/remote/mpoint
  * -> device: mpoint -fstype=fstype :device
  * vim /etc/fstab -> /dev/sda4 /mnt/pnt ext4 defaults 0 0
  * add cryptab entry -> name /dev/partition none
  * add fstab entry -> /dev/mapper/bla /mnt/bla /ext4 defaults 1 2

=== 4.5 - Vorhandene unverschlüsselte logische Volumes im ext4-Format erweitern ===
  * lvresize
  * z. B.: lvresize -L+1G /dev/volg1/srv
  * lvextend +5G Vg00Lv00
  * resize2fs /dev/mapper/Vg00L00
  * Bonus: verschlüsselte Volumes erweitern -> cryptsetup resize /dev/mapper/opt_data

=== 4.6 - Setgid-Verzeichnisse für die Zusammenarbeit erstellen und konfigurieren ===
  * chmod g+s /home/share/bla
  * Gruppe shared erstellen
  * chgrp shared /home/share/bla
  * User zur Gruppe shared hinzufügen

=== 4.7 - Zugriffskontrolllisten (ACLs) erstellen und verwalten ===
  * setfacl -mu:user1:rwx /dir
  * setfacl -xg:training:rwx /dir/
  * getfacl /files/dirs
  * setfacl -m <mode> <file>
  * setfacl -m u:john:rw /home/file
  * remote: setfacl -x <mode> <file>
  * yum install acl
  * acl als Mount-Option in /etc/fstab angeben!
  * setfacl -b <file> entfernt alle ACLs von einer Datei
  * setfacl -mr u:user:rwx <file> -> rekursiv!
  * Berechtigungen etc. ansehen: ls -laZ (-Z für Security-Kontext)
  * check /var/log/audit/audit.log for selinux errors
  * chmod
  * chown

=== 4.8 - Probleme bei der Host-Namensauswertung diagnostizieren und beheben ===
  * check /etc/nsswitch.conf
  * check /etc/resolv.conf
  * check /etc/hosts
  * dig google.com
  * is the red hat network config tool installed? yum install system-config-network

==== 5 - Systeme bereitstellen, konfigurieren und warten ====
=== 5.1 - Netzwerk- und Hostnamenauflösung statistisch und dynamisch konfigurieren ===
  * /etc/hosts (falls DNS nicht geht, sollte immer 127.0.0.1 mit localhost.localdomain enthalten)
  * /etc/resolv.conf (IP-Adresse des DNS-Servers, search domain)
  * /etc/sysconfig/network (Konfigurationsdatei mit Routing- und Host-Informationen)
  * /etc/sysconfig/network-scripts/ifcfg-interface-name -> Sowas wie /etc/network/interfaces
  * /etc/sysconfig/networking sollte nicht direkt editiert werden
  * /etc/nsswitch.conf -> define resolution order

=== 5.2 - Mit cron Zeitplanung für Tasks erstellen ===
  * crontab -e
  * or /etc/cron.d/bla editieren
  * yum install vixie-cron
  * service crond start
  * chkconfig crond on
  * /etc/cron.allow beachten
  * /etc/cron.deny beachten
  * Crontab-Format:
    * minute stunde tagdesmonats monat tagderwoche kommando
  * In /etc/crontab gibt es ein zusätzliches Benutzerfeld
  * at/batch yum install at
  * service atd start
  * chkconfig atd on

=== 5.3 - Systeme so konfigurieren, dass sie automatisch in ein bestimmtes Runlevel gestartet werden ===
  * vim /etc/inittab  
    * id:5:initdefault: -> id:3:initdefault:

=== 5.4 - Red Hat Enterprise Linux automatisch mit Kickstart installieren ===
  * Kernel-Boot-Optionen anhängen: 
    * linux ks=ftp://host/ks.cfg
    * linux ks=nfs:host:/ks.cfg
    * linux ks=cdrom:/dev/dir/ks.cfg
    * linux ks=hd:/dev/dir/ks.cfg
    * linux ks=file:/dev/dir/ks.cfg
  * Für die Verwendung von kickstart muss ein Kickstart-File erstellt werden, das Kickstart-Medium verfügbar gemacht werden und die Installation angeschmissen werden.
  * Für die Erstellung der Kickstart-Files gibt es den Kickstart-Konfigurator
  * Ansonsten:
  * cp /root/anaconda-ks.cfg nach /var/www/html/SL6/ks.cfg, Permissions setzen
  * Datei öffnen mit system-config-kickstart

=== 5.5 - Eine physische Maschine so konfigurieren, dass virtuelle Gäste gehostet werden ===
  * yum install qemu-kvm* libvirt* virt-manager* virt-top* virt*
  * /etc/init.d/libvirtd restart
  * chkconfig libvirtd on
  * virsh list
  * /sbin/modprobe -a kvm kvm_intel ksm
  * Einfach den virt-manager verwenden

=== 5.6 - Red Hat Enterprise Linux-Systeme als virtuelle Gäste installieren ===
  * virt-manager verwenden
  * vm-install.xml ggf. modifizieren
  * virsh-create vm-install.xml
  * virsh create vm-config.xml
  * virsh list
  * virsh console vm-server01

=== 5.7 - Systeme so konfigurieren, dass beim Booten virtuelle Maschinen gestartet werden ===
  * virsh autostart vm-server01
  * oder: ln --s /home/vm-server01.xml /etc/libvirt/qemu/autostart
  * oder: virt-manager

=== 5.8 - Netzwerkservices so konfigurieren, dass sie beim Booten automatisch gestartet werden ===
  * /etc/libvirt/qemu/networks/autostart, wenn virtual host networking
  * ansonsten:
  * service network restart
  * chkconfig network on

=== 5.9 - Ein System so konfigurieren, dass die Standardkonfiguration für einen HTTP-Server ausgeführt wird ===
  * yum install http*
  * service httpd restart
  * chkconfig httpd on
  * /etc/sysconfig/iptables aktualisieren: port 80 -> FALLS NOTWENDIG
  * iptables -L -n -t -> schauen

=== 5.10 - Ein System so konfigurieren, dass die Standardkonfiguration für einen FTP-Server ausgeführt wird ===
  * yum install vsftpd*
  * service vsftpd restart
  * chkconfig vsftpd on
  * /etc/sysconfig/iptables aktualisieren: port 21 -> FALLS NOTWENDIG
  * iptables -L -n -t -> schauen

=== 5.11 - Softwarepakete von Red Hat Network, einem Remote Repository oder einem lokalen Dateisystem auf installieren und aktualisieren ===
  * vim /etc/yum.repos.d/redhat.repo
[InstallMedia]
name=Red Hat Enterprise Linux 6.0
baseurl=ftp://\[server name]/pub/
gpgcheck=0
enabled=1

baseurl kann auch =file:///mnt/iso sein
baseurl kann auch =http://\[server name]/rhel6/ sein

  * yum search <name>
  * yum install <package>
  * yum update <package>

=== 5.12 - Das Kernel-Paket ordnungsgemäß aktualisieren, um ein startfähiges System zu gewährleisten ===
  * yum install <kernel>
  * vim /etc/frub.conf
    * default=0
  *  oder: rpm -ivh new_kernel.rpm
  * installierte kernel einsehen: yum list installed "kernel-*"

=== 5.13 - Den Bootloader des Systems modifizieren ===
  * vim /etc/grub.conf
  * default=0
  * timeout05
  * splashimage=(hd0,0)/grub/splash.xpm.gz
  * hiddenmenu
  * title Red Hat Enterprise Linux (2.6.32-71.el6.x86_64)
  * root (hd0,0)
  * kernel /vmlinuz-2.6.32-71.el6.x86_64 ro root=/dev/mapper/VolGroup-lv_root rd_LVM_LV=VolGroup/lv_root rd_LVM_LV=VolGroup/lv_swap rd_NO_LUKS rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=uk
  * crashkernel=auto rhgb quiet
  * initrdd /initramfs-2.6.32-71.el6.x86_64.img

==== 6 - Benutzer und Gruppen verwalten ====
=== 6.1 - Lokale Benutzerkonten erstellen, löschen und ändern ===
  * useradd -s /shell -d /home/dir -g group
  * userdel
  * usermod
  * /etc/passwd einsehen
  * /etc/default/useradd
  * /etc/login.defs
  * chown user:group /sein/home
  * chmod ugo+rwx /sein/home

=== 6.2 - Passwörter ändern und veraltete Password Aging für lokale Benutzerkonten anpassen ===
  * passwd <user>
  * change aging: chage -E YYYY-MM-DD <user>

=== 6.3 - Lokale Gruppen und Gruppenzugehörigkeiten erstellen, löschen und ändern ===
  * groupadd
  * groupdel
  * groupmod
  * vim /etc/group
  * usermod -aG user group
  * id
  * whoami
  * w
  * who
  * users

=== 6.4 - Ein System so konfigurieren, dass ein vorhandener LDAP-Verzeichnisservice für Benutzer- und Gruppeninformationen verwendet wird ===
  * Einfach system-config-authentication verwenden
  * oder: authconfig-tui

==== 7 - Sicherheit verwalten ====
=== 7.1 - Firewall-Einstellungen mit system-config-firewall oder iptables konfigurieren ===
  * system-config-firewall eingeben oder IPTABLES verwenden
  * iptables -L listet die IPTABLES-Regeln auf
  * iptables -F  -> löscht die IPTABLES-Regeln.
  * service iptables save -> schreibt die Regeln nach /etc/sysconfig/iptables
  * service iptables restart
  * chkconfig --level 345 iptables on

=== 7.2 - Modi "enforcing" und "permissive" für SELinux festlegen ===
  * sestatus zeigt den Status
  * selinuxenabled schaltets an
  * getenforce
  * setenforce 1
  * semodule -l
  * vim /etc/selinux/config
  * dort: SELINUX=enforcing|permissiveCurrent session:
  * http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Security-Enhanced_Linux/sect-Security-Enhanced_Linux-Working_with_SELinux-Enabling_and_Disabling_SELinux.html
  * fixfiles relabel

=== 7.3 - Datei- und Prozesskontext in SELinux erkennen und ausführen ===
  * ls -lZ zeigt Selinux-Zeugs an
  * chcon --t -R tmp_t /etc/hosts
  * chcon --reference file1 file2
  * mount -t nfs -o context=user_u:object_r:user_home_t 192.168.1.254:/share/home/ /home/
  * ps -efZ -> Prozesse identifizieren
  * chcon setzt Kontexte bis zum nächsten Reboot

=== 7.4 - Standarddateikontexte wiederherstellen ===
  * restorecon -R /etc/hosts

=== 7.5 - Mit booleschen Einstellungen SELinux-Systemeinstellungen ändern ===
  * getsebool -a |grep ftp
  * setsebool -P ftp_home_dir on

=== 7.6 - Routinemäßige Richlinienverstöße in SELinux erkennen und beheben ===
  * SELinux = Security Enhanced Linux
  * SELinux kommt ursprünglich von der NSA
  * SELinux ist ein Set an Änderungen im Kernel und an Tools
  * SELinux ist seit 2.6 im Kernel implementiert
  * /var/log/audit.log betrachten
  * /var/log/secure
  * /var/log/messages
  * sealert
  * audit2allow
  * seaudit-report --html -o /home/selinuxlog.html /var/log/audit/audit.log
  * audit2allow -i /var/log/audit/audit.log
  * audit2why < /var/log/audit/audit.log
  * avcstat
  * semanage port -l|more 
  * semanage port -a -t http_port_t -p tcp 8090
  * semanage port -l|grep 8090
  * semanage port -m -t smtp_port_t -p tcp 8090 
  * SEModule: 
  * semodule --l
  * semodule --i mymodule.pp
  * semodule --r mymodule
  * semodule --b base.pp