FastHack Linux Edition - This is the 1st Linux "Hackathon" by Microsoft! It's a resource created to help interested people to get Linux skills and an understanding of basic command-line concepts.
Linux is a family of free and open-source operating systems based on the Linux kernel. Operating systems based on Linux are known as Linux distributions or distros. Examples include Debian, Ubuntu, Fedora, CentOS, Gentoo, Arch Linux, and many others.
The Linux kernel has been under active development since 1991, and has proven to be extremely versatile and adaptable. You can find computers that run Linux in a wide variety of contexts all over the world, from web servers to cell phones. Today, 90% of all cloud infrastructure and 74% of the world’s smartphones are powered by Linux.
To read more about Linux History, Linux Distributions and Linux Kernel, click here.
In this hack you will be challenged with some common tasks from a real world scenario in Linux administration duties, such as:
- Create a Linux Virtual Machine on Azure
- Handle files and directories
- Maninpulate file contents
- Work with standard linux permissions
- Collect information about Linux process in your environment
- Management of users and groups
- Basic shell scripting
- Work with disks, partitions and logical volume manager
- Linux package management
- Implement a basic webserver
With the exception of challenge 01 which has as an outcome a Linux Virtual Machine which will be required for all other challenges, each challenge can be done separately and they are not interdependent. The level of complexity increases accordingly with the respective number of each one.
- Challenge 01: Create a Linux Virtual Machine
- A Linux Virtual machine is the prequise for the challenges, so create a new Ubuntu Linux VM
- Challenge 02: Handling directories
- Learn how to perform common directory operations such as displaying your current directory and list directory contents.
- Challenge 03: Handling files
- Learn basic commands about file manipulation such as create, rename, find and remove files.
- Challenge 04: File contents
- Learn about file content manipulation and discover how to count file lines, display specific lines from a file, and more.
- Challenge 05: Standard file permissions
- Learn about the Linux standard file permissions and understand how to work with file permissioning on a Linux environment.
- Challenge 06: Process management
- Your objectives will involve basic process management, such as checking processes running and identifying process ids'
- Challenge 07: Group and user management
- In this challenge you will learn about the creation of user and groups in a Linux environment.
- Challenge 08: Scripting
- Learn some basic stuff on shell scripting and the usage of some commands such as echo, cut, read and grep.
- Challenge 09: Disks, partitions and file systems
- You will be working with disks and partitions and learn about linx filesystems and commands such as fdisk, mkfs and mount.
- Challenge 10: Logical Volume Mananager
- Discover about the Logical Volume Manager on Linux, and how to use commands such as pvcreate, vgcreate, lvrcreate, and more.
- Challenge 11: Package management
- Learn about package management and common activites such as update package distribution lists, install and uninstall packages.
- Challenge 12: Setting up a webserver
- In this challenge we will setting up a webserver and deploy a simple php application into it. The usage of SSL could be a plus.
-
Your own Azure subscription with contributor access for the Challenge 01 or contributor access to a pre-created Azure Virtual Machine for all other challenges.
-
Access to a terminal. The terms “terminal,” “shell,” and “command line interface” are often used interchangeably, but there are subtle differences between them:
-
A terminal is an input and output environment that presents a text-only window running a shell.
-
A shell is a program that exposes the computer’s operating system to a user or program. In Linux systems, the shell presented in a terminal is a command line interpreter.
-
A command line interface is a user interface (managed by a command line interpreter program) which processes commands to a computer program and outputs the results. When someone refers to one of these three terms in the context of Linux, they generally mean a terminal environment where you can run commands and see the results printed out to the terminal.
Becoming a Linux expert requires you to be comfortable with using a terminal. Any administrative task, including file manipulation, package installation, and user management, can be accomplished through the terminal. The terminal is interactive: you specify commands to run and the terminal outputs the results of those commands. To execute any command, you type it into the prompt and press ENTER.
For our activites, it is recommended to use the Azure Cloud Shell.
-
-
There are some basic concepts that will be nice if you have them. If you would like to take a look they are listed here.
-
Concepts around the Linux Filesystem Hierarchy Standard (FHS) are recommended, so you can get more details about it here.
-
Regarding Linux commands, just for reference, here is a good cheat sheet.
-
The Linux man pages are your best friend. Make sure to use as best you can.
- Linux Journey
- Linux Upskill Challenge
- Beginner's Guide for Linux - Tecmint
- Preparation for Linux Foundation Certified System Adminsitrator
- Linux Foundation Certified System Administrator (LFCS) Notes
- The Linux Documentation Project
- Intrduction to Linux - from TLPD
- Linux Commands Notes for Professionals
- Introduction to Linux - Free course on Linux Foundation
Contributions in the form of errors, feature requests and PRs are always welcome. Please follow these steps before submitting a PR:
- Create an issue describing the error or feature request.
- Clone the repository and create a topic branch.
- Make changes, adding new tests for new functionality.
- Submit a PR.
Please share your experience during this Linux Hackathon and help us to improve.
Give a ⭐️ if this content helped you!