hoatranlab.io.vn Zalo: 0917516878 Hotline: 0917516878 [email protected]
HoaTranLab Logo HoaTranLab
Linux Bible 11th Edition • Chapter 8

Learning System Administration

Quản trị hệ thống Linux: sudo, su, administrative commands, system logs, kernel modules, hardware tools và systemd diagnostics.

Mục Tiêu Chương 8

sudo và su

Chạy lệnh với quyền root qua sudo. Dùng su để chuyển user. Cấu hình /etc/sudoers với visudo an toàn.

Administrative Commands

Phân biệt lệnh user (/usr/bin) và admin (/sbin, /usr/sbin). Biết các lệnh quản trị quan trọng trong /sbin.

Config Files /etc

Quản lý file cấu hình hệ thống trong /etc. Biết cách sửa an toàn, backup trước khi thay đổi.

System Logs

Đọc log từ /var/log/, dùng journalctl để xem systemd logs, lọc theo thời gian, service, và mức độ nghiêm trọng.

Kernel Modules

Xem, load, unload kernel modules với lsmod, modprobe, rmmod. Hiểu /etc/modules-load.d/ và blacklisting.

Hardware Tools

Dùng lspci, lsusb, dmidecode, lshw, hwinfo để xem thông tin phần cứng. Chẩn đoán sự cố hardware.

Lý Thuyết: System Administration

1. sudo và su – Quản lý Quyền Admin

sudo (superuser do) cho phép user được ủy quyền chạy lệnh với quyền root mà không cần biết mật khẩu root. su (switch user) chuyển đổi sang user khác (thường là root) bằng mật khẩu của user đó.

Terminal – sudo và su

$ sudo dnf update -y

# Chạy lệnh với quyền root (yêu cầu mật khẩu user)

$ sudo -i

# Mở root shell (login shell)

$ sudo -u apache cat /var/www/html/config.php

# Chạy lệnh với quyền user apache

$ su -

# Chuyển sang root (cần mật khẩu root); - = login shell

$ su - chris

# Chuyển sang user chris

$ sudo visudo

# Sửa /etc/sudoers an toàn (có syntax check)

$ sudo -l

# Liệt kê quyền sudo của user hiện tại

2. Cấu hình /etc/sudoers

File /etc/sudoers kiểm soát ai được dùng sudo và có thể làm gì. LUÔN dùng visudo để sửa, không edit trực tiếp.

/etc/sudoers – Syntax

# Cho phép wheel group dùng sudo với bất kỳ lệnh nào:

%wheel ALL=(ALL) ALL

# Cho phép chris không cần mật khẩu:

chris ALL=(ALL) NOPASSWD: ALL

# Cho phép devuser chỉ chạy systemctl:

devuser ALL=(ALL) /usr/bin/systemctl

# Thêm user vào wheel group:

$ sudo usermod -aG wheel chris

$ groups chris

chris : chris wheel

# /etc/sudoers.d/ - thư mục drop-in configs:

$ sudo visudo -f /etc/sudoers.d/devteam

3. System Logs – journalctl và /var/log

systemd journal (journalctl) là log tập trung cho tất cả services. Các log truyền thống vẫn tồn tại trong /var/log/.

Terminal – journalctl

$ journalctl -xe

# Log đầy đủ với context, nhảy đến cuối

$ journalctl -u sshd.service

# Log của SSH service

$ journalctl -f

# Follow logs real-time (như tail -f)

$ journalctl --since "2025-06-13 08:00" --until "2025-06-13 09:00"

# Log trong khoảng thời gian cụ thể

$ journalctl -p err

# Chỉ hiển thị errors (0=emerg, 3=err, 6=info, 7=debug)

$ journalctl --disk-usage

Archived and active journals take up 128.0M

$ journalctl --vacuum-size=100M

# Giới hạn kích thước journal

Log FileNội dung
/var/log/messagesLog hệ thống chung (syslog)
/var/log/secureAuthentication, sudo, SSH logs
/var/log/boot.logBoot/startup messages
/var/log/dnf.logPackage install/remove history
/var/log/httpd/Apache access and error logs
/var/log/audit/SELinux và audit logs

Kernel Modules và Hardware Tools

4. Kernel Modules

Kernel modules là các phần của kernel có thể load/unload động mà không cần reboot. Thường là drivers cho hardware hoặc filesystem.

Terminal – Kernel Modules

$ lsmod

Module Size Used by

nf_conntrack 176128 3 nf_nat,iptable_nat

ip_tables 36864 3 iptable_mangle,iptable_nat

$ lsmod | grep usb

$ modinfo usb_storage

filename: /lib/modules/.../kernel/drivers/usb/storage/usb-storage.ko

$ sudo modprobe usb_storage

# Load module (dùng modprobe, không dùng insmod cho production)

$ sudo rmmod usb_storage

# Unload module (chỉ khi không còn dùng)

$ cat /proc/modules | head -5

# Blacklist module (ngăn load tự động):

$ echo "blacklist nouveau" | sudo tee /etc/modprobe.d/blacklist-nouveau.conf

5. Hardware Information Tools

Terminal – Hardware Tools

$ lspci

00:00.0 Host bridge: Intel Corporation...

00:02.0 VGA compatible controller: Intel Corporation...

$ lspci -v | grep -A5 "VGA"

# Thông tin chi tiết về GPU

$ lsusb

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

$ sudo dmidecode -t memory

# Thông tin RAM từ BIOS DMI table

$ sudo dmidecode -t processor | grep "Version"

Version: Intel(R) Core(TM) i7-12700H CPU @ 2.30GHz

$ cat /proc/cpuinfo | grep "model name" | head -1

model name : Intel(R) Core(TM) i7-12700H CPU @ 2.30GHz

$ free -h

total used free

Mem: 15Gi 4.2Gi 8Gi

$ lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS

sda 8:0 0 100G 0 disk

├─sda1 8:1 0 1G 0 part /boot

└─sda2 8:2 0 99G 0 part /

6. systemd-analyze và Boot Diagnostics

Terminal – systemd-analyze

$ systemd-analyze

Startup finished in 1.234s (kernel) + 2.567s (userspace) = 3.801s

$ systemd-analyze blame | head -10

1.234s NetworkManager-wait-online.service

0.456s firewalld.service

# Dịch vụ nào khởi động lâu nhất

$ systemd-analyze critical-chain

# Chuỗi phụ thuộc critical path trong boot

$ systemctl list-units --failed

# Xem dịch vụ bị lỗi

$ systemctl status sshd

● sshd.service - OpenSSH server daemon

Loaded: loaded (/usr/lib/systemd/system/sshd.service)

Active: active (running) since Fri 2025-06-13 08:00:00 EDT

Lab Thực Hành – Chapter 8

1

Cấu hình sudo cho user mới

Terminal

$ sudo useradd -m -s /bin/bash devops

$ sudo passwd devops

$ sudo usermod -aG wheel devops

$ sudo -u devops sudo whoami

root

$ sudo visudo -f /etc/sudoers.d/devops

# Thêm: devops ALL=(ALL) NOPASSWD: /usr/bin/systemctl

2

Phân tích System Logs

Terminal

$ journalctl --since today -p err --no-pager

$ journalctl -u sshd --since "1 hour ago"

$ grep "Failed password" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -rn | head -5

# Top IP đăng nhập SSH thất bại

$ last | head -10

# Lịch sử đăng nhập

3

Quản lý Kernel Modules

Terminal

$ lsmod | wc -l

78

$ modinfo -F filename vfat

/lib/modules/6.8.0/kernel/fs/fat/vfat.ko.xz

$ sudo modprobe nfs

$ lsmod | grep nfs

nfs 491520 0

$ sudo rmmod nfs

4

Kiểm tra Hardware

Terminal

$ lscpu | grep -E "Architecture|CPU\(s\)|Thread|Socket|Model name"

Architecture: x86_64

CPU(s): 16

Model name: Intel(R) Core(TM) i7-12700H

$ free -h && echo "---" && df -h /

$ sudo dmidecode -t 17 | grep -E "Size:|Speed:|Type:" | head -8

# Thông tin về RAM DIMMs

5

systemd-analyze Boot Performance

Terminal

$ systemd-analyze time

$ systemd-analyze blame | head -15

$ systemctl list-units --type=service --state=running

$ systemctl list-units --failed

$ systemctl status NetworkManager.service

6

Xem và phân tích /etc config files

Terminal

$ cat /etc/os-release

NAME="Fedora Linux"

VERSION="41 (Workstation Edition)"

$ cat /etc/hostname

$ cat /etc/resolv.conf

$ cat /etc/hosts

$ ls /etc/cron.d/ /etc/cron.daily/ /etc/cron.weekly/

$ cat /etc/crontab

Câu Hỏi Ôn Tập – Chapter 8

1

Sự khác nhau giữa sudo và su? Khi nào nên dùng cái nào?

sudo chạy 1 lệnh cụ thể với quyền cao hơn, yêu cầu mật khẩu user hiện tại, có log audit đầy đủ. su chuyển sang shell của user khác (thường root), yêu cầu mật khẩu của user đích. Dùng sudo: best practice cho production (traceable, least privilege). Dùng su -: khi cần nhiều lệnh root liên tiếp trong phiên làm việc.
2

Tại sao phải dùng visudo thay vì trực tiếp sửa /etc/sudoers?

visudo kiểm tra cú pháp trước khi lưu, tránh lỗi khiến sudo không hoạt động (lock out). visudo cũng lock file khi đang sửa để tránh race condition khi nhiều admin cùng sửa. Nếu /etc/sudoers bị lỗi cú pháp mà dùng nano/vi thẳng, bạn có thể mất quyền sudo hoàn toàn.
3

journalctl -p err --since today làm gì?

Lọc và hiển thị các log entries có mức độ err (lỗi) hoặc cao hơn (emerg, alert, crit) kể từ đầu ngày hôm nay. -p err: lọc theo priority, bao gồm 0=emerg đến 3=err. --since today: từ 00:00:00 hôm nay. Hữu ích để nhanh chóng phát hiện lỗi system trong ngày.
4

Lệnh lsmod hiển thị gì? Cột "Used by" có ý nghĩa gì?

lsmod liệt kê kernel modules đang được load: Module (tên), Size (kích thước trong bộ nhớ), Used by (số tiến trình đang dùng và các module phụ thuộc). Nếu Used by = 0, module có thể được unload an toàn. Nếu có tên module khác, những module đó depend vào module này.
5

Làm thế nào để ngăn một kernel module tự động load khi boot?

Tạo file blacklist trong /etc/modprobe.d/: echo "blacklist module_name" > /etc/modprobe.d/blacklist-module.conf. Sau đó chạy dracut -f để rebuild initrd. Ví dụ phổ biến: blacklist nouveau (NVIDIA open source driver) khi dùng driver proprietary. Kernel command line: modprobe.blacklist=module_name cũng hoạt động tạm thời.
6

dmidecode -t memory cho biết thông tin gì?

dmidecode đọc DMI (Desktop Management Interface) table từ BIOS/UEFI. -t memory hiển thị thông tin về RAM: số DIMM slots, kích thước mỗi slot, tốc độ (MHz), loại (DDR4/DDR5), nhà sản xuất, part number, trạng thái (in use/empty). Hữu ích để biết có thể nâng cấp RAM thêm slot nào hay không.
7

Log file nào ghi lại các lần thử đăng nhập SSH thất bại?

/var/log/secure (RHEL/Fedora/CentOS) hoặc /var/log/auth.log (Debian/Ubuntu) ghi lại authentication events. Tìm kiếm: grep "Failed password" /var/log/secure. Với systemd: journalctl -u sshd | grep "Failed". Thông tin gồm timestamp, username, IP nguồn, port.
8

systemd-analyze blame dùng để làm gì?

systemd-analyze blame liệt kê tất cả các service theo thời gian khởi động, từ lâu nhất đến nhanh nhất. Giúp xác định service nào làm boot chậm để optimize (disable, delay, hoặc thay thế). Ví dụ: NetworkManager-wait-online.service thường là culprit lớn, có thể disable nếu không cần wait for network trong boot.