# Linux course syllabus ---- ## Beginner * Introduction: * Unix philosophy: Do One Thing and Do It Well (DOTADIW) * How deep is deep enough * Style is made of certain conscious choices * Issues: Speed(Google), Concentration(Questions), Boundaries(Sysadmin, DevOps, Programmer) * Note-taking: Zettelkasten, Second Brain, Obsidian, TiddlyWiki, DokuWiki * Update syllabus on the go * Linux is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds * https://distrowatch.com : Debian/Ubuntu/RedHat/CentOS/Fedora/ArchLinux/Manjaroi/Mint/Kali/Slackware * http://lxer.com : Linux News * Installation * Debian * amd64 / i386 / netinstall * A Brief Tour * Login / id -u -g / w / who / whoami * logout / exit / <ctrl+d> * clear / <ctrl+l> * reboot / poweroff / halt * passwd * Virtual Terminals: Alt-F1, Alt-F2, ... * Shift-PgUp, Shift-PgDn * ssh client / putty * Files and Directories * ls -lha * pwd * Home Directory * file * Reuse previous commands * Using TAB for completion * cd / cd .. / cd - / cd ~ * mkdir -p / rmdir * tree * Relative / Absolute Addresses * rm -rf * cp -rv * mv * wild cards * alias / unalias * cat / more / less * head / tail -f * touch * ln -sfn * man, info * whereis, apropos, man -k * whatis, makewhatis * which, type, enable * /usr/share/doc * find * slocate / updatedb * grep * ps / kill / killall * chown * chmod * mount / umount / eject , (cdrom, usb) , fstab * tar * zcat / zless / zgrep * unzip / unrar * xargs * diff * date, cal / unix timestamp * hexdump -C * Shell Variables (PATH, TMOUT) * piping / tee * split * uptime / free * top / htop / atop * vmstat / iostat / iotop * screen * md5sum * wget / curl * dd * dos2unix / unix2dos * hdparam <!-----------------------------------------------------------------------------> <li>Editing text files: vi </li> <ul> <li>Command mode(ESC)</li> <li>Insert mode(i)</li> <li>Command line mode(:)</li> <li>:w :q :wq :q! :w filename</li> <li>copy/cut/paste/visual y d p v</li> <li>search forward/backward</li> <li>h j k l $ 0 G x o A</li> </ul> <!-----------------------------------------------------------------------------> <li>Disks and Partitions</li> <ul> <li>df -hT</li> <li>fdisk / gdisk </li> <li>LVM / RAID </li> <li>du -hscS</li> <li>ncdu , gdu</li> </ul> <!-----------------------------------------------------------------------------> <li>Networking</li> <ul> <li>Networking Basics (IP/Netmask/Prefix/Gateway/DNS/Subnet)</li> <li>IP Settings (temporary, permanent) - ifconfig , route -n , dig</li> <li>ip command reference: http://linux-ip.net/gl/ip-cref/ </li> <li>ping / traceroute / ttl / mtr / fping </li> <li>mii-tool / ethtool / watch</li> <li>IP Forwarding (temporary, permanent)</li> <li>Bonding / etherchannel / Portchannel / LACP</li> <li>Source NAT</li> <li>Static Routing (temporary, permanent)</li> </ul> <!-----------------------------------------------------------------------------> <li>User Management</li> <ul> <li> useradd -m -s / adduser </li> <li> userdel -r / usermod </li> <li> groupadd / groupmod / groupdel </li> <li> vigr / vipw </li> <li> chage / chgrp / chsh </li> <li> id -u -g </li> <li> whoami / w / last </li> <li>su / sudo / sudoers / visudo </li> /etc/shadow /etc/group </ul> <!-----------------------------------------------------------------------------> <li>Process Management</li> <ul> pstree pgrep </ul> <!-----------------------------------------------------------------------------> <li>Bash Shell</li> <ul> </ul> <!-----------------------------------------------------------------------------> <li>Filesystem Hierarchy Standard</li> <ul> https://askubuntu.com/questions/130186/what-is-the-rationale-for-the-usr-directory https://wiki.debian.org/UsrMerge http://lists.busybox.net/pipermail/busybox/2010-December/074114.html https://tldp.org/LDP/Linux-Filesystem-Hierarchy/html/usr.html </ul> <!-----------------------------------------------------------------------------> <li>Kernel</li> <ul> </ul> <!-----------------------------------------------------------------------------> <li>Servers and Clients</li> <ul> <li>DHCP Server (range, fixed-address)</li> <li>DNS Server - Caching Recursive, stub resolver: bind, unbound, DJBdns(dnscache,tinydns)</li> <li>dnscap, dnscrypt, dnstop</li> </ul> <!-----------------------------------------------------------------------------> <!-----------------------------------------------------------------------------> <!-----------------------------------------------------------------------------> <!-----------------------------------------------------------------------------> <li>Essential Commands</li> <ul> <li>ls -lha</li> <li>pwd</li> <li>file</li> <li>history</li> <li>cd / cd .. / cd - / cd ~</li> <li>mkdir -p / rmdir</li> <li>tree</li> <li>Relative / Absolute Addresses</li> <li>rm -rf</li> <li>cp -rv</li> <li>mv</li> <li>wild cards</li> <li>alias / unalias</li> <li>cat / more / less</li> <li>head / tail -f</li> <li>touch</li> <li>ln -s / readlink</li> <li>man, info, tldp.org</li> <li>whereis, apropos</li> <li>whatis, makewhatis</li> <li>which, type</li> <li>share/doc, tldp.org</li> <li>find</li> <li>xargs</li> <li>slocate / updatedb</li> <li>grep</li> <li>df -hT</li> <li>du -hscS</li> <li>ps / kill / killall</li> <li>chown</li> <li>chmod</li> <li>mount / umount / eject , (cdrom, usb) , fstab </li> <li>tar</li> <li>zcat / zless / zgrep</li> <li>unzip / unrar</li> <li>diff</li> <li>date,cal / unix timestamp</li> <li>hexdump -C</li> <li>Environment / Shell Variables (PATH, TMOUT)</li> <li>piping / tee </li> <li>split </li> <li>uptime / free </li> <li>top / htop / atop </li> <li>vmstat / iostat / iotop </li> <li>screen</li> <li>md5sum</li> <li>wget / curl</li> <li>dd Duplicating disks</li> <li>dos2unix / unix2dos</li> <li>hdparam</li> <li>ncdu</li> </ul> <li>Package Management: apt, yum, pkgtool, slackpkg, slapt, sbopkg, epkg </li> <li>SSH Server / ssh client, putty / scp, winscp / rsync / tunnel / sshfs </li> <li>netstat -nlp -tunapo </li> <li>NFS: Network Filesystem</li> <li>Open-iSCSI</li> <li>RFC/BCP: rfc1818</li> <li>PPPOE Client / Dialup </li> <li>Source code compile</li> <li>jdate,jcal </li> <li>epkg / encap </li> <li>ipcalc</li> <li>Cache Server: squid (transparent)</li> <li>logrotate / syslog / rsyslog / syslog-ng </li> <li>Firewall: Stateless, Statefull </li> <li>Filesystem Hierarchy Standard : https://refspecs.linuxfoundation.org/fhs.shtml /proc /sys </li> <ul> <li>echo </li> <li>sort / uniq </li> <li>basename / dirname </li> <li>expand </li> <li>paste </li> <li>tr </li> <li>sleep </li> <li>wc -l </li> <li>trap </li> <li>cut </li> <li>bc </li> <li>dialog </li> <li>expect </li> </ul> <li>regex / pcre / egrep </li> <li>sed: stream editor </li> <li>awk </li> <li>Web Server: apache, php, lighttpd/ nginx, php-fpm</li> <li>Apache: htaccess, htpasswd / Nginx</li> <li>openssl / https</li> <li>Database Server: mysql, postgres ,redis </li> <li>phpmyadmin</li> <li>wordpress / drupal / joomla</li> <li>MS-SQL: FreeTDS / UnixODBC </li> <li>SNMP Server: net-snmp</li> <li>Scheduling: crontab / atd / anacron </li> <li>smokeping</li> <li>ntpdate / ntpd / chronyd / hwclock </li> <li>Bandwidthd</li> <li>Zabbix</li> <li>Cacti</li> <li>Nagios</li> <li>collectd</li> <li>git</li> <li>minicom</li> <li>Traffic Control: tc, htb, iptables, lartc.org</li> <li>Policy Routing: ip rule, ip route, iptables </li> <li>Bridge: brctrl</li> <li>Proxy ARP</li> <li>DNS Server - Authoritative, forward-only, master/slave : bind</li> <li>Dynamic DNS: ISC DHCP, BIND</li> <li>dnsmasq</li> <li>Squid: tproxy, wccp</li> <li>Super Server / inetd / xinetd</li> <li>telnet Server</li> <li>tftp Server</li> <li>ftp server: pureftpd, proftpd </li> <li>ftp client: ncftp, lftp</li> <li>Socks Server: dante</li> <li>Quagga: OSPF / BGP / RIP / IS-IS </li> <li>vrrp / keepalived</li> <li>Configuration management: Chef, Puppet, Ansible, SaltStack ,CFEngine</li> <li>data-serialization formats: YAML, XML, JSON</li> <li>Kernel Upgrade</li> <li>Lilo / Grub / Syslinux</li> <li>init / systemd / run level / sysV </li> <li>ACL / getfacl / setfacl / chattr </li> <li>Network Scanning: nmap</li> <li>webmin</li> <li>mc / ranger</li> <li>VLAN management: vconfig</li> <li>Bridge: ebtables, arptables, arp, arping</li> <li>Network Access Server: Radius Server (freeradius), VPN Server(poptop / pptpd), PPPOE Server</li> <li>OpenVPN/ vtund / l2tp/ ipsec / iptunnel </li> <li>Dark Web: Tor / Tor-Browser / Tails</li> <li>cryptocurrency : Blockchain/mining/ wallet/ Bitcoin, Ethereum</li> <li>Samba / openldap / kerberos / SMB,CIFS / NIS</li> <li>lxc / docker / kvm / libvirt / xen / qemu </li> <li>HAProxy: TCP/HTTP Load Balancer </li> <li>varnish</li> <li>Kubernetes: automating deployment, scaling, and management of containerized applications </li> <li>Perl / CGI </li> <li>Python / Django </li> <li>Ruby / Rails </li> <li>IPv6 / HTTP/2 / QUIC </li> <li>Infrastructure as code (IaC): terraform </li> <li>Prometheus</li> <li>Grafana / Graphite </li> <li>ELK: Elasticsearch, Logstash, and Kibana</li> <li>Databases: Neo4j Cassandra FluidDB MongoDB OrientDB cloudant (couchdb) Couchbase RethinkDB ArangoDB MarkLogic ClickHouse InfluxDB Druid Snowflake Redshift BigQuery </li> <li>Kafka: Distributed Streaming Platform</li> <li>Hadoop: distributed processing</li> <li>Digital Radio: icecast2 / ices </li> <li>Firewalls: iptables / ipset / recent / port-knocking / firewalld, ufw, nftables</li> <li>Fluentd: data collector</li> <li>Node.js: back-end JavaScript runtime environment</li> <li>Load Balancer: Seesaw, LoadMaster, ZEVENET, balance (https://balance.inlab.net/), pen (https://github.com/UlricE/pen)</li> <li>DNS high-availability : PowerDNS dnsdist, OpenBSD relayd </li> <li>DRBD: Distributed Replicated Block Device</li> <li>VNC: tightvnc, x11vnc</li> <li>SELinux</li> </ul> </body></html> ---- ## Intermediate -- Multiple Softwares all beginner topics in depth jump into other distros client X Window dpkg-reconfigure tzdata stat shred DNS / Unbound / knot <li>Mail Server: Qmail / vpopmail / mysql / dovecot / roundcube / postfix / iredmail / daemontools </li> remote syslog <li>Network Sniffing: tcpdump / ngrep / tcpick </li> <li>MRTG / iptraf / nload / iftop </li> Update / Upgrade OS https://tldp.org/LDP/GNU-Linux-Tools-Summary/html/index.html <li>Bash Scripting (variables, for, case, if, functions) https://www.gnu.org/software/bash/manual/html_node/index.html </li> <li>Bash Startup Files : https://www.gnu.org/software/bash/manual/html_node/Bash-Startup-Files.html</li> pwgen ---- ## Advanced <li>LVS: Linux Virtual Server Cluster / Piranha Configuration Tool </li> <li>PHP: CakePHP, Lerevel, CodeIgniter, yii, Zend Framework</li> Knot / Slpit Domain scrpting / source reading security / rootkit ---- ## Expert LFS Programming Python C ----