The Linux Community and a Career in Open Source
Key Knowledge Areas | The following is a partial list of the used files, terms and utilities: | |
---|---|---|
Linux Evolution and Popular Operating Systems | • Distributions • Embedded Systems • Linux in the Cloud |
• Debian, Ubuntu (LTS) • CentOS, openSUSE, Red Hat, SUSE • Linux Mint, Scientific Linux • Raspberry Pi, Raspbian • Android |
Major Open Source Applications | • Desktop applications • Server applications • Development languages • Package management tools and repositories |
• OpenOffice.org, LibreOffice, Thunderbird, Firefox, GIMP • Nextcloud, ownCloud • Apache HTTPD, NGINX, MariaDB, MySQL, NFS, Samba • C, Java, JavaScript, Perl, shell, Python, PHP • dpkg, apt-get, rpm, yum |
Open Source Software and Licensing | • Open source philosophy • Open source licensing • Free Software Foundation (FSF), Open Source Initiative (OSI) |
• Copyleft, Permissive • GPL, BSD, Creative Commons • Free Software, Open Source Software, FOSS, FLOSS • Open source business models • Free Software Foundation (FSF), Open Source Initiative (OSI) |
ICT Skills and Working in Linux | • Desktop skills • Getting to the command line • Industry uses of Linux, cloud computing and virtualization |
• Using a browser, privacy concerns, configuration options, searching the web and saving content • Terminal and console • Password issues • Privacy issues and tools • Use of common open source applications in presentations and projects |
Finding Your Way on a Linux System
Key Knowledge Areas: | The following is a partial list of the used files, terms and utilities: | |
---|---|---|
Command Line Basics | • Basic shell • Command line syntax • Variables • Quoting |
• Bash • echo • history • PATH environment variable • export • type |
Using the Command Line to Get Help | • Man pages • Info pages |
• man • info • /usr/share/doc/ • locate |
Using Directories and Listing Files | • Files, directories • Hidden files and directories • Home directories • Absolute and relative paths |
• Common options for ls • Recursive listings • cd • . and .. • home and ~ |
Creating, Moving and Deleting Files | • Files and directories • Case sensitivity • Simple globbing |
• mv, cp, rm, touch • mkdir, rmdir |
The Power of the Command Line
Key Knowledge Areas: | The following is a partial list of the used files, terms and utilities: | |
---|---|---|
Archiving Files on the Command Line | • Files, directories • Archives, compression |
• tar • Common tar options • gzip, bzip2, xz • zip, unzip |
Searching and Extracting Data from Files | • Command line pipes • I/O redirection • Basic Regular Expressions using ., [ ], *, and ? |
• grep • less • cat, head, tail • sort • cut • wc |
Turning Commands into a Script | • Basic shell scripting • Awareness of common text editors (vi and nano) |
• #! (shebang) • /bin/bash • Variables • Arguments • for loops • echo • Exit status |
The Linux Operating System
Key Knowledge Areas: | The following is a partial list of the used files, terms and utilities: | |
---|---|---|
Choosing an Operating System | • Differences between Windows, OS X and Linux • Distribution life cycle management |
• GUI versus command line, desktop configuration • Maintenance cycles, beta and stable |
Understanding Computer Hardware | • Hardware | • Motherboards, processors, power supplies, optical drives, peripherals • Hard drives, solid state disks and partitions, /dev/sd* • Drivers |
Where Data is Stored Description: Where various types of information are stored on a Linux system. |
• Programs and configuration • Processes • Memory addresses • System messaging • Logging |
• ps, top, free • syslog, dmesg • /etc/, /var/log/ • /boot/, /proc/, /dev/, /sys/ |
Your Computer on the Network Description: Querying vital networking configuration and determining the basic requirements for a computer on a Local Area Network (LAN). |
• Internet, network, routers • Querying DNS client configuration • Querying network configuration |
• route, ip route show • ifconfig, ip addr show • netstat, ss • /etc/resolv.conf, /etc/hosts • IPv4, IPv6 • ping • host |
Security and File Permissions
Key Knowledge Areas: | The following is a partial list of the used files, terms and utilities: | |
---|---|---|
Basic Security and Identifying User Types Description: Various types of users on a Linux system. |
• Root and standard users • System users |
• /etc/passwd, /etc/shadow, /etc/group • id, last, who, w • sudo, su |
Creating Users and Groups Description: Creating users and groups on a Linux system. |
• User and group commands • User IDs |
• /etc/passwd, /etc/shadow, /etc/group, /etc/skel/ • useradd, groupadd • passwd |
Managing File Permissions and Ownership Description: Understanding and manipulating file permissions and ownership settings. |
• File and directory permissions and ownership | • ls -l, ls -a • chmod, chown |
Special Directories and Files Description: Special directories and files on a Linux system including special permissions. |
• Using temporary files and directories • Symbolic links |
• /tmp/, /var/tmp/ and Sticky Bit • ls -d • ln -s |
System Architecture
Key Knowledge Areas: | The following is a partial list of the used files, terms and utilities: | |
---|---|---|
Determine and configure hardware settings | • Enable and disable integrated peripherals. • Differentiate between the various types of mass storage devices. • Determine hardware resources for devices. • Tools and utilities to list various hardware information (e.g. lsusb, lspci, etc.). • Tools and utilities to manipulate USB devices. • Conceptual understanding of sysfs, udev and dbus. |
• /sys/ • /proc/ • /dev/ • modprobe • lsmod • lspci • lsusb |
Boot the system | • Provide common commands to the boot loader and options to the kernel at boot time. • Demonstrate knowledge of the boot sequence from BIOS/UEFI to boot completion. • Understanding of SysVinit and systemd. • Awareness of Upstart. • Check boot events in the log files. |
• dmesg • journalctl • BIOS • UEFI • bootloader • kernel • initramfs • init • SysVinit • systemd |
Change runlevels / boot targets and shutdown or reboot system | • Set the default runlevel or boot target. • Change between runlevels / boot targets including single user mode. • Shutdown and reboot from the command line. • Alert users before switching runlevels / boot targets or other major system events. • Properly terminate processes. • Awareness of acpid. |
• /etc/inittab • shutdown • init • /etc/init.d/ • telinit • systemd • systemctl • /etc/systemd/ • /usr/lib/systemd/ • wall |
Linux Installation and Package Management
Key Knowledge Areas: | The following is a partial list of the used files, terms and utilities: | |
---|---|---|
Design hard disk layout | • Allocate filesystems and swap space to separate partitions or disks. • Tailor the design to the intended use of the system. • Ensure the /boot partition conforms to the hardware architecture requirements for booting. • Knowledge of basic features of LVM. |
• / (root) filesystem • /var filesystem • /home filesystem • /boot filesystem • EFI System Partition (ESP) • swap space • mount points • partitions |
Install a boot manager | • Providing alternative boot locations and backup boot options. • Install and configure a boot loader such as GRUB Legacy. • Perform basic configuration changes for GRUB 2. • Interact with the boot loader. |
• menu.lst, grub.cfg and grub.conf • grub-install • grub-mkconfig • MBR |
Manage shared libraries | • Identify shared libraries. • Identify the typical locations of system libraries. • Load shared libraries. |
• ldd • ldconfig • /etc/ld.so.conf • LD_LIBRARY_PATH |
Use Debian package management | • Install, upgrade and uninstall Debian binary packages. • Find packages containing specific files or libraries which may or may not be installed. • Obtain package information like version, content, dependencies, package integrity and installation status (whether or not the package is installed). • Awareness of apt. |
• /etc/apt/sources.list • dpkg • dpkg-reconfigure • apt-get • apt-cache |
Linux as a virtualization guest | • Understand the general concept of virtual machines and containers. • Understand common elements virtual machines in an IaaS cloud, such as computing instances, block storage and networking. • Understand unique properties of a Linux system which have to changed when a system is cloned or used as a template. • Understand how system images are used to deploy virtual machines, cloud instances and containers. • Understand Linux extensions which integrate Linux with a virtualization product. • Awareness of cloud-init. |
• Virtual machine • Linux container • Application container • Guest drivers • SSH host keys • D-Bus machine id |
GNU and Unix Commands
Key Knowledge Areas: | The following is a partial list of the used files, terms and utilities: | |
---|---|---|
Work on the command line | • Use single shell commands and one line command sequences to perform basic tasks on the command line. • Use and modify the shell environment including defining, referencing and exporting environment variables. • Use and edit command history. • Invoke commands inside and outside the defined path. |
• bash • echo • env • export • pwd • set • unset • type • which • man • uname • history • .bash_history • Quoting |
Process text streams using filters | • Send text files and output streams through text utility filters to modify the output using standard UNIX commands found in the GNU textutils package. | • bzcat • cat • cut • head • less • md5sum • nl • od • paste • sed • sha256sum • sha512sum • sort • split • tail • tr • uniq • wc • xzcat • zcat |
Perform basic file management | • Copy, move and remove files and directories individually. • Copy multiple files and directories recursively. • Remove files and directories recursively. • Use simple and advanced wildcard specifications in commands. • Using find to locate and act on files based on type, size, or time. • Usage of tar, cpio and dd. |
• cp • find • mkdir • mv • ls • rm • rmdir • touch • tar • cpio • dd • file • gzip • gunzip • bzip2 • bunzip2 • xz • unxz • file globbing |
Use streams, pipes and redirects | • Redirecting standard input, standard output and standard error. • Pipe the output of one command to the input of another command. • Use the output of one command as arguments to another command. • Send output to both stdout and a file. |
• tee • xargs |
Create, monitor and kill processes | • Run jobs in the foreground and background. • Signal a program to continue running after logout. • Monitor active processes. • Select and sort processes for display. • Send signals to processes. |
• & • bg • fg • jobs • kill • nohup • ps • top • free • uptime • pgrep • pkill • killall • watch • screen • tmux |
Modify process execution priorities | • Know the default priority of a job that is created. • Run a program with higher or lower priority than the default. • Change the priority of a running process. |
• nice • ps • renice • top |
Search text files using regular expressions | • • Create simple regular expressions containing several notational elements. • Understand the differences between basic and extended regular expressions. • Understand the concepts of special characters, character classes, quantifiers and anchors. • Use regular expression tools to perform searches through a filesystem or file content. • Use regular expressions to delete, change and substitute text. |
• grep • egrep • fgrep • sed • regex(7) |
Basic file editing | • Navigate a document using vi. • Understand and use vi modes. • Insert, edit, delete, copy and find text in vi. • Awareness of Emacs, nano and vim. • Configure the standard editor. |
• vi • /, ? • h,j,k,l • i, o, a • d, p, y, dd, yy • ZZ, :w!, :q! • EDITOR |
Devices, Linux Filesystems, Filesystem Hierarchy Standard
Key Knowledge Areas: | The following is a partial list of the used files, terms and utilities: | |
---|---|---|
Create partitions and filesystems | • Manage MBR and GPT partition tables • Use various mkfs commands to create various filesystems such as: o ext2/ext3/ext4 o XFS o VFAT o exFAT • Basic feature knowledge of Btrfs, including multi-device filesystems, compression and subvolumes. |
• fdisk • gdisk • parted • mkfs • mkswap |
Maintain the integrity of filesystems | • Verify the integrity of filesystems. • Monitor free space and inodes. • Repair simple filesystem problems. |
• du • df • fsck • e2fsck • mke2fs • tune2fs • xfs_repair • xfs_fsr • xfs_db |
Control mounting and unmounting of filesystems | • Manually mount and unmount filesystems. • Configure filesystem mounting on bootup. • Configure user mountable removable filesystems. • Use of labels and UUIDs for identifying and mounting file systems. • Awareness of systemd mount units. |
• /etc/fstab • /media/ • mount • umount • blkid • lsblk |
Manage file permissions and ownership | • Manage access permissions on regular and special files as well as directories. • Use access modes such as suid, sgid and the sticky bit to maintain security. • Know how to change the file creation mask. • Use the group field to grant file access to group members. |
• chmod • umask • chown • chgrp |
Create and change hard and symbolic links | • Create links. • Identify hard and/or soft links. • Copying versus linking files. • Use links to support system administration tasks. |
• ln • ls |
Find system files and place files in the correct location | • Understand the correct locations of files under the FHS. • Find files and commands on a Linux system. • Know the location and purpose of important file and directories as defined in the FHS. |
• find • locate • updatedb • whereis • which • type • /etc/updatedb.conf |
Administrative Tasks
Key Knowledge Areas: | The following is a partial list of the used files, terms and utilities: | |
---|---|---|
Manage user and group accounts and related system files | • Add, modify and remove users and groups. • Manage user/group info in password/group databases. • Create and manage special purpose and limited accounts. |
• /etc/passwd • /etc/shadow • /etc/group • /etc/skel/ • chage • getent • groupadd • groupdel • groupmod • passwd • useradd • userdel • usermod |
Automate system administration tasks by scheduling jobs | • Manage cron and at jobs. • Configure user access to cron and at services. • Understand systemd timer units. |
• /etc/cron.{d,daily,hourly,monthly,weekly}/ • /etc/at.deny • /etc/at.allow • /etc/crontab • /etc/cron.allow • /etc/cron.deny • /var/spool/cron/ • crontab • at • atq • atrm • systemctl • systemd-run |
Localisation and internationalisation | • Configure locale settings and environment variables. • Configure timezone settings and environment variables. |
• /etc/timezone • /etc/localtime • /usr/share/zoneinfo/ • LC_* • LC_ALL • LANG • TZ • /usr/bin/locale • tzselect • timedatectl • date • iconv • UTF-8 • ISO-8859 • ASCII • Unicode |
Essential System Services
Key Knowledge Areas: | The following is a partial list of the used files, terms and utilities: | |
---|---|---|
Maintain system time | • Set the system date and time. • Set the hardware clock to the correct time in UTC. • Configure the correct timezone. • Basic NTP configuration using ntpd and chrony. • Knowledge of using the pool.ntp.org service. • Awareness of the ntpq command. |
• /usr/share/zoneinfo/ • /etc/timezone • /etc/localtime • /etc/ntp.conf • /etc/chrony.conf • date • hwclock • timedatectl • ntpd • ntpdate • chronyc • pool.ntp.org |
System logging | • Basic configuration of rsyslog. • Understanding of standard facilities, priorities and actions. • Query the systemd journal. • Filter systemd journal data by criteria such as date, service or priority. • Configure persistent systemd journal storage and journal size. • Delete old systemd journal data. • Retrieve systemd journal data from a rescue system or file system copy. • Understand interaction of rsyslog with systemd-journald. • Configuration of logrotate. • Awareness of syslog and syslog-ng. |
• /etc/rsyslog.conf • /var/log/ • logger • logrotate • /etc/logrotate.conf • /etc/logrotate.d/ • journalctl • systemd-cat • /etc/systemd/journald.conf • /var/log/journal/ |
Mail Transfer Agent (MTA) basics | • Create e-mail aliases. Configure e-mail forwarding. Knowledge of commonly available MTA programs (postfix, sendmail, exim) (no configuration). |
• ~/.forward • sendmail emulation layer commands • newaliases • mailq • postfix • sendmail • exim |
Manage printers and printing | • Basic CUPS configuration (for local and remote printers). • Manage user print queues. • Troubleshoot general printing problems. • Add and remove jobs from configured printer queues. |
• CUPS configuration files, tools and utilities • /etc/cups/ • lpd legacy interface (lpr, lprm, lpq) |
Networking Fundamentals
Key Knowledge Areas: | The following is a partial list of the used files, terms and utilities: | |
---|---|---|
Fundamentals of internet protocols | • Demonstrate an understanding of network masks and CIDR notation. • Knowledge of the differences between private and public "dotted quad" IP addresses. • Knowledge about common TCP and UDP ports and services (20, 21, 22, 23, 25, 53, 80, 110, 123, 139, 143, 161, 162, 389, 443, 465, 514, 636, 993, 995). • Knowledge about the differences and major features of UDP, TCP and ICMP. • Knowledge of the major differences between IPv4 and IPv6. • Knowledge of the basic features of IPv6. |
• /etc/services • IPv4, IPv6 • Subnetting • TCP, UDP, ICMP |
Persistent network configuration | • • Understand basic TCP/IP host configuration. • Configure ethernet and wi-fi network using NetworkManager. • Awareness of systemd-networkd. |
• /etc/hostname • /etc/hosts • /etc/nsswitch.conf • /etc/resolv.conf • nmcli • hostnamectl |
Basic network troubleshooting | • Manually configure network interfaces, including viewing and changing the configuration of network interfaces using iproute2. • Manually configure routing, including viewing and changing routing tables and setting the default route using iproute2. • Debug problems associated with the network configuration. • Awareness of legacy net-tools commands. |
• ip • hostname • ss • ping • ping6 • traceroute • traceroute6 • tracepath • tracepath6 • netcat • ifconfig • netstat • route |
Configure client side DNS | • Query remote DNS servers. • Configure local name resolution and use remote DNS servers. • Modify the order in which name resolution is done. • Debug errors related to name resolution. • Awareness of systemd-resolved. |
• /etc/hosts • /etc/resolv.conf • /etc/nsswitch.conf • host • dig • getent |
Security
Key Knowledge Areas: | The following is a partial list of the used files, terms and utilities: | |
---|---|---|
Perform security administration tasks | • Audit a system to find files with the suid/sgid bit set. • Set or change user passwords and password aging information. • Being able to use nmap and netstat to discover open ports on a system. • Set up limits on user logins, processes and memory usage. • Determine which users have logged in to the system or are currently logged in. • Basic sudo configuration and usage. |
• find • passwd • fuser • lsof • nmap • chage • netstat • sudo • /etc/sudoers • su • usermod • ulimit • who, w, last |
Setup host security | • Awareness of shadow passwords and how they work. • Turn off network services not in use. • Understand the role of TCP wrappers. |
• /etc/nologin • /etc/passwd • /etc/shadow • /etc/xinetd.d/ • /etc/xinetd.conf • systemd.socket • /etc/inittab • /etc/init.d/ • /etc/hosts.allow • /etc/hosts.deny |
Securing data with encryption | • Perform basic OpenSSH 2 client configuration and usage. • Understand the role of OpenSSH 2 server host keys. • Perform basic GnuPG configuration, usage and revocation. • Use GPG to encrypt, decrypt, sign and verify files. • Understand SSH port tunnels (including X11 tunnels). |
• ssh • ssh-keygen • ssh-agent • ssh-add • ~/.ssh/id_rsa and id_rsa.pub • ~/.ssh/id_dsa and id_dsa.pub • ~/.ssh/id_ecdsa and id_ecdsa.pub • ~/.ssh/id_ed25519 and id_ed25519.pub • /etc/ssh/ssh_host_rsa_key and ssh_host_rsa_key.pub • /etc/ssh/ssh_host_dsa_key and ssh_host_dsa_key.pub • /etc/ssh/ssh_host_ecdsa_key and ssh_host_ecdsa_key.pub • /etc/ssh/ssh_host_ed25519_key and ssh_host_ed25519_key.pub • ~/.ssh/authorized_keys • ssh_known_hosts • gpg • gpg-agent • ~/.gnupg/ |