Intermediate Linux Administration Tutorials with Practical Examples - Textnotes

Intermediate Linux Administration Tutorials with Practical Examples


Detailed tutorials on Linux boot process, systemd services, disks, LVM, swap, NFS, Samba, SSH authentication, rsync, cron, logs, and essential networking concepts with real-world examples.

1) Boot Process (BIOS → GRUB → Kernel → systemd)

Linux boot flow:

  1. BIOS/UEFI initializes hardware
  2. GRUB bootloader loads kernel
  3. Kernel loads init/systemd
  4. systemd starts services

Check current bootloader


cat /boot/grub2/grub.cfg

Check default boot target


systemctl get-default

Set boot target to multi-user


systemctl set-default multi-user.target

View boot logs


dmesg
journalctl -b

2) systemd Services Management

Start, stop, restart services


systemctl start httpd
systemctl stop httpd
systemctl restart httpd

Enable service at boot


systemctl enable httpd

Disable service


systemctl disable httpd

Check service status


systemctl status sshd

View failed services


systemctl --failed

3) Disk Management: fdisk, gdisk, mkfs

List disks


lsblk
fdisk -l

Create partition using fdisk (MBR)


fdisk /dev/sdb

Inside fdisk:

  1. n → new partition
  2. w → write changes

Create partition using gdisk (GPT)


gdisk /dev/sdb

Create filesystem


mkfs.ext4 /dev/sdb1
mkfs.xfs /dev/sdb1

Mount partition


mkdir /mnt/data
mount /dev/sdb1 /mnt/data

Make permanent mount entry

Edit:


vim /etc/fstab

Example entry:


/dev/sdb1 /mnt/data ext4 defaults 0 0

4) LVM: PV, VG, LV

Create Physical Volume (PV)


pvcreate /dev/sdc

Create Volume Group (VG)


vgcreate vgdata /dev/sdc

Create Logical Volume (LV)


lvcreate -L 5G -n lvdata vgdata

Create filesystem


mkfs.ext4 /dev/vgdata/lvdata

Mount LV


mount /dev/vgdata/lvdata /data

Extend LV


lvextend -L +2G /dev/vgdata/lvdata
resize2fs /dev/vgdata/lvdata

Extend LV using 100% free space


lvextend -r -l +100%FREE /dev/vgdata/lvdata

5) Swap Management

Check swap


swapon -s
free -h

Create swap file


dd if=/dev/zero of=/swapfile bs=1G count=2
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

Make swap permanent

Add to /etc/fstab:


/swapfile swap swap defaults 0 0

6) NFS and Samba

NFS Server

Install and configure


dnf install nfs-utils
mkdir /srv/nfsdata
chmod 777 /srv/nfsdata

Edit exports file


vim /etc/exports

Add:


/srv/nfsdata 192.168.1.0/24(rw,no_root_squash)

Enable service:


systemctl enable --now nfs-server
exportfs -rav

NFS Client


mount -t nfs server:/srv/nfsdata /mnt

Samba Server (SMB)

Install


dnf install samba

Configure share

Edit:


vim /etc/samba/smb.conf

Add:


[shared]
path = /srv/samba
browsable = yes
writable = yes

Set Samba user:


smbpasswd -a muni

Restart service:


systemctl restart smb
systemctl enable smb

7) SSH and Key-Based Authentication

Generate SSH key (Client)


ssh-keygen -t rsa

Copy key to server


ssh-copy-id user@server

Manual method


cat ~/.ssh/id_rsa.pub | ssh user@server "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Disable password login (optional)

Edit:


vim /etc/ssh/sshd_config

Set:


PasswordAuthentication no

Restart SSH:


systemctl restart sshd

8) rsync and scp

rsync (sync files between servers)


rsync -av /source/ user@server:/destination/

rsync delete option


rsync -av --delete /local/dir/ user@server:/remote/dir/

scp (secure copy)


scp file.txt user@server:/tmp/
scp user@server:/tmp/file.txt .

9) Cron Jobs

Edit cron


crontab -e

Example: Take backup every day at 2 AM


0 2 * * * /usr/local/bin/backup.sh

List cron jobs


crontab -l

System-wide cron directories


/etc/cron.daily
/etc/cron.weekly

10) Logs: /var/log and journalctl

Important log files


/var/log/messages
/var/log/secure
/var/log/cron
/var/log/boot.log

View logs using journalctl

Show logs for last boot


journalctl -b

Show logs for a specific service


journalctl -u sshd

Follow logs live


journalctl -f

11) Networking Basics (IP, routes, firewall-cmd)

Check IP


ip addr show

Add temporary IP


ip addr add 192.168.1.10/24 dev eth0

Check routing table


ip route

Add route


ip route add 10.0.0.0/24 via 192.168.1.1

Check active network connections


ss -tulnp

Firewall commands (firewalld)

Start firewalld


systemctl start firewalld

Allow port 80


firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --reload

List rules


firewall-cmd --list-all