Linux DevOps Fundamentals Assessment
1. Introduction
The report outlines the complete journey of completing the Linux DevOps Fundamentals
Assessment, which was designed to test practical command-line skills and foundational
knowledge essential for DevOps roles. The tasks reflect core operations typically
encountered in DevOps workflows, such as filesystem manipulation, user permissions,
system monitoring, network diagnostics, and understanding of services and package
managers. The assessment was a test and a learning exercise that allowed me to engage
with essential tools, commands, and challenges encountered by DevOps professionals.
2. Objectives
The primary goal of the assessment was to evaluate as well as enhance hands-on
proficiency in using the Linux command-line interface for system operations relevant to a
DevOps context. Specifically, the project aimed to:
● Validate hands-on ability to manage files, directories, users, and permissions.
● Demonstrate understanding of Linux system monitoring and process management.
● Apply basic network troubleshooting and data retrieval tools.
● Reflect knowledge of DevOps concepts and system administration principles.
3. Key Technologies and Concepts
The following Linux utilities and concepts played a key role in the assessment:
● File Operations: mkdir, touch, mv, cp, du
● Permissions Management: chmod, chown, ls -lR
● User Management: adduser, sudo
● Process Monitoring: ps, kill, top
● Networking Tools: ip, ping, ss, netstat, curl, wget
● Service Management: systemctl
● Package Management: apt, dpkg
● And understanding security concepts via frequent use of sudo
4. Assessment Breakdown and Execution
Section 1: Basic File & Directory Tasks (20 points)
1. Create a directory called devops-assessment in your home directory.
2. Inside it, create 3 files: server.txt, client.txt, README.md
All said files were created in the devops-assessment directory
3. Move all .txt files into a subdirectory called logs/
4. Copy the file README.md into /tmp with the name readme_backup.md
5. Show a command that displays the disk usage of the devops-assessment
directory in human-readable format.
Section 2: User and Permissions (20 points)
1. Create a new user called deployuser (you may need sudo).
A new user (deployuser) was added.
2. Change the ownership of the devops-assessment folder to deployuser.
The ownership of the devops-assessment directory was granted to the
deployuser, and as a consequence, the root user couldn’t access the directory.
3. Make sure only the owner can read/write the files in that folder (no access to others).
Sayed, being the root user, cannot access the devops-assessment directory as
the ownership and permissions to read, write, and execute have been granted to the
deployuser.
4. Display the permissions of all files inside devops-assessment using a single
command.
Section 3: Process and Resource Management (15 points)
1. Use a command to show the 5 most memory-intensive processes.
2. Kill a dummy process (use sleep 1000 & to create one, then kill it).
The snapshot shows a dummy process that was created and then killed. pgrep
sleep returned nothing, indicating that the process was killed successfully.
3. Display the current CPU usage in real-time using a command.
Section 4: Networking Basics (20 points)
1. Display the IP address of your system (IPv4 only).
2. Check if google.com is reachable (max 3 pings).
3. Show which ports are listening on your system (use ss or netstat).
4. Use curl or wget to download the contents of https://example.com and save it
to example.html.
Section 5: DevOps Context Questions (Short Answer, 25 points)
1. What is the difference between apt install and dpkg -i?
apt is a high-level package manager used in Debian-based systems like Ubuntu. It installs
packages from repositories, automatically handles dependencies, and supports additional
functions like package search, updates, and removals.
dpkg -i is a low-level tool used to install .deb files directly. It does not resolve
dependencies, so it may require a manual follow-up (sudo apt -f install). It's mainly
used for installing local or custom packages when apt isn’t suitable.
2. Name two common Linux services used in DevOps pipelines.
The most common Linux services used in DevOps pipelines include:
Docker for containerization and Jenkins for automating CI/CD pipelines.
3. Explain what sudo is and why it's important.
The sudo command in Linux stands for "superuser do." It allows a permitted user to
execute a command as the superuser (root) or another user, as defined in the
/etc/sudoers file. TheThe sudo command in Linux stands for "superuser do." It allows
a permitted user to execute commands with elevated privileges, typically as the root user
or another user, as specified in the /etc/sudoers file.
sudo is important because it:
● Enhances system security by limiting full root access while still allowing necessary
administrative actions.
● Supports the principle of least privilege, granting users permission to run only specific
commands.
● Keeps an audit trail, since all sudo commands are usually logged (e.g., in
/var/log/auth.log), making it easier to track user actions and changes.
By using sudo, system administrators can delegate limited admin privileges without
compromising the integrity of the overall system.
4. What command would you use to:
○ Start a service?
sudo service ssh start
○ Check its status?
sudo service ssh status
○ Enable it on boot?
pgrep -x sshd > /dev/null || sudo /usr/sbin/sshd
5. Why are permissions and ownership important in a CI/CD environment?
Ownership and permissions are essential in the CI/CD environment as they prevent
unauthorized users from accessing sensitive files, thereby allowing only authorized
users to access such files in the system. Moreover, ownership ensures build agents,
scripts, and container processes run with limited privileges, which subsequently
reduces the risk of system-wide changes and unauthorized access.
5. Project Flow Overview
6. Conclusion and Reflections
This project served as a meaningful reinforcement of fundamental Linux system operations
within a DevOps context. Each section simulated real-world tasks a DevOps engineer would
perform, from organizing files and managing users to monitoring system resources and
understanding service behavior. It successfully combined command-line execution with
DevOps-related concepts using only basic Linux tools.