Linux Fundamentals: Working with Linux and Related Technologies

Introduction

  • This module covers the basics of working in Linux, including:
    • Navigating the Linux desktop
    • Applications
    • Console tools
    • Package management
    • Development Languages
    • Security
    • The cloud
  • Comfort with Linux as a desktop operating system is essential for systems administration.
  • Systems administrators manage servers, assist users, recommend software, and update documentation.
  • Familiarization with the Linux GUI leads to learning command line tasks.

Getting to the Command Line

  • The command line interface (CLI) allows users to enter commands via text input.
  • Accessing the CLI can be achieved through:
    • GUI-based terminal from the applications menu.
    • Virtual terminal using Ctrl+Alt+F1, which requires logging in before command execution.

Applications

  • The Linux kernel manages applications by allocating memory, starting, killing, and multitasking.
  • There are various types of applications:
    • Server Applications: Serve information to client computers.
    • Desktop Applications: Directly interacted with by users (e.g., web browsers, text editors).
    • Tools: Software aimed at simplifying system management tasks.

Major Applications

  • Server Applications: Highly reliable; common early use was for web servers.
    • A web server hosts content accessed via HTTP/HTTPS.
    • Private cloud solutions like ownCloud and Nextcloud are gaining popularity.
  • Desktop Applications:
    • Email: Thunderbird, Evolution, KMail.
    • Creative: Blender, GIMP, Audacity.
    • Productivity: LibreOffice.
    • Web Browsers: Mozilla Firefox, Google Chrome.

Console Tools

  • UNIX experience overlaps software development and systems administration; familiarity with programming is necessary.
  • Shells: Users interact with Linux through various shells (e.g., bash, zsh).
  • Text Editors: Common text editors include Vi/Vim, Emacs, Pico, Nano.

Package Management

  • Linux systems require software management using packages (compressed files including applications and dependencies).
  • Common package management systems:
    • Debian Package Management: Uses .deb files; tools include dpkg, apt-get.
    • RPM Package Management: Uses .rpm files; tools include the rpm command.

Development Languages

  • Programming languages are either interpreted (e.g., Python, Perl) or compiled (e.g., C, C++).
  • Important languages include:
    • C: Underpins Linux.
    • Java, JavaScript: Used for web applications.
    • PHP, Ruby: Common for web development and automation.
  • OpenSSL: Vital for cryptographic needs.

Security

  • Privacy concerns are rising; users should manage cookies and avoid unnecessary tracking.
  • Strong password management is crucial; root is the privileged user in Linux.
  • Password managers and two-factor authentication (2FA) enhance security.
  • Protect against digital footprints; use firewalls (Linux has built-in options).

Privacy Tools

  • Deployment of encryption and security tools is vital for protecting systems and users.
  • Protocols like HTTPS and VPNs enhance communication security.
  • Technologies like Tor improve anonymity for web requests.

The Cloud

  • Cloud computing enables remote access and management of computing resources.
  • Four cloud deployment models:
    • Public Cloud: Accessible to anyone over the web.
    • Private Cloud: Exclusively for one organization.
    • Community Cloud: Shared among a group with common needs.
    • Hybrid Cloud: Combination of two or more cloud types.

Linux in the Cloud

  • Linux is foundational in cloud computing due to its flexibility, accessibility, and security.
  • Automated management reduces administrator workload, enhancing operational efficiency.

Virtualization

  • Virtualization allows one physical host to run multiple operating systems (guests).
  • The hypervisor manages these virtual machines, optimizing resource usage.

Containers and Bare Metal Deployment

  • Container technologies (e.g., Docker, Kubernetes) enable development of microservices in a serverless environment.
  • Linux is essential for containerization, bridging programming, database design, and systems administration in modern development.