Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,12 @@ This is a Red Hat Certified System Administrator (RHCSA) certification study rep
- `rhcsa_acronyms_glossary.md` - Comprehensive glossary of RHCSA acronyms and terms
- `ebook_summary.md` - Analysis and topic organization from both major RHCSA study books
- `anki/` - Anki flashcard deck (tracked in git)
- `rhcsa_deck.csv` - 146 comprehensive flashcards covering all RHCSA exam objectives
- `rhcsa_deck.csv` - 169 comprehensive flashcards covering all RHCSA exam objectives
- `mkdocs.yml` - MkDocs configuration file for documentation site
- `requirements.txt` - Python dependencies for MkDocs
- `.github/workflows/deploy.yml` - GitHub Actions workflow for automatic deployment to GitHub Pages
- `vagrant/` - Automated lab environment provisioning with RHEL 9 VMs
- `Vagrantfile` - VM configuration for rhel9a and rhel9b instances
- `vagrant/` - Automated lab environment provisioning with RHEL 10 VMs
- `Vagrantfile` - VM configuration for rhel10a and rhel10b instances
- `playbook.yml` - Ansible playbook for environment setup
- `.rhel-credentials` - Hidden credentials file for Red Hat Developer subscription (not tracked)
- `sources/` - External resources (not tracked in git, contains copyrighted materials)
Expand All @@ -53,14 +53,14 @@ This is a Red Hat Certified System Administrator (RHCSA) certification study rep
## Lab Environment Requirements

**Vagrant Configuration**: The `../vagrant/` directory provides automated lab environment provisioning:
- RHEL 9 VMs with proper resource allocation and networking
- RHEL 10 VMs with proper resource allocation and networking
- Automated subscription registration with Red Hat Developer accounts
- Pre-configured storage setup for LVM and filesystem labs
- Prerequisites: Vagrant, VirtualBox, Red Hat Developer subscription

**VM Usage**:
- **rhel9a**: Used for user management and SELinux scenarios
- **rhel9b**: Used for storage management scenarios (multiple disks pre-configured)
- **rhel10a**: Used for user management and SELinux scenarios
- **rhel10b**: Used for storage management scenarios (multiple disks pre-configured)

## Common Study Tasks

Expand All @@ -73,7 +73,7 @@ This is a Red Hat Certified System Administrator (RHCSA) certification study rep
- **Focus on hands-on** command execution and verification in lab environment

### Anki Flashcard Usage
The `anki/rhcsa_deck.csv` file contains 146 essential commands organized by tags:
The `anki/rhcsa_deck.csv` file contains 169 essential commands organized by tags:
- `user_management` - useradd, usermod, chage, groupadd
- `permissions` - chmod, chown, file access controls
- `systemd` - systemctl, journalctl, service management
Expand All @@ -82,7 +82,7 @@ The `anki/rhcsa_deck.csv` file contains 146 essential commands organized by tags
- `selinux` - getenforce, setsebool, restorecon, ausearch troubleshooting
- `firewall` - firewall-cmd, port and service management
- `networking` - nmcli, static IP, DNS configuration
- `containers` - podman operations, systemd integration
- `flatpak` - Flatpak repository and application management

## Key RHCSA Command Categories

Expand Down
32 changes: 16 additions & 16 deletions COPYRIGHT_NOTICE.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,43 +2,43 @@

## Protected Content

This repository contains analysis and study materials derived from the following copyrighted works, all stored in the `resources/` directory (not tracked in git):
This repository contains analysis and study materials derived from the following copyrighted works, all stored in the `sources/` directory (not tracked in git):

### Study Books
1. **"RHCSA Red Hat Enterprise Linux" by Asghar Ghori**
- EPUB file: `resources/RHCSA Red Hat Enterprise Linux - Asghar Ghori.epub`
- Converted content: `resources/asghar_ghori_rhcsa.md`
- Extracted images: `resources/images/OEBPS/` (1000+ images)
1. **"RHCSA Red Hat Enterprise Linux 10" by Asghar Ghori** (Dec 2025 edition)
- EPUB file: `sources/RHCSA Red Hat Enterprise Linux - Asghar Ghori.epub`
- Converted content: `sources/asghar_ghori_rhcsa.md`
- Extracted images: `sources/images/OEBPS/` (1000+ images)
- Status: Excluded from repository via .gitignore

2. **"Red Hat RHCSA 9 Cert Guide" by Sander van Vugt**
- EPUB file: `resources/Red Hat RHCSA 9 Cert Guide (Cer - Sander van Vugt.epub`
- Converted content: `resources/sander_van_vugt_rhcsa.md`
- Extracted images: `resources/images/00001.jpeg` through `resources/images/00223.jpeg`
- EPUB file: `sources/Red Hat RHCSA 9 Cert Guide (Cer - Sander van Vugt.epub`
- Converted content: `sources/sander_van_vugt_rhcsa.md`
- Extracted images: `sources/images/00001.jpeg` through `sources/images/00223.jpeg`
- Status: Excluded from repository via .gitignore

### Official Documentation
3. **Red Hat Enterprise Linux 9 - Using SELinux**
- PDF file: `resources/Red_Hat_Enterprise_Linux-9-Using_SELinux-en-US.pdf`
- PDF file: `sources/Red_Hat_Enterprise_Linux-9-Using_SELinux-en-US.pdf`
- Publisher: Red Hat, Inc.
- License: Likely Creative Commons or similar open license (check document)
- Status: Excluded from repository via .gitignore

4. **Red Hat Enterprise Linux for SAP Solutions 9 - Using SELinux for SAP HANA**
- PDF file: `resources/Red_Hat_Enterprise_Linux_for_SAP_Solutions-9-Using_SELinux_for_SAP_HANA-en-US.pdf`
- PDF file: `sources/Red_Hat_Enterprise_Linux_for_SAP_Solutions-9-Using_SELinux_for_SAP_HANA-en-US.pdf`
- Publisher: Red Hat, Inc.
- License: Likely Creative Commons or similar open license (check document)
- Status: Excluded from repository via .gitignore

## Original Work Included (Tracked in Git)

The following files in `reference/` are original work and analysis based on the study materials:
The following files are original work and analysis based on the study materials:

- `reference/anki_rhcsa_flashcards.csv` - 146 original study flashcards organized by topic
- `reference/command_reference_by_topic.md` - Organized command reference with examples
- `reference/exam_quick_reference.md` - Exam day reference with comprehensive examples
- `reference/rhcsa_acronyms_glossary.md` - Comprehensive acronym and terminology guide
- `reference/ebook_summary.md` - Original analysis and commentary on both study books (transformative educational content)
- `anki/rhcsa_deck.csv` - Study flashcards organized by topic
- `docs/command_reference_by_topic.md` - Organized command reference with examples
- `docs/exam_quick_reference.md` - Exam day reference with comprehensive examples
- `docs/rhcsa_acronyms_glossary.md` - Comprehensive acronym and terminology guide
- `docs/ebook_summary.md` - Original analysis and commentary on both study books (transformative educational content)

## Fair Use Statement

Expand Down
20 changes: 10 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,11 @@ A comprehensive study repository for Red Hat Certified System Administrator (RHC
- `command_reference_by_topic.md` - Commands organized by functional area
- `rhcsa_acronyms_glossary.md` - Comprehensive glossary
- `ebook_summary.md` - Analysis from major RHCSA study books
- **`anki/rhcsa_deck.csv`** - 146 comprehensive flashcards for Anki import
- **`anki/rhcsa_deck.csv`** - 169 comprehensive flashcards for Anki import

### 🏗️ Lab Environment
- **`vagrant/`** - Automated RHEL 9 VM provisioning with Vagrant
- `Vagrantfile` - VM configuration for rhel9a and rhel9b instances
- **`vagrant/`** - Automated RHEL 10 VM provisioning with Vagrant
- `Vagrantfile` - VM configuration for rhel10a and rhel10b instances
- `playbook.yml` - Ansible playbook for environment setup

### 📖 External Resources (`sources/` directory, not tracked)
Expand All @@ -35,17 +35,17 @@ A comprehensive study repository for Red Hat Certified System Administrator (RHC

### Using the Anki Flashcards
1. Import `anki/rhcsa_deck.csv` into Anki
2. The deck includes 146 cards organized by topic tags:
2. The deck includes 169 cards organized by topic tags:
- `user_management`, `permissions`, `systemd`
- `storage`, `lvm`, `selinux`, `firewall`
- `networking`, `containers`, `monitoring`
- `rhel9_specific`, `exam_pressure`, `syntax_heavy`
- `storage`, `lvm`, `selinux`, `firewall`
- `networking`, `flatpak`, `monitoring`
- `rhel10_specific`, `exam_pressure`, `syntax_heavy`

### Lab Environment Setup

**Vagrant VM Provisioning**:
- See `vagrant/` directory for automated lab environment setup
- RHEL 9 VMs configured with proper resources and networking
- RHEL 10 VMs configured with proper resources and networking
- Automated subscription registration and storage disk configuration
- Prerequisites: Vagrant, VirtualBox, Red Hat Developer subscription

Expand Down Expand Up @@ -83,7 +83,7 @@ The flashcards and lab scenarios cover all essential areas:
- **Storage & LVM**: fdisk, pvcreate, vgcreate, lvcreate, filesystem management
- **Security & SELinux**: getenforce, setsebool, restorecon, firewall-cmd
- **Networking**: nmcli, static IP configuration, SSH setup
- **Containers**: podman operations with systemd integration
- **Flatpak**: Flatpak repository and application management

## Lab Scenarios

Expand All @@ -95,5 +95,5 @@ Each lab includes:

## Notes
- Lab 3 (SELinux) contains a TODO section requiring completion
- All scenarios designed for RHEL 9 environments
- All scenarios designed for RHEL 10 environments
- Commands in flashcards represent real exam tasks
37 changes: 20 additions & 17 deletions anki/rhcsa_deck.csv
Original file line number Diff line number Diff line change
Expand Up @@ -78,14 +78,16 @@ Front,Back,Tags,Notes
"Generate SSH key pair","ssh-keygen -t rsa","ssh",""
"Connect to server via SSH with specific key","ssh -i /path/to/key user@server","ssh",""
"Disable password authentication in SSH","Edit /etc/ssh/sshd_config, set PasswordAuthentication no","ssh",""
"Pull container image from registry","podman pull registry.redhat.io/ubi8/ubi","containers",""
"Run container with port mapping","podman run -d -p 8080:80 nginx","containers",""
"List running containers","podman ps","containers",""
"Stop container by ID","podman stop container-id","containers",""
"Build container from Containerfile","podman build -t myapp .","containers",""
"Run container as systemd service","podman generate systemd --new container-name > /etc/systemd/system/container.service","containers",""
"Mount host directory in container","podman run -v /host/path:/container/path image","containers",""
"View container logs","podman logs container-name","containers",""
"Add Flathub repository to system","flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo","flatpak",""
"Install Flatpak application from Flathub","flatpak install flathub org.example.App","flatpak",""
"Install Flatpak application for current user only (no root)","flatpak install --user flathub org.example.App","flatpak",""
"List installed Flatpak applications","flatpak list --app","flatpak",""
"List configured Flatpak remotes","flatpak remotes","flatpak",""
"Search for available Flatpak applications","flatpak search keyword","flatpak",""
"Remove a Flatpak application","flatpak uninstall org.example.App","flatpak",""
"Remove unused Flatpak runtimes after uninstalling apps","flatpak uninstall --unused","flatpak",""
"Run a Flatpak application","flatpak run org.example.App","flatpak",""
"Update all installed Flatpak applications","flatpak update","flatpak",""
"Check disk usage","df -h","monitoring",""
"Check memory usage","free -h","monitoring",""
"View running processes by CPU usage","top","monitoring",""
Expand All @@ -108,10 +110,10 @@ Front,Back,Tags,Notes
"Trace network route","traceroute destination","troubleshooting",""
"Test DNS resolution","nslookup hostname","troubleshooting",""
"View network interface statistics","ip -s link show","troubleshooting",""
"Configure static IP 192.168.1.100/24 and DNS 8.8.8.8 using nmcli on connection 'ens33'","nmcli con modify ens33 ipv4.addresses 192.168.1.100/24 ipv4.dns 8.8.8.8 ipv4.method manual && nmcli con up ens33","rhel9_specific,networking","Note: ipv4.method manual is required for static IP"
"Create podman container running nginx, map port 8080->80, auto-start with systemd","podman run -d --name web-server -p 8080:80 nginx && podman generate systemd --new --files --name web-server && sudo cp container-web-server.service /etc/systemd/system/ && sudo systemctl enable container-web-server.service","containers,rhel9_specific","New RHCSA requirement - containers with systemd integration"
"Configure static IP 192.168.1.100/24 and DNS 8.8.8.8 using nmcli on connection 'ens33'","nmcli con modify ens33 ipv4.addresses 192.168.1.100/24 ipv4.dns 8.8.8.8 ipv4.method manual && nmcli con up ens33","rhel10_specific,networking","Note: ipv4.method manual is required for static IP"
"Add Flathub remote for user-level installs and install an app","flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo && flatpak install --user flathub org.gnome.Calculator -y","flatpak,rhel10_specific","Flatpak replaces containers on RHEL 10 RHCSA exam"
"Boot into rescue mode to reset root password on RHEL 9 (GRUB method)","At GRUB menu: e -> find linux line -> add rd.break at end -> Ctrl+X -> mount -o remount,rw /sysroot -> chroot /sysroot -> passwd -> touch /.autorelabel -> exit -> exit","boot_rescue,exam_pressure","Must remember .autorelabel for SELinux"
"Allow httpd to bind to port 8080 with SELinux (without disabling)","semanage port -a -t http_port_t -p tcp 8080","selinux,rhel9_specific","Use semanage, not setsebool for port binding"
"Allow httpd to bind to port 8080 with SELinux (without disabling)","semanage port -a -t http_port_t -p tcp 8080","selinux,rhel10_specific","Use semanage, not setsebool for port binding"
"Create LV, extend it by 500MB, and grow XFS filesystem in one sequence","lvcreate -L 1G -n data vg01 && mkfs.xfs /dev/vg01/data && mkdir /data && mount /dev/vg01/data /data && lvextend -L +500M /dev/vg01/data && xfs_growfs /data","lvm,exam_pressure","Remember: XFS uses xfs_growfs, not resize2fs"
"Configure autofs to mount NFS share 192.168.1.100:/exports to /mnt/nfs","echo '/mnt /etc/auto.nfs --timeout=60' >> /etc/auto.master && echo 'nfs -rw 192.168.1.100:/exports' >> /etc/auto.nfs && systemctl enable autofs && systemctl start autofs","nfs,autofs,syntax_heavy","Complex syntax - practice this"
"Find all SUID files on system (exam-safe performance)","find / -perm -4000 -type f 2>/dev/null","security,file_operations","Redirect stderr to avoid permission noise"
Expand All @@ -120,14 +122,14 @@ Front,Back,Tags,Notes
"Create swap file (not partition) of 1GB and enable permanently","fallocate -l 1G /swapfile && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile && echo '/swapfile swap swap defaults 0 0' >> /etc/fstab","storage,exam_tricks","Swap files are valid - know this alternative"
"Troubleshoot: service fails to start, check SELinux denials","systemctl status servicename && journalctl -u servicename && ausearch -m AVC -ts recent","troubleshooting,selinux","Check all three: systemctl, journalctl, ausearch"
"Set user password to expire in 90 days, warn 7 days before, min 1 day between changes","chage -M 90 -W 7 -m 1 username","user_management,syntax_heavy","-M=max, -W=warning, -m=minimum days"
"Open firewall for HTTP, HTTPS permanently and reload","firewall-cmd --permanent --add-service=http --add-service=https && firewall-cmd --reload","firewall,rhel9_specific","Can chain --add-service options"
"Configure persistent journal logging","mkdir -p /var/log/journal && systemctl restart systemd-journald","systemd,rhel9_specific","Directory must exist for persistence"
"Open firewall for HTTP, HTTPS permanently and reload","firewall-cmd --permanent --add-service=http --add-service=https && firewall-cmd --reload","firewall,rhel10_specific","Can chain --add-service options"
"Configure persistent journal logging","mkdir -p /var/log/journal && systemctl restart systemd-journald","systemd,rhel10_specific","Directory must exist for persistence"
"Reset forgotten root password using single user mode (systemd method)","At GRUB: e -> linux line -> add systemd.unit=rescue.target -> Ctrl+X -> enter root password -> passwd -> systemctl default","boot_rescue,systemd","Systemd method - know both rd.break and rescue.target"
"Mount NFS share temporarily and add to fstab for permanent mounting","mount -t nfs 192.168.1.100:/exports /mnt/nfs && echo '192.168.1.100:/exports /mnt/nfs nfs defaults 0 0' >> /etc/fstab","nfs,storage","Test mount first, then add to fstab"
"Create user with specific UID 5000, home dir /opt/appuser, shell /sbin/nologin","useradd -u 5000 -d /opt/appuser -s /sbin/nologin -m appuser","user_management,exam_requirements","-m creates home dir, even if custom location"
"Check which process is using port 80","ss -tlnp | grep :80 OR lsof -i :80","monitoring,alternatives","Know both ss and lsof methods"
"Configure timezone to America/New_York","timedatectl set-timezone America/New_York","system_config,rhel9_specific","Use timedatectl, not /etc/localtime symlinks"
"Set hostname to server1.example.com permanently","hostnamectl set-hostname server1.example.com","networking,rhel9_specific","hostnamectl is the RHEL 9 way"
"Configure timezone to America/New_York","timedatectl set-timezone America/New_York","system_config,rhel10_specific","Use timedatectl, not /etc/localtime symlinks"
"Set hostname to server1.example.com permanently","hostnamectl set-hostname server1.example.com","networking,rhel10_specific","hostnamectl is the RHEL 9 way"
"Find files modified in last 7 days in /var/log","find /var/log -mtime -7 -type f","file_operations,exam_tricks","-mtime -7 means less than 7 days ago"
"Enable and start httpd, then check if it's listening on port 80","systemctl enable --now httpd && ss -tlnp | grep :80","systemd,verification","--now enables and starts in one command"
"Create logical volume that uses all available space in VG","lvcreate -l 100%FREE -n data vg01","lvm,exam_tricks","-l 100%FREE uses all remaining space"
Expand All @@ -136,8 +138,9 @@ Front,Back,Tags,Notes
"Create archive of /home excluding .cache directories","tar --exclude='*.cache*' -czf home-backup.tar.gz /home","file_operations,exam_tricks","--exclude before source directory"
"Change process priority of PID 1234 to nice value 10","renice 10 1234","process_management,syntax_order","renice [priority] [PID]"
"Configure autofs timeout of 30 seconds for all mounts","Edit /etc/auto.master, add --timeout=30 to master map entries","autofs,advanced","Global timeout in master map"
"Set ACL to give user alice read/write access to /shared/file","setfacl -m u:alice:rw /shared/file","acl,permissions","Format: u:user:permissions"
"Check ACL permissions on a file","getfacl /path/to/file","acl,verification","Shows effective permissions including ACLs"
"Show detailed information about a Flatpak application","flatpak info org.example.App","flatpak,verification","Shows version, runtime, permissions"
"Create LVM thin pool and thin volume","lvcreate --type thin-pool -L 5G -n thinpool vgname && lvcreate --virtualsize 10G --thin -n thinlv vgname/thinpool","lvm,thin_provisioning","Thin volumes allocate space on demand from pool"
"Check LVM thin pool usage percentage","lvs -o+data_percent vgname/thinpool","lvm,thin_provisioning","Monitor pool usage to avoid running out of space"
"Force user to change password on next login","chage -d 0 username OR passwd -e username","user_management,alternatives","Know both chage and passwd methods"
"Configure sudo access for wheel group without password","visudo -> %wheel ALL=(ALL) NOPASSWD: ALL","security,sudo","% indicates group, NOPASSWD removes password requirement"
"Find largest files in filesystem (top 10)","find / -type f -exec ls -la {} \; 2>/dev/null | sort -nk5 | tail -10","file_operations,advanced","Complex but useful for disk space issues"
Expand Down
Loading
Loading