Table of Contents Link to heading
- Getting to the Command Line
- Applications
- Console Tools
- Package Management
- Development Languages
- Security
- The Cloud
Getting to the Command Line Link to heading
The command-line interface (CLI) is a simple text input system for entering anything from single-word commands to complicated scripts.
On systems that boot to a GUI, there are two common ways of accessing the command line:
- A GUI-based terminal: Browse to the Terminal application from the applications menu.
- A virtual terminal: Can be run at the same time as a GUI but may require the user to log in via the virtual terminal before they can execute commands.
Applications Link to heading
- The kernel decides which program gets which blocks of memory, it starts and kills applications, and it handles displaying text or graphics on a monitor.
- Applications make requests to the kernel and in return receive resources, such as memory, CPU, and disk space.
- The kernel also handles the switching of applications, a process known as multitasking.
- There is a large variety of application types, such as word processors, web browsers, and email clients.
- A process is just one task that is loaded and tracked by the kernel.
- An application may even need multiple processes to function, so the kernel takes care of running the processes, starting and stopping them as requested, and handing out system resources.
Major Applications Link to heading
Linux software generally falls into one of the three categories:
- Server Applications: The purpose of this software is to serve information to other computers, called clients.
- Desktop Applications: Web browsers, text editors, music players, or other applications which users interact directly with.
- Tools: A loose category of software that exists to make it easier to manage computer systems.
Server Applications Link to heading
- Linux excels at running server applications because of its reliability and efficiency.
- One of the early uses of Linux was for web servers.
- A web server hosts content for web pages, which are viewed by a web browser using the HyperText Transfer Protocol (HTTP) or its encrypted flavor, HTTPS.
- There is a growing demand for private cloud server software that can be
deployed and administered internally.
- The ownCloud project provides software to store, sync and share data from private cloud servers.
- The Nextcloud project also provides private cloud software.
Desktop Applications Link to heading
- The Linux ecosystem has a wide variety of desktop applications.
- Email:
- The Mozilla Foundation came out with Thunderbird, a full-featured desktop email client that connects to a POP or IMAP server.
- Other notable email clients are Evolution and KMail which are the GNOME and KDE project’s email clients.
- Creative:
- For the creative types, there are Blender, GIMP (Gnu Image Manipulation Program), and Audacity which handle 3D movie creation, 2D image manipulation, and audio editing respectively.
- Productivity
- LibreOffice is a fork of the OpenOffice (sometimes called OpenOffice.org) application suite.
- Web browsers:
- The Mozilla Firefox and Google Chrome browsers are open-source web browsers that are fast, feature rich, and have excellent support for web developers.
Console Tools Link to heading
- UNIX has considerable overlap between the skills of software development and systems administration.
- The tools for managing systems have features of computer languages, such as loops, and are used extensively in automating systems administration tasks.
- Therefore, basic familiarity with programming is required for competent systems administrators.
- Shells:
- Users interact with a Linux system through a shell, which accepts commands to execute.
- Linux offers a variety of shells to choose from, such as the Bourne shell, the C shell, the Bourne Again (Bash) shell, the tcsh, the Korn shell (Ksh), and the zsh.
- Text editors:
- Most Linux systems provide a choice of text editors which are commonly used at the console to edit configuration files.
- The two main editors are Vi (or the more modern Vim) and Emacs.
- Pico and Nano are available on most systems and provide very basic, yet user friendly text editing.
Package Management Link to heading
- Every Linux system needs to add, remove, and update software.
- Modern distributions use packages.
- Packages are compressed files that bundle up an application and it’s dependencies (or required files), greatly simplifying the installation.
- A package manager takes care of keeping track of which files belong to which package and even downloading updates from repositories.
- In Linux, there are many different software package management systems, but the two most popular are those from Debian and Red Hat.
- Debian Package Management:
- The Debian distribution and its derivatives such as Ubuntu and Mint, use the Debian package management system.
- Debian package management has software packages that are distributed as files ending in the .deb extension.
- Tools for managing these files include dpkg, apt-get, aptitude, Synaptic, and Software Center.
- RPM (Red Hat Package Manager) Package Management:
- According to the Linux Standards Base, the standard package management system is RPM.
- RPM makes use of an .rpm file for each software package.
- Distributions derived from Red Hat, including CentOS and Fedora, use RPM.
- The back-end tool most commonly used for RPM Package Management is the rpm command.
Development Languages Link to heading
Computer programming languages provide a way for a programmer to enter instructions in a more human readable format, and for those instructions to eventually become translated into something the computer understands.
- Languages fall into one of two camps: interpreted or compiled.
- An interpreted language translates the written code into computer code as the program runs.
- A compiled language is translated all at once.
- Linux itself was written in a compiled language called C.
- C has been extended over the years to C++ and Objective C and other variants.
- The Java language uses hypothetical CPU called the Java Virtual Machine (JVM) and then compiles all the code to that.
- JavaScript is a high-level interpreted programming language that is one of the core technologies on the world wide web. Development Languages
- Perl is an interpreted language originally developed to perform text manipulation but has gained favour with systems administrators and is used in everything from automation to building web applications.
- PHP is a language that was initially built to create dynamic web pages.
- Ruby is another language that was influenced by Perl and Shell that powers many of the leading automation tools.
- Python is another scripting language that is in general use.
- Python has excellent statistical processing abilities and is a favourite in academia.
- OpenSSL is a cryptographic library that is used in everything from web servers to the command line.
- C library. It provides a basic set of functions for reading and writing to files and displays, which is used by applications and other languages alike.
Security Link to heading
Administrators and computer users are increasingly aware of privacy concerns.
Cookies are the primary mechanism that websites use to track you. As you browse the web, a web server can send back the cookie, which is a small piece of text, along with the web page.
Password Issues Link to heading
- Good password management is essential to security in any computing environment.
- The most privileged user on any Linux system is root; this account is the primary administrator which is created when the operating system is installed.
- There are many levels of access and various means of password management on a
Linux system.
- When users are created, they are given different login permissions depending on what groups they are assigned to.
- Services that run on systems, such as databases, can also have login permissions with their own passwords and privileges.
- There are specific passwords for accessing systems remotely through SSH, FTP, or other management programs.
- Increasingly users and administrators are turning to password manager programs, such as KeePassX to store login credentials in encrypted forms.
- Another trend is two-factor authentication (2FA), where a passcode is sent to another device.
Protecting Yourself Link to heading
A digital footprint (a digital shadow or an electronic footprint) refers to the trail of data the user leaves when using the Internet.
- Some of this information is gathered to collect statistics for advertising, and some can be used for malicious purposes.
- Some ways you can protect yourself include:
- Use a good, unique password.
- Use a password manager program.
- Limit the personal information given to sites to only what is needed.
- Make a point of checking for system updates periodically.
- Protect your computer from accepting incoming connections by using a
firewall.
- A firewall is a device that filters network traffic.
- Ubuntu has a built-in firewall - Gufw - a GUI utility for managing Uncomplicated Firewall (UFW).
Privacy Tools Link to heading
- The use of modern privacy tools, both at the server and user level can help prevent system intrusions and unauthorised access to data.
- However, there are still many known weaknesses that hackers can take advantage of.
- The proactive systems administrator is wise to deploy privacy tools that protect their users as well as the systems they use.
- There are many levels of access and various means of password management on a
Linux system.
- Administrators deploy encryption with authentication keys on almost every
system that communicates with the outside world.
- The HyperText Transfer Protocol Secure (HTTPS) standard used on web servers to ensure that data transmitted between users and online resources cannot be intercepted as it travels on the open Internet.
- Virtual private networks (VPN) work by creating an encrypted channel of communication between two systems, so the data transmitted between them is scrambled by an algorithm only the systems know.
- The Tor project and tools like its Tor Browser relay Internet requests through a network of servers that prevents websites and others from learning the identity of the person making the request.
- Administrators deploy encryption with authentication keys on almost every
system that communicates with the outside world.
The Cloud Link to heading
- Cloud computing allows computing resources to be moved to remote locations where content can be accessed, manipulated, and shared around the globe.
- Cloud adoption is the migration of an organisation’s IT applications and processes to cloud services.
- A cloud can be described as computing resources from one or many off-site data centres which can be accessed over the Internet.
- The data and resources that organisations store in the cloud can include data, servers, storage, application hosting, analytics, and a myriad of other services.
- A cloud deployment model provides a basis for how cloud infrastructure is built, managed, and accessed.
- There are four primary cloud deployment models:
- Public Cloud: Deployed by a provider to offer cloud services to the general public and organisations over the Internet.
- Private Cloud: Set up for the sole use of a particular organisation.
- Community Cloud: Set up for the sole use by a group of organisations with common goals or requirements.
- Hybrid Cloud: Composed of two or more individual clouds, each of which can be private, community, or public clouds.
Linux in the Cloud Link to heading
Linux plays a pivotal role in cloud computing. What makes Linux uniquely suited to enabling cloud computing includes:
- Flexibility: Cloud computing provides the capability to provision IT resources quickly and at any time.
- Accessibility: Applications and data reside centrally and are accessed from anywhere over a network from any device.
- Community Cloud: Consumers can scale IT resources to meet workload demand, thereby eliminating overhead from underutilised resources.
- Hybrid Cloud: A significant portion of Linux servers operating in the
cloud are created and managed by automated management programs rather than
human operators.
- This process frees up administrators to monitor computing operations rather than manually configuring and updating systems.
- Security: Linux can help offset security issues because it is one of the
most secure and reliable operating systems available.
- Linux is open source, meaning its source code can be inspected for vulnerabilities and compatibility issues.
Virtualisation Link to heading
- Virtualisation is one of the most significant advancements that has contributed to the enablement of cloud computing.
- Virtualisation is the process where one physical computer, called the host, runs multiple copies of an operating system, each copy called a guest.
- Each guest gets its own virtual resources and communicates with the network on its own.
- The host system runs software called a hypervisor that switches resources between the various guests.
- With software from companies like VMWare and VirtualBox, you can take
a powerful CPU and use it to run multiple virtual machines.
- This optimises usage of physical resources and dramatically reduces costs over the previous one machine, one OS model.
Containers and Bare Metal Deployment Link to heading
- Application software is now being written that runs in a “serverless” environment due to the rise of containerisation technologies like Docker and Kubernetes.
- Programmers are creating software that does one single function of a system (like database processing or storage) that runs in a container.
- These containers are organised in “pods” that run within a “node” and can talk with each other, and the outside world if needed.
- Linux is the underlying technology that makes container technology work.
- Working in Linux will increasingly mean working within a development team that draws on the disciplines of programming, database design, networking, and systems administration to create the systems of the future.