Contents

# 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


----