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
Navigating the Linux Desktop
- 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.
- 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).
- 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.
- 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.