Linux Administration for Nerds

Copyright 2018 Brian Davis - CC-BY-NC-SA

Introduction

This guide is intended to document the tools, strategies and practices that I have found useful at home and work when building and maintaining Linux systems. Please take note, I am not a systems administrator by trade. I am not in charge of hundreds of mission critical servers and the techniques I use probably won't scale very well to that environment. However, I do manage a handful of desktops and servers and I like that the following techniques allow me to keep them consistent.

Assumptions

I'm going to assume you understand the basics of the unix/linux systems such as users, permissions, and the command line environment. I do most of my administration from command line tools and one reason for that is it is very easy to document the commands required to perform a task. In some cases I use simple console based applications that have menus (like fdisk) or graphical tools (like gparted). In these cases I will just describe the task and assume the user can navigate the menus unless the feature is particularly esoteric or hidden.

Conventions

Generally, commands are shown in a fixed width font like this mycommand args. I will usually omit the su or sudo prefix and assume you know how to gain the appropriate user priviledges.

Outline

Operating system: Brief comparison

Virtualization: Virtualbox

Installation methods: Clonezilla, copy a live system

Filesystem: BTRFS, snapshots + RAID

GUI Environments: i3 and KDE

Synchronization: rsync + cron, smb, webdav

Backups: tar + gpg

Hardening: iptables, ssh, https, certificates

Configuration: ansible

Apps: vim, hg

Systemd

Networking