====== LPIC-1 / Linux+ Cheat Sheet ====== ===== LX0-101 ===== ==== 101 System Architecture 14% ==== === 101.1 Determine and Configure hardware settings (LCN-3 CTL-3) === * Enable and disable integrated peripherals * Configure systems with or without external peripherals such as keyboards * Differentiate between the various types of mass storage devices * Set the correct hardware ID for different devices, especially the boot device * Know the differences between coldplug and hotplug 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, hald, dbus * Terms: /sys, /proc, /dev, modprobe, lsmod, lspci, lsusb == Notes == * BIOS - Basic I/O System - systim init, memory testing, low-level system-config, OS boot order (CD, floppy, HD, PXE), internal HW clock * /proc fs is kernel's status repository: interrupts, dma, ioports * Universal Serial Bus (USB) * //lsusb [-t] [-vv] // - t-tree view, vv-very verbose * Open Host Controller Interface (OHCI) - USB 1.1 * Universal Host Controller Interface (UHCI) - USB 1.1 - 12 MBps - low+full speed * Enhanced Host Controller Interface (EHCI) - USB 2.0 - 480 MBps - high speed * Extensible Host Controller Interface (XHCI) - USB 3.0 - 4 GBps - super speed * Wireless Host Controller Interface (WHCI) - Wireless USB 1.0 - 480 MBps * Effective speed is lowest speed of device, cable and hub * Classes of USB devices : * Human Interface Device (HID) - Input devices: mice, keyboards, etc.) * Communications device - Modems * Mass storage device - Disk devices, flash readers, etc. * Audio - Sound devices * IrDA - Infrared devices * Printer - Printers and USB-to-parallel cables * Linux kernel supported USB in v2.3.x, backported to 2.2.18 * Linux drivers may be host controller drivers (e.g. usb-ohci.o), class drivers (e.g. hid.o, usb-storage.o, printer.o, audio.o) or device-specific drivers * usbcore.o -> host controller driver -> class/device driver * Modularized USB drivers are loaded by the generic /sbin/hotplug kernel support * //lsdev// - shows hardware including IRQ info, I/O ports and DMA channels * //lspci [-t] [-vv]// - info about system’s PCI buses and installed PCI devices * A module is dynamically linked into the running kernel when it is loaded * //insmod/rmmod// - insert/remove mocule, no dependency checking * //modprobe [-r] [-a] [-t type]// - list, insert or remove modules. Does dependency checking. * //lsmod// - list modules //modinfo module-object-file.o// - info about a module file * sysfs is a RAM-based filesystem derived from ramfs. It provides a means to export kernel data structures to user space. // mount -t sysfs sysfs /sys// * The udev process uses sysfs info to create dynamic device files as kernel modules are loaded. /etc/udev.d holds rules to be applied when adding or removing a device. * D-Bus is an IPC system that uses sysfs to implement a message bus daemon used for broadcasting system events e.g.“new device added” or “printer queue changed”. * hal was a hw abstraction layer (hw access API) on top of udev using D-Bus. It has been deprecated and rolled into udev and the kernel. === 101.2 Boot the System (LCN-4 CTL-5) === * Provide common commands to the boot loader and options to the kernel at boot time * Demonstrate knowledge of the boot sequence from BIOS to boot completion * Check boot events in the log file * Terms: /var/log/messages, dmesg, BIOS, bootloader, kernel, init == Notes == * Boot Loader (LILO or GRUB) launches the linux kernel, passing kernel parameters if needed (/etc/lilo.conf | /boot/grub/menu.lst | /boot/grub/grub.conf) * Module options (as well as aliases and post-install and pre-remove actions) are stored in /etc/modules.conf . * //dmesg// displays kernel messages logged at last system boot. * // /var/log/messages // contains all syslog messages. === 101.3 Change runlevels and shutdown or reboot system (LCN-4 CTL-5) === * Set the default run level * Change between run levels including single user mode * Shutdown and reboot from the command line * Alert users before switching run levels or other major system events * Properly terminate processes * Knowledge of basic features of systemd and Upstart * Terms: /etc/inittab, shutdown, init, /etc/init.d, telinit == Notes == * When linux boots, first process is the //init// process which selects and switches to default runlevel. * Runlevels - 0=shutdown, 1/s/S=single-user_maintenance, 2=multi-user, 3=multi-user_no-X, 5=multi-user_with-X 6=reboot * On Debian, 2 is default and 3,5 are not used. On Redhat, 3 is the default. * /etc/rc script to change runlevels on redhat (also init/telinit script) * /etc/rc.sysinit (Redhat) or /etc/init.d/rcS (Debian) - system init script launched by init before system daemons * /etc/rc.local- local startup actions called at end of startup * /etc/init.d contains startup/shutdown scripts for all system services * /etc/rc0.d - /etc/rc6.d contain softlinks KNNservice or SNNservice specifying whether to start or stop services and in what order for that runlevel (done by init process). Kills done before starts. * /etc/inittab contains "id:N:initdefault:" for default runlevel N * //runlevel// shows current and previous runlevel * //shutdown [options] time [warning message]// - -f=fastboot -h=halt -r=reboot -F=force-startup-checks -k=just-send-warning . Time is "now" or "+N" in N minutes or absolute time e.g. 23:58. ==== 102 Installation and Package Management 18% ==== === 102.1 Design hard disk layout (LCN-5 CTL-3) === * 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 * Terms: / (root) filesystem, /var filesystem, /home filesystem, swap space, mount points, partitions ==Notes== * choosing a disk layout for linux depends on amount of disk space, purpose of the system, size of the system and backup strategy. Some general guidelines are * If diskspace is limited, just /boot, / and /swap * /boot is a separate 50MB partition because older kernels/BIOS require kernels under a 1024 cylinder limit. * For larger systems keep / smaller/simpler to reduce risk of corruption. * Can use separate partitions for /var (to isolate system logs), /tmp (to isolate tempfiles), /home (for backup and RAIDing of user's data) * Using a separate partition for /usr allows it to be shared via read-only NFS which allows for saving space and easier maintenance of apps/updates. * Superblock on filesystem contains critical metadata so multiple redundant copies are kept. * Filesystems must be mounted (listed in filesystem table) before being accessible. /etc/fstab is a list of filesystems to mount on boot up. * Master Boot Record on first 512 bytes of first sector of disk contains info on partitions and bootup. Can be backed up and restored with dd if=/dev/hda of=~/mbr.txt count=1 bs=512 dd if=~/mbr.txt of=/dev/hda count=1 bs=512 * To backup/restore just the partition layout, use sfdisk sfdisk -d /dev/hda > partition_backup.txt sfdisk /dev/hda < partition_backup.txt * Linux may also be booted from Live USB which allows for persistent modifications. If the BIOS does nto support this, a bootable CD can be used first. * Swap space allows main memory to be temporarily copied to disk. As a starting point set swap to twice the memory size (at least the same size). === 102.2 Install a boot manager (LCN-5 CTL-5) === * 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 * Terms: /boot/grub/menu.lst, grub.cfg and other variations, grub-install, MBR, superblock ==Notes== * BIOS looks for and runs boot loader from first specified boot device. * Boot loader find and loads specified kernel (with specified kernel options) which loads required modules and starts system processes. * LILO is a 2-stage program * First stage is in 512-byte MBR or in the boot sector of a partition (if it is a secondary boot loader). * Second stage is in /boot/boot.b . * Map file locating kernel is in /boot/map * //lilo// command reads /etc/lilo.conf which contains kernel image locations, kernel options, the default boot disk etc. It encodes this information along with physical disk information and writes it into the boot files (MBR/boot-sector, boot.b and map). * GRUB is a multi-stage boot loader, more flexible than LILO. * Changes take effect immediately. * (hd0,1) -> 2nd partition on the 1st hard disk. Refers only to the order of the disks as seen by the BIOS so order may change if BIOS boot order is changed. * //grub-install// writes to MBR/boot sector. Uses/boot/grub/device.map to map BIOS drives to Linux devices e.g. "(hd0) /dev/sda". * Grub command-line expects a specific order of commands to boot kernel grub> root (hd0,0) grub> kernel /vmlinuz-2.4.18-14 ro root=/dev/hda2 grub> initrd /initrd-2.4.18-14.img [optional] grub> boot === 102.3 Manage shared libraries (LCN-5 CTL-2) === * Identify shared libraries * Identify the typical locations of system libraries * Load shared libraries * Terms: ldd, ldconfig, /etc/ld.so.conf, LD_LIBRARY_PATH ==Notes== * Most programs on Linux use common system libraries. * These can be statically linked into the program at compile-time - more disk, more memory, slower. * Or can be dynamically loaded at runtime (shared libraries) - shared memory, smaller disksize, faster. * //ldd// can be used to display required shared libraries for an executable * Dynamically linked executables are examined at runtime by the shared object dynamic linker, //ld.so// * //ldconfig// reloads shared library paths from /etc/ld.so.conf to update binary cache /etc/ld.so.cache * $LD_LIBRARY_PATH env variable can also be used === 102.4 Use Debian package management (LCN-5 CTL-2) === * 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) * Terms: /etc/apt/sources.list, dpkg, dpkg-reconfigure, apt-get, apt-cache, aptitude ==Notes== * .deb package names - pkgname_version-revision_arch.deb . version is typically major.minor.patchlevel e.g ncurses4_4.2.3-9_i386.deb * //dpkg// operates directly on //.deb// packages * uses /var/lib/dpkg/[available|status] files to store metadata * -i=install -r=remove --purge=purge * -E=do not overwrite with same version or older * -G=do not overwrite with older package version * -l=list matching installed packages -L=list files from package * -s=status of package -S=search for file in installed packages * //apt-get// uses package names and sources and resolves dependencies * -d=download only -s=simulate -y=assume yes * install, remove, update (sources), upgrade (all packages), dist-upgrade (to new OS version) * uses /etc/apt/sources.list. Lines look like deb http://http.us.debian.org/debian stable main contrib non-free * //dselect// is a menu-based interface to //dpkg// * //alien// converts other package types to .deb packages (or to rpm with -r) e.g. Slackware/generic tarball, RPM . //alien -i x.rpm// === 102.5 Use RPM and YUM package management (LCN-5 CTL-2) === * Install, re-install, upgrade and remove packages using RPM and YUM * Obtain information on RPM packages such as version, status, dependencies, integrity and signatures * Determine what files a package provides, as well as find which package a specific file comes from * Terms: rpm, rpm2cpio, /etc/yum.conf, /etc/yum.repos.d/, yum, yumdownloader ==== 103 GNU / Unix Commands 43% ==== === 103.1 Work on the command line (LCN-6 CTL-1) === * 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 * Terms: ., bash, echo, env, exec, export, pwd, set, unset, man, uname, history === 103.2 Process text streams using filters (LCN-6 CTL-1) === * Send text files and output streams through text utility filters to modify the output * Using standard UNIX commands found in the GNU textutils package * Terms: cat, cut, expand, fmt, head, od, join, nl, paste, pr, sed, sort, split, tail, tr, unexpand, uniq, wc === 103.3 Perform basic file management (LCN-6 CTL-4) === * 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 * Terms: cp, find, mkdir, mv, ls, rm, rmdir, touch, tar, cpio, dd, file, gzip, gunzip, bzip2, file globbing === 103.4 Use streams, pipes and redirects (LCN-6 CTL-1) === * 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 * Terms: tee, xargs === 103.5 Create, monitor and kill processes (LCN-6 CTL-2) === * 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 * Terms: &, bg, fg, jobs, kill, nohup, ps, top, free, uptime, killall === 103.6 Modify process execution priorities (LCN-6 CTL-2) === * 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 * Terms: nice, ps, renice, top === 103.7 Search text files using regular expressions (LCN-6 CTL-1) === * Create simple regular expressions containing several notational elements * Use regular expression tools to perform searches through a filesystem or file content * The following is a partial list of the used files, terms and utilities: grep, egrep, fgrep, sed, regex(7) === 103.8 Perform basic file editing operations using vi (LCN-6 CTL-5) === * Navigate a document using vi * Use basic vi modes * Insert, edit, delete, copy and find text * Terms: vi, /, ?, h, j, k, l, i, o, a, c, d, p, y, dd, yy, ZZ, :w!, :q!, :e! ==== 104 Devices, Filesystems, Filesystem Hierarchy 25% ==== === 104.1 Create partitions and filesystems (LCN-7 CTL-3) === * Use various mkfs commands to set up partitions and create various filesystems such as: ext2, ext3, xfs, reiserfs v3, vfat * Terms: fdisk, mkfs, mkswap === 104.2 Maintain the integrity of filesystems (LCN-7 CTL-3) === * Verify the integrity of filesystems * Monitor free space and inodes * Repair simple filesystem problems * Terms: du, df, fsck, e2fsck, mke2fs, debugfs, dumpe2fs, tune2fs, xfs tools (such as xfs_metadump and xfs_info) === 104.3 Control mounting and unmounting of filesystems (LCN-7 CTL-3) === * Manually mount and unmount filesystems * Configure filesystem mounting on bootup * Configure user mountable removeable filesystems * Terms: /etc/fstab, /media, mount, umount === 104.4 Manage disk quotas (LCN-7 CTL-4) === * Set up a disk quota for a filesystem * Edit, check and generate user quota reports * Terms: quota, edquota, repquota, quotation === 104.5 Manage file permissions and ownership (LCN-7 CTL-4) === * 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 * Terms: chmod, umask, chown, chgrp === 104.6 Create and change hard and symbolic links (LCN-7 CTL-4) === * Create links * Identify hard and/or soft links * Copying versus linking files * Use links to support system administration tasks * Terms: ln === 104.7 Find system files and place files in the correct location (LCN-7 CTL-4) === * Understand the correct locations of files under the FHS * Find files and commands on a Linux system * Know the location and propose of important file and directories as defined in the FHS * Terms: find, locate, updatedb, whereis, which, type, /etc/updatedb.conf ===== LX0-102 ===== ==== 105 Shells, Scripting and Data Management 17% ==== === 105.1 Customize and use the shell environment (LCN-13 CTL-9) === * Set environment variables (e.g., PATH) at login or when spawning a new shell * Write BASH functions for frequently used sequences of commands * Maintain skeleton directories for new user accounts * Set command search path with the proper directory * Terms: /etc/profile, env, export, set, unset, ~/.bash_profile, ~/.bash_login, ~/.profile, ~/.bashrc, ~/.bash_logout, function, alias, lists === 105.2 Customize or write simple scripts (LCN-13 CTL-9) === * Use standard sh syntax (loops, tests) * Use command substitution * Test return values for success or failure or other information provided by a command * Perform conditional mailing to the superuser * Correctly select the script interpreter through the shebang (#!) line * Manage the location, ownership, execution and suid-rights of scripts * Terms: for, while, test, if, read, seq === 105.3 SQL data management (LCN-13 CTL-9) === * Use of basic SQL commands * Perform basic data manipulation * Terms: insert, update, select, delete, from, where, group by, order by, join ==== 106 User Interfaces and Desktops 8% ==== === 106.1 Install and configure X11 (LCN-14 CTL-6) === * Verify that the video card and monitor are supported by an X server * Awareness of the X font server * Basic understanding and knowledge of the X Window configuration file * Terms: /etc/X11/xorg.conf, xhost, DISPLAY, xwininfo, xdpyinfo, X === 106.2 Setup a display manager (LCN-14 CTL-6) === * Turn the display manager on or off * Change the display manager greeting * Change default color depth for the display manager * Configure display managers for use by X-stations * Terms: /etc/inittab; plus xdm, kdm, and gdm configuration files === 106.3 Accessibility (LCN-14 CTL-6) === * Keyboard Accessibility Settings (AccessX) * Visual Settings and Themes * Assistive Technology (ATs) * Terms: Sticky/Repeat Keys, Slow/Bounce/Toggle Keys, Mouse Keys, High Contrast/Large Print Desktop Themes, Screen Reader, Braille Display, Screen Magnifier, On-Screen Keyboard, Gestures (used at login, for example gdm), Orca, GOK, emacspeak ==== 107 Administrative Tasks 20% ==== === 107.1 Manage user and group accounts and related system files (LCN-15 CTL-7) === * Add, modify and remove users and groups * Manage user/group info in password/group databases * Create and manage special purpose and limited accounts * Terms: /etc/passwd, /etc/shadow, /etc/group, /etc/skel, chage, groupadd, groupdel, groupmod, passwd, useradd, userdel, usermod === 107.2 Automate system administration tasks by scheduling jobs (LCN-15 CTL-9) === * Manage cron and at jobs * Configure user access to cron and at services * Terms: /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 === 107.3 Localization and internationalization (LCN-15 CTL-6) === * Locale settings * Timezone settings * Terms: /etc/timezone, /etc/localtime, /usr/share/zoneinfo, environment variables (LC_*, LC_ALL, LANG, TZ), /usr/bin/locale, tzselect, tzconfig, date, iconv, UTF-8, ISO-8859, ASCII, Unicode ==== 108 Essential System Services 17% ==== === 108.1 Maintain system time (LCN-16 CTL-7) === * Set the system date and time * Set the hardware clock to the correct time in UTC * Configure the correct timezone * Basic NTP configuration * Knowledge of using the pool.ntp.org service * Terms: /usr/share/zoneinfo, /etc/timezone, /etc/localtime, /etc/ntp.conf, date, hwclock, ntpd, ntpdate, pool.ntp.org === 108.2 System logging (LCN-16 CTL-7) === * Syslog configuration files * syslog standard facilities, priorities and actions * Terms: syslog.conf, syslogd, klogd, logger === 108.3 Mail Transfer Agent (MTA) basics (LCN-17 CTL-9) === * Create e-mail aliases * Configure e-mail forwarding * Knowledge of commonly available MTA programs (postfix, sendmail, qmail, exim) (no configuration) * Terms: ~/.forward, sendmail emulation layer commands, newaliases, mail, mailq, postfix, sendmail, exim, qmail === 108.4 Manage printers and printing (LCN-18 CTL-6) === * Basic CUPS configuration (for local and remote printers) * Manage user print queues * Troubleshoot general printing problems * Add and remove jobs from configured printer queues * Terms: CUPS configuration files, tools and utilities; /etc/cups; lpd legacy interface (lpr, lprm, lpq) ==== 109 Networking Fundamentals 23% ==== === 109.1 Fundamentals of internet protocols (LCN-19 CTL-8) === * Demonstrate an understanding network masks * Knowledge of the differences between private and public “dotted quad” IP-Addresses * Setting a default route * Knowledge about common TCP and UDP ports (20, 21, 22, 23, 25, 53, 80, 110, 119, 139, 143, 161, 443, 465, 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 * Terms: /etc/services, ftp, telnet, host, ping, dig, traceroute, tracepath === 109.2 Basic network configuration (LCN-20 CTL-8) === * Manually and automatically configure network interfaces * Basic TCP/IP host configuration * Terms: /etc/hostname, /etc/hosts, /etc/resolv.conf, /etc/nsswitch.conf, ifconfig, ifup, ifdown, route, ping === 109.3 Basic network troubleshooting (LCN-21 CTL-8) === * Manually and automatically configure network interfaces and routing tables * Including adding, starting, stopping, restarting, deleting or reconfiguring network interfaces * Change, view or configure the routing table and correct an improperly set default route manually * Debug problems associated with the network configuration * Terms: ifconfig, ifup, ifdown, route, host, hostname, dig, netstat, ping, traceroute === 109.4 Configure client side DNS (LCN-20 CTL-8) === * Demonstrate the use of DNS on the local system * Modify the order in which name resolution is done * Terms: /etc/hosts, /etc/resolv.conf, /etc/nsswitch.conf ==== 110 Security 15% ==== === 110.1 Perform security administration tasks (LCN-22 CTL-10) === * 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 * Basic sudo configuration and usage * Terms: find, passwd, lsof, nmap, chage, netstat, sudo, /etc/sudoers, su, usermod, ulimit === 110.2 Setup host security (LCN-23 CTL-10) === * Awareness of shadow passwords and how they work * Turn off network services not in use * Understand the role of TCP wrappers * Terms: /etc/nologin, /etc/passwd, /etc/shadow, /etc/xinetd.d/*, /etc/xinetd.conf, /etc/inetd.d/*, /etc/inetd.conf, /etc/inittab, /etc/init.d/*, /etc/hosts.allow, /etc/hosts.deny === 110.3 Securing data with encryption (LCN-24 CTL-10) === * Perform basic OpenSSH 2 client configuration and usage * Understand the role of OpenSSH 2 server host keys * Perform basic GnuPG configuration and usage * Understand SSH port tunnels (including X11 tunnels) * Terms: ssh, ssh-keygen, ssh-agent, ssh-add, ~/.ssh/id_rsa and id_rsa.pub, ~/.ssh/id_dsa and id_dsa.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, ~/.ssh/authorized_keys, /etc/ssh_known_hosts, gpg, ~/.gnupg/*