Skip to main content

The Linux Upskills Challenge

LinuxUpskillChallengeTitle.png

Course Overview

We begin our journey into Systems and Programming with the Linux Upskill Challenge

This challenge is a great way to take our first steps into Linux. It is a month long commitment that you can follow at your own pace, but if you dedicate 2-3 each day it will take you roughly 21 days to complete the challenge.
For our purposes we will be using the Challenge as a way to learn Linux for the first time and as a way to begin building on our Linux Command Line Skills.

Goals of this Course
  • Set up your own Linux Server either on the cloud or locally on your own machine
  • Learn to Navigate the Linux File System & learn about the Linux File Hierarchy Structure ( LFHS )
  • Cover the basics of the powerful vim text editor
  • Set up your own web server with Apache and set up some traffic rules with ufw
  • Understand how to filter information with commands like grep, cat, more, less, cute, tail, etc.
  • Learn about various file transfer protocols from SMB to SFTP and more
  • Grasp the basics of permissions involving users and groups
  • Ubuntu Universe vs Multiverse
  • Learn about Archiving & Compressing and build from source
  • Inodes, symlinks and other shortcuts
  • Get a brief introduction to shell scripting
Course Notes

The Linux Upskill Challenge has a lot of great concise and sufficiently detailed explanations for most of the topics they cover. Which makes it pretty hard to make any notes that wouldn't just be a copy & paste.
As a middle ground the following notes are commands and information I found particularly useful.

A quick note for people who are windows users.
Some of you may be using WSL to access your cloud instance. You might experience clock-drift on your device making you unable to access to the AWS CLI. If this happens try running the following command. 
This should serve as a temporary fix to your clock-drift but I would recommend looking online for a more permanent solution.

sudo hwclock -s

The ls command and its switches
    - ( -l ) : lists directory contents
    - ( -a ) : lists hidden files
    - ( -t ) : lists by date created
    - ( -r ) : lists in reverse order
Some notes on Sudo & Root Best practices 
    - Don't leave root open
    - Be careful of using sudo to open GUI applications, if you have to, use sudo -h 
    - /etc/shadow : A very important space that stores information about the user passwords on a Linux system
    - Hackers can't auto-crack if root is locked down
Commands used to find files
    - locate find grep which
Ownership and Permissions in Linux
    - ls -ltr is a good way of showing who owns what files and what permissions they have
    - chmod
         - u = user | g = groupo = others | a = all
         - ( + ) = add permission | ( - ) = remove permission | ( = ) = set permission
         - r = read | w = write | x = execute
         - u = user | g = group | o = others | a = all
         - 1 = execute 2 = write | 4 = read
examples:
         - chmod u+w hello.txt |
Gives user write permissions to the hello.txt file
         - chmod 777 hello.txt |
Gives read write and execute permissions to everyone
Important File Transfer protocols
Linux can share files through a variety of protocols. These 3 are key protocols to keep in mind
         - SMB: Microsoft file sharing, useful on a local network of Windows Machines
         - AFP:
Apples file sharing, useful on a local network of Apple Machines
         - SFTP:
Access & transfer files over SSH
You can get practice with vim by running vimtutor
Turn a file into a bash script with #!/bin/bash

Required Reading

The required reading section in the Linux Upskill Challenge covers all the material you need to get started. I added setting up SSH login as required since the challenge lists it as an extension.

Similar to before, the recommended readings posted on the challenge are very good and definitely worth going through. The 2 articles below are readsextensions that I found particularly interesting & practical.

Section Projects

Project-1
Self-Host
Project-2some services

What is Self Hosting?

Self-hosting is the practice of running and maintaining a website or service using a private web server, instead of using a service outside of someone's own control.

We should now be knowledgeable enough about Linux to be able to follow tutorials on how to self host our own services. The world of self hosting is a rabbit hole and there are more services out there than you will ever have time to cover. In short, there's bound to be something for everybody.

The following things I will list are services that I personally first set-up when I finished the Linux Upskill Challenge.

  • Wordpress
  • Pi-Hole
  • Grafana & Prometheus