RHCSA (10): Programming Tools

Alphabetical List of the Abbreviations used in this article:

Ansible = Ansible Automation Tool
Bash = Bourne Again Shell
Chef = Chef Automation Tool
C++ = C Plus Plus Programming Language
DNF = Dandified YUM
Emacs = Editor MACroS
GCC = GNU Compiler Collection
Git = Global Information Tracker
GNU = GNU's Not Unix
HTTPS = Hypertext Transfer Protocol Secure
LLM = Large Language Model
Perl = Practical Extraction and Report Language
Puppet = Puppet Automation Tool
Python = Python Programming Language
RHCSA = Red Hat Certified System Administrator
RPM = Red Hat Package Manager
SSH = Secure Shell
SSL = Secure Sockets Layer
sudo = Superuser Do
Vim = Vi Improved
YAML = YAML Ain't Markup Language
YUM = Yellowdog Updater Modified

How I Used Reference 1 in This Article:

Reference 1 cited many features that make up GNU/Linux and other computer operating systems. The ninth of these features is "programming tools". This ninth feature will be the 100% focus of this article.

Executive Summary

As a Red Hat Certified System Administrator with a focus on programming tools, you are expected to have a solid understanding of the key programming tools, scripting languages, and their usage within Red Hat Enterprise Linux. Mastery of shell programming is essential, particularly in Bash scripting. This includes working with command line arguments, variables, control structures such as if-else statements and loops, functions, redirections, pipes, process management, and file input and output operations.

Familiarity with widely used text editors such as vi, vim, nano, and Emacs is also crucial. You should be able to create, edit, save, and navigate files efficiently using these tools. Additionally, a working knowledge of scripting languages such as Perl, Python, and Ruby is important. You should understand their basic syntax, data structures, and standard libraries, and be able to write simple scripts to automate common system administration tasks.

Proficiency with Git, a distributed version control system, is necessary for tracking changes in code and collaborating with others. You should be comfortable performing basic operations such as cloning repositories, adding files, committing changes, creating and merging branches, and managing pull requests.

Understanding package management using RPM and YUM/DNF is fundamental. You must be able to install, update, and remove software packages, as well as handle dependency resolution effectively. Building and compiling software from source code is another key area, requiring familiarity with tools such as make, gcc, g++, and autoconf. You should also know how to work with compiler options, libraries, and header files.

Automation plays a central role in system administration. You should be able to use tools like Ansible, Puppet, or Chef for automating system configuration and management tasks. This includes writing playbooks, manifests, and roles, and understanding how these tools integrate within the Red Hat environment.

Strong troubleshooting skills are essential for identifying and resolving issues in scripts and programs. You should be familiar with common errors in shell scripts, text editors, and programming languages, and know techniques for isolating and fixing these problems.

Security is a critical consideration in every aspect of your work. You must follow best practices such as applying the principle of least privilege, setting appropriate file permissions, validating and sanitizing input, encrypting sensitive data, and handling confidential information properly.

Lastly, you should write code that is both testable and maintainable. This involves using proper indentation, writing clear comments, and creating thorough documentation to improve code readability and support effective collaboration with others.

Credits

The folllowing research assistants were invaluable tools that allowed me to complete this article in a timely manner: Mistral (an open-source local large language model - LLM) and ChatGPT (an online portal to OpenAI's remote LLMs).

Programming Tools in GNU/Linux

An RHCSA should have a strong foundation in the programming tools that are commonly used in GNU/Linux environments. These tools are essential for automating tasks, customizing system behavior, and building software from source code. A key skill for any administrator is proficiency with the Bash shell, which serves as both a command-line interface and a scripting environment. Bash allows administrators to write scripts that automate repetitive tasks such as backups, system monitoring, and user management. These scripts often involve the use of variables, conditional statements, loops, functions, and command substitution. Knowledge of command-line utilities such as sed, awk, grep, cut, and sort is equally important, as these tools are frequently combined in scripts to process text and extract useful information from files and logs.

Administrators must also be familiar with compiler tools such as gcc and g++ for compiling programs written in C and C++. The ability to compile software from source code is sometimes necessary when specific versions or custom configurations are required. Using make and autoconf helps simplify this process by automating the build and configuration steps. Understanding how to inspect Makefile contents, set environment variables for the compiler, and resolve missing dependencies ensures that the build process proceeds smoothly.

Version control tools like Git are also critical for tracking changes in scripts, configuration files, and code. An RHCSA should know how to initialize repositories, commit changes, create branches, merge updates, and resolve conflicts. This knowledge is valuable for both individual projects and collaborative work, as it allows teams to maintain a history of modifications and revert to earlier versions when needed.

Package management skills are closely related to programming tools. An RHCSA must know how to use package managers like rpm and dnf to install development tools and libraries. They should also understand how to find, download, and verify source packages when pre-built binaries are unavailable or unsuitable.

Finally, administrators should develop a habit of writing clean, well-documented scripts and programs. This means using clear and consistent naming conventions, adding comments to explain complex sections of code, and following best practices for error handling and input validation. Writing maintainable scripts not only makes future troubleshooting easier but also improves the reliability and security of automated tasks. Together, these skills form a core part of the RHCSA’s toolkit for effective system administration in GNU/Linux environments.

Text Editors in GNU/Linux

An RHCSA must be proficient in using text editors, as editing configuration files, writing scripts, and modifying code are routine tasks in GNU/Linux environments. The most fundamental editor that every administrator must master is vi or vim. This editor is almost always available on GNU/Linux systems and provides powerful features for efficient text manipulation. Administrators should know how to open, edit, save, and close files using vi, as well as how to navigate through text, search for specific patterns, and perform basic editing operations such as copying, pasting, deleting, and replacing text. Familiarity with line numbers, visual selection modes, and command-line shortcuts in vi can greatly improve speed and accuracy.

While vi is essential, it is also helpful for administrators to be familiar with other editors such as nano and emacs. Nano is a simple, user-friendly editor that is well-suited for quick edits and is often favored by beginners because of its straightforward interface and on-screen help. It allows easy navigation, searching, and editing without requiring memorization of complex commands. On the other hand, emacs is a powerful and extensible editor with advanced features such as macros, scripting support, and built-in tools for compiling code, reading email, and managing files. While its learning curve can be steep, emacs provides a high level of customization and is widely used by developers who require advanced editing capabilities.

Administrators should also be comfortable with basic file operations such as creating new files, editing configuration files, and saving backups of existing files before making changes. It is important to understand the difference between inserting text and running commands within editors like vi. In addition, knowing how to open files with root privileges, either by switching users or using commands like sudo, is a crucial skill for editing system configuration files safely.

Proficiency with text editors ensures that administrators can quickly respond to system issues, modify scripts, and configure software effectively. Regular practice with these tools, along with learning advanced features such as search-and-replace with regular expressions, makes editing tasks faster and reduces the likelihood of mistakes. Mastering text editors is a foundational skill for every RHCSA, as it directly affects the ability to manage and maintain GNU/Linux systems efficiently.

Using Scripting Languages in GNU/Linux

An RHCSA should have a working knowledge of common scripting languages used in GNU/Linux environments, as scripting is essential for automating tasks, simplifying system administration, and managing configurations. While Bash shell scripting is the most fundamental and widely used method, it is also important to understand higher-level scripting languages such as Python, Perl, and Ruby. Each of these languages has unique strengths that make them useful for different administrative tasks.

Bash scripting is typically the starting point for most administrators. It allows automation of system tasks by combining GNU/Linux commands into executable files. Administrators should be able to write scripts that use variables, control structures such as if-else conditions and loops, functions, and error handling. They should also understand how to read from and write to files, manage command-line arguments, and utilize text-processing tools like grep, awk, and sed within scripts. Bash scripts are often used for backups, system monitoring, and scheduled tasks using tools like cron.

Python has gained popularity for its simplicity and readability. It is widely used for writing more complex system administration tools. Python includes powerful libraries for handling file operations, networking, and system monitoring. An RHCSA should know how to write basic Python scripts, use data structures such as lists and dictionaries, and employ modules from the standard library. Many modern configuration management and cloud automation tools are also built on Python, making it a valuable skill for administrators.

Perl, while less commonly used than in the past, remains a powerful scripting language for text processing and system administration. It excels at tasks involving regular expressions and quick manipulation of files and strings. Administrators who work with legacy systems or scripts may still encounter Perl in use and should be familiar with its basic syntax and features.

Ruby is another scripting language that is occasionally used in system administration, particularly with configuration management tools such as Chef. While it may not be as prevalent as Python or Bash, knowing the basics of Ruby can be useful for working with certain automation frameworks.

Overall, an RHCSA should be comfortable writing, modifying, and debugging scripts in these languages. They should know how to execute scripts, set permissions correctly, and use interpreters properly. Familiarity with shebang lines, environment variables, and best practices for secure coding is also essential. These scripting skills enable administrators to automate repetitive tasks, streamline workflows, and improve system reliability in GNU/Linux environments.

Using Git in a GNU/Linux Environment

An RHCSA should have a good understanding of Git, as it is the most widely used version control system for managing changes in code, scripts, and configuration files. Git allows administrators to track modifications, collaborate with others, and maintain a complete history of changes, making it an essential tool in GNU/Linux environments.

Administrators should know how to create and initialize Git repositories to begin tracking changes in a directory. They must understand how to stage changes using the git add command, commit changes with clear and descriptive messages using git commit, and review the history of changes through git log. These basic operations form the foundation for using Git effectively in system administration.

Branching is another critical concept that every RHCSA should understand. Branches allow administrators to develop new features or test changes without affecting the main version of the code. Knowing how to create, switch between, merge, and delete branches is essential for safely experimenting with scripts or configurations. Resolving merge conflicts is also an important skill, as conflicts may arise when combining changes from different sources.

Administrators should also be comfortable working with remote repositories. This includes cloning repositories from remote servers using git clone, fetching updates with git fetch or git pull, and sharing changes using git push. Understanding how remote repositories work enables collaboration with other team members and allows administrators to back up critical scripts and configuration files offsite.

Additionally, Git provides tools for inspecting differences between versions using git diff and reverting to previous states if necessary. These capabilities are valuable for troubleshooting issues and recovering from mistakes. Git’s distributed nature ensures that each repository contains a full history of the project, providing resilience even if remote servers become unavailable.

An RHCSA should also learn about best practices in Git, such as writing meaningful commit messages, organizing repositories logically, and using .gitignore files to exclude unnecessary files from version control. Familiarity with Git hooks and basic automation of Git tasks can further enhance productivity.

By mastering Git, administrators gain a reliable and efficient way to manage the scripts, documentation, and configuration files that are vital to maintaining GNU/Linux systems. This knowledge not only improves personal workflows but also ensures smooth collaboration within larger teams and projects.

Package Management in GNU/Linux Using RPM, YUM, and DNF

An RHCSA must be proficient in package management, as it is a core part of maintaining and administering GNU/Linux systems. Red Hat Enterprise Linux uses the RPM Package Manager to handle software installation, removal, and verification. Understanding how RPM works is essential for managing software efficiently and ensuring system stability.

RPM allows administrators to install individual software packages using the .rpm format. It provides commands to install new packages, upgrade existing ones, and remove software when no longer needed. Administrators should be able to query installed packages to check their versions, verify file locations, and view package details such as dependencies, installation dates, and digital signatures. They should also know how to use RPM to verify the integrity of installed packages, which can help detect missing or altered files.

While RPM handles individual package files, YUM and DNF simplify the process by resolving dependencies automatically and managing packages from online repositories. YUM, the Yellowdog Updater Modified, has been widely used in previous versions of Red Hat-based systems. It allows administrators to install, update, and remove packages with simple commands, automatically retrieving required dependencies from configured repositories. YUM also provides features such as group installations and the ability to list or search for available packages in enabled repositories.

DNF, which stands for Dandified YUM, is the newer package manager introduced to replace YUM in recent versions of Red Hat Enterprise Linux. It retains the familiar command structure of YUM but offers improved performance, better dependency resolution, and more advanced features such as modular content management and automatic rollback capabilities. DNF also provides more reliable transaction handling, making it safer to use in environments where stability is critical.

An RHCSA should understand how to configure software repositories, including adding third-party repositories when necessary, and securing package installations through the use of GPG keys and signed packages. They should be able to clean the cache, manage metadata, and troubleshoot common issues such as dependency conflicts and failed transactions.

In addition to using package managers, administrators must also know how to manually download and install RPM packages when required. This skill is useful for offline systems or situations where custom packages need to be deployed.

Mastering RPM, YUM, and DNF ensures that an RHCSA can manage software efficiently and securely. This knowledge allows administrators to keep systems updated, install necessary tools, and maintain the integrity of the software environment, all of which are critical for the smooth operation of GNU/Linux systems.

Using Make, GCC, G++, and Autoconf in GNU/Linux

An RHCSA should have a clear understanding of the tools used for compiling and building software from source code in GNU/Linux environments. These tools include make, gcc, g++, and autoconf, which together form the foundation for creating, customizing, and installing software packages when precompiled binaries are not available or when specific configurations are needed.

The GNU Compiler Collection, known as gcc, is the standard compiler for C programs, while g++ is used for compiling C++ programs. An administrator should be familiar with compiling simple programs using these tools, understanding basic compiler options such as specifying output file names, setting optimization levels, including debugging information, and linking libraries. Knowing how to use header files and specifying include paths with the compiler is essential for resolving dependencies during the compilation process.

The make utility automates the process of compiling and building programs by reading instructions from a file called Makefile. This file defines the relationships between different files in a project and the commands needed to build them. Using make allows administrators to compile only the parts of a program that have changed, which saves time and reduces errors. Understanding how to read and modify Makefile entries is a valuable skill, particularly when troubleshooting build failures or customizing software installations.

Autoconf is a tool that generates configuration scripts to prepare source code for compilation on different systems. It checks for system features, libraries, and tools that are required by the software, allowing it to adapt to various environments. Administrators should know how to run the ./configure script that is often included with source packages, which sets up the necessary build environment by detecting system settings and creating appropriate Makefile entries. They should also understand common configuration options that enable or disable specific features or set installation paths.

In many cases, compiling software from source involves running a sequence of commands: executing the configure script, running make to compile the program, and using make install to install it on the system. An RHCSA should be familiar with this process, as well as with uninstalling software built from source if needed.

Administrators must also be aware of the risks and responsibilities involved with compiling from source. This includes ensuring that all required development libraries are present, reviewing build scripts for potential security issues, and verifying the authenticity of source code downloads.

By mastering the use of make, gcc, g++, and autoconf, an RHCSA can customize software installations, troubleshoot build issues, and extend system functionality beyond what is available through prepackaged software repositories. These skills are essential for administrators who manage specialized or custom environments in GNU/Linux systems.

Automation in GNU/Linux Using Ansible, Puppet, and Chef

An RHCSA should have a solid understanding of automation tools in GNU/Linux environments, as automation is essential for managing complex systems, improving efficiency, and reducing the risk of human error. Three of the most widely used automation tools are Ansible, Puppet, and Chef. Each of these tools allows administrators to automate system configuration, software deployment, and routine administrative tasks.

Ansible is a popular choice due to its simplicity and agentless architecture. It uses SSH to communicate with target systems, making it easy to set up and use. Ansible relies on playbooks, which are written in YAML, to define the desired state of systems. An RHCSA should know how to write and run basic playbooks to perform tasks such as installing packages, managing services, creating files, and configuring system settings. Ansible modules simplify common tasks and allow administrators to quickly automate repetitive work. An RHCSA should also be familiar with inventory files, which define groups of hosts for automation tasks.

Puppet is a more complex tool that uses a client-server model. It requires an agent to be installed on managed systems, which regularly communicates with a central server. Puppet uses manifests, written in its own declarative language, to define system configurations. These manifests describe the desired state of resources such as users, packages, services, and files. An RHCSA should understand the basic structure of Puppet manifests and how to apply them to enforce consistent configurations across systems.

Chef is another widely used automation tool that uses a client-server architecture and a procedural language based on Ruby. It organizes configurations into cookbooks and recipes, which specify how systems should be configured. An RHCSA should be aware of how to write simple recipes to automate tasks like package installation, service management, and file creation. Chef’s approach allows for greater flexibility and complex logic within automation scripts, which can be useful in advanced environments.

Administrators should understand the advantages and trade-offs of these tools. Ansible is often preferred for its ease of use and minimal setup requirements, making it ideal for quick tasks or small environments. Puppet and Chef offer more robust frameworks for managing large infrastructures but require more initial configuration and learning.

In addition to writing automation scripts, an RHCSA should understand the importance of testing changes before deploying them across production systems. They should also follow best practices such as using version control for automation scripts, keeping configurations modular and reusable, and documenting their automation processes clearly.

By mastering these automation tools, an RHCSA can efficiently manage large numbers of systems, reduce manual effort, and ensure consistent and reliable configurations across their GNU/Linux environments. Automation skills are critical for scaling operations and maintaining system stability in both small and large infrastructures.

Troubleshooting Scripts and Programs in GNU/Linux

An RHCSA must have strong troubleshooting skills to diagnose and resolve issues in scripts and programs within GNU/Linux environments. Troubleshooting is a vital part of system administration, as errors in scripts or software can cause system failures, unexpected behavior, or security vulnerabilities. A systematic approach to identifying and fixing problems is essential for maintaining a stable and reliable system.

The first step in troubleshooting is understanding how to interpret error messages. Most scripts and programs will display useful error output when they fail. An RHCSA should be comfortable reading these messages to identify where the error occurred and what caused it. This often involves examining logs, reviewing terminal output, and checking exit codes. Knowing how to use debugging tools and built-in options such as bash -x for shell scripts can provide valuable insights into the flow of execution and the values of variables at each step.

For shell scripts, common issues include syntax errors, incorrect use of variables, missing or misused commands, and improper permissions. An RHCSA should be able to identify and fix these problems by carefully reviewing the script’s logic and structure. They should also be familiar with testing individual commands outside the script to isolate specific issues and confirm that each part of the script behaves as expected.

When working with higher-level scripting languages such as Python, Perl, or Ruby, administrators need to recognize language-specific errors such as incorrect indentation, missing libraries, or invalid syntax. Understanding how to read stack traces and use debugging tools such as pdb for Python can help in diagnosing these types of issues. Installing and enabling language-specific debugging modules may also be necessary for complex problems.

File permissions and environment settings are frequent sources of trouble in GNU/Linux. An RHCSA should always verify that scripts have the correct execution permissions and that necessary environment variables are set correctly. They should also be aware of potential issues related to differences in user accounts, such as running scripts as root versus a regular user, which can affect file access and command behavior.

Network-related troubleshooting may also be required when dealing with scripts that connect to external systems or services. In these cases, administrators should check connectivity, verify hostnames and ports, and review firewall settings. Tools such as ping, curl, netstat, and ss can assist in diagnosing network problems.

Good troubleshooting also involves preventive measures. An RHCSA should practice writing scripts defensively, using proper error handling techniques such as checking for the success or failure of commands and validating user input. Adding clear comments and maintaining organized code can make future troubleshooting much easier.

By developing strong troubleshooting skills, an RHCSA can quickly identify and resolve issues in scripts and programs. This ability ensures that systems remain functional and secure, and it allows administrators to correct problems efficiently, minimizing downtime and disruption in GNU/Linux environments.

Excellent Security Practices in GNU/Linux

An RHCSA must follow excellent security practices to protect GNU/Linux systems from unauthorized access, data breaches, and other security threats. Security is a critical responsibility for every system administrator, and maintaining a secure environment requires both preventive measures and continuous monitoring.

The foundation of good security starts with managing user accounts and permissions carefully. Administrators should always apply the principle of least privilege, granting users only the access they need to perform their tasks. This involves using correct file permissions, setting appropriate ownership of files and directories, and utilizing access control tools such as chmod, chown, and umask. Password policies should be enforced to ensure strong, complex passwords, and administrators should know how to lock or disable accounts when necessary.

Proper use of system authentication methods is also important. An RHCSA should understand how to configure tools like sudo to allow limited administrative access without sharing root passwords. They should regularly review the /etc/sudoers file and use tools such as visudo to safely make changes. Knowing how to configure secure authentication systems, including key-based SSH access, helps prevent unauthorized logins and enhances system security.

Monitoring and logging are key components of effective security. Administrators must regularly review system logs using tools such as journalctl and logrotate to detect suspicious activity. Setting up automated alerts for unusual login attempts, failed commands, or changes to critical system files allows for early detection of security incidents. Ensuring that logging systems are properly configured and maintained is essential for ongoing security.

System updates play a vital role in preventing security vulnerabilities. An RHCSA should be diligent in applying security patches and software updates using package management tools like dnf or yum. Automated update tools can simplify this process, but administrators must balance automation with the need for testing updates in critical environments to avoid unintended disruptions.

Network security is another critical area. Administrators should be familiar with firewall configuration using tools such as firewalld and iptables to restrict network access. They must also understand how to disable unused services and close unnecessary network ports to reduce the system’s attack surface. Configuring services to use encrypted connections, such as HTTPS or SSH, is essential for protecting sensitive data in transit.

Additional security measures include implementing encryption for sensitive files using tools such as gpg or openssl, setting up two-factor authentication where supported, and ensuring secure backups of important data. Administrators should also review and harden configuration files for applications and services to prevent accidental exposure of sensitive information.

Security is not a one-time task but an ongoing process. An RHCSA must stay informed about emerging threats and security best practices. By consistently applying these excellent security measures, administrators can safeguard GNU/Linux systems and maintain trust in the systems they manage.


Writing Testable and Maintainable Code in GNU/Linux

An RHCSA should understand the importance of writing testable and maintainable code in GNU/Linux environments, as this skill greatly improves the reliability, clarity, and long-term usability of scripts and programs. Well-written code reduces the likelihood of errors, simplifies troubleshooting, and makes it easier for others to collaborate on projects.

The foundation of testable and maintainable code lies in clear and consistent formatting. Administrators should use proper indentation to make the structure of the code obvious, especially when working with nested control structures such as conditionals and loops. Consistent spacing and alignment help readers understand the flow of the script at a glance. In addition, meaningful variable and function names should be used to clearly indicate their purpose, making the script more self-explanatory.

Comments play a critical role in improving maintainability. An RHCSA should include comments that explain the purpose of the script, its expected inputs and outputs, and any non-obvious sections of the code. Comments should describe why certain choices were made, not just what the code does, as this will help others—or the administrator themselves at a later time—understand the reasoning behind the implementation. However, comments should not be excessive or repeat what is already obvious from the code itself.

Administrators should also break complex scripts into smaller, reusable functions or modules wherever possible. This modular approach makes it easier to test individual components of the script and allows pieces of code to be reused in other projects. Modular code reduces duplication and makes maintenance easier, as changes to one part of the script are less likely to affect others.

Error handling is another crucial aspect of writing reliable scripts. An RHCSA should include checks for command success or failure, validate input values, and provide clear and helpful error messages when something goes wrong. This approach makes it easier to identify and fix problems during both development and production use.

Testing is essential for ensuring that scripts behave as expected. Administrators should test their code in controlled environments before deploying it to production systems. Automated testing, where feasible, can help identify regressions or unexpected behavior when changes are made. Simple test cases can verify that functions return the correct results and that edge cases are handled properly.

Version control systems such as Git should be used to track changes to scripts and programs. This allows administrators to review their change history, revert to previous versions if needed, and collaborate effectively with others. Documenting major changes within commit messages helps create a clear project history.

Writing documentation that accompanies scripts or programs is equally important. Documentation should include clear instructions on how to install, configure, and run the code, as well as examples of common use cases. Well-documented scripts are easier for others to adopt and adapt for their own needs.

By following these practices, an RHCSA can create scripts and programs that are easy to test, simple to maintain, and reliable to use. These skills help administrators work more efficiently, minimize mistakes, and ensure that their automation tools remain useful over time in GNU/Linux environments.

Conclusions

This concludes Article 10 of my RHCSA series. We discussed many aspects of using programming tools on GNU/Linux computer systems:

  • An RHCSA should have a strong foundation in the programming tools that are commonly used in GNU/Linux environments
  • An RHCSA must be proficient in using text editors, as editing configuration files, writing scripts, and modifying code are routine tasks in GNU/Linux environments. 
  • An RHCSA should have a working knowledge of common scripting languages used in GNU/Linux environments, as scripting is essential for automating tasks, simplifying system administration, and managing configurations.
  • An RHCSA should have a good understanding of Git, as it is the most widely used version control system for managing changes in code, scripts, and configuration files.
  • An RHCSA must be proficient in package management, as it is a core part of maintaining and administering GNU/Linux systems.
  • An RHCSA should have a clear understanding of the tools used for compiling and building software from source code in GNU/Linux environments. These tools include make, gcc, g++, and autoconf, which together form the foundation for creating, customizing, and installing software packages when precompiled binaries are not available or when specific configurations are needed.
  • An RHCSA should have a solid understanding of automation tools in GNU/Linux environments, as automation is essential for managing complex systems, improving efficiency, and reducing the risk of human error. Three of the most widely used automation tools are Ansible, Puppet, and Chef.
  • An RHCSA must have strong troubleshooting skills to diagnose and resolve issues in scripts and programs within GNU/Linux environments.
  • An RHCSA must follow excellent security practices to protect GNU/Linux systems from unauthorized access, data breaches, and other security threats.
  • An RHCSA should understand the importance of writing testable and maintainable code in GNU/Linux environments, as this skill greatly improves the reliability, clarity, and long-term usability of scripts and programs

References:

[1] 2020 - Lecture - CSCI 275: Linux Systems Administration and Security - Moe Hassan - CUNY John Jay College - NYC Tech-in-Residence Corps. Retrieved June 26, 2025 from https://academicworks.cuny.edu/cgi/viewcontent.cgi?article=1053&context=jj_oers

You should also read: