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:
- BIOS/UEFI initializes hardware
- GRUB bootloader loads kernel
- Kernel loads init/systemd
- 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:
- n → new partition
- 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