Giter Site home page Giter Site logo

fasthack-linux's Introduction

FastHack - Mastering Linux

Introduction

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 History

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.

Learning Objectives

In this hack you will be challenged with some common tasks from a real world scenario in Linux administration duties, such as:

  1. Create a Linux Virtual Machine on Azure
  2. Handle files and directories
  3. Maninpulate file contents
  4. Work with standard linux permissions
  5. Collect information about Linux process in your environment
  6. Management of users and groups
  7. Basic shell scripting
  8. Work with disks, partitions and logical volume manager
  9. Linux package management
  10. Implement a basic webserver

Challenges

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.

  1. Challenge 01: Create a Linux Virtual Machine
    • A Linux Virtual machine is the prequise for the challenges, so create a new Ubuntu Linux VM
  2. Challenge 02: Handling directories
    • Learn how to perform common directory operations such as displaying your current directory and list directory contents.
  3. Challenge 03: Handling files
    • Learn basic commands about file manipulation such as create, rename, find and remove files.
  4. Challenge 04: File contents
    • Learn about file content manipulation and discover how to count file lines, display specific lines from a file, and more.
  5. Challenge 05: Standard file permissions
    • Learn about the Linux standard file permissions and understand how to work with file permissioning on a Linux environment.
  6. Challenge 06: Process management
    • Your objectives will involve basic process management, such as checking processes running and identifying process ids'
  7. Challenge 07: Group and user management
    • In this challenge you will learn about the creation of user and groups in a Linux environment.
  8. Challenge 08: Scripting
    • Learn some basic stuff on shell scripting and the usage of some commands such as echo, cut, read and grep.
  9. 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.
  10. 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.
  11. Challenge 11: Package management
    • Learn about package management and common activites such as update package distribution lists, install and uninstall packages.
  12. 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.

Prerequisites

  • 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.

Learning Resources

Contributions

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.

Feedback

Please share your experience during this Linux Hackathon and help us to improve.

Show your support

Give a ⭐️ if this content helped you!

fasthack-linux's People

Contributors

ricmmartins avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.