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
