Cây gừa cổ thụ trăm nhánh ở Cần Thơ – Hình minh họa
Linux file systems là 1 cây thư mục phân cấp bắt đầu bằng / trong phân vùng root ( root partition hay / partition) của Linux.
Linux file systems được người ta cố gắng đưa ra thành 1 tiêu chuẩn thống nhất gọi là FHS (Filesystem Hierarchy Standard).
Filesystem Hierarchy Standard hay FHS 3.0 là chuẩn mới nhất có từ năm 2015 sau chuẩn FHS 2.3 năm 2004.
Có 1 điều thú vị là gần như chẳng có hệ điều hành Linux nào tuân theo chuẩn FHS 3.0 cả. 😀
Nếu bạn search google với từ Linux file systems có thể thấy hình sau
Hình này rất đẹp, có vẻ liệt kê rất đầy đủ các thư mục trong / của Linux.
Tuy nhiên nếu bạn đi vào thực tế cây thư mục của Ubuntu Server 22.94 và Rocky Linux 9 bạn sẽ thấy có sự khác biệt.
Linux file systems trên Ubuntu Server như sau:
# ll /
total 2191448
drwxr-xr-x 20 root root 4096 Thg 12 2 17:27 ./
drwxr-xr-x 20 root root 4096 Thg 12 2 17:27 ../
lrwxrwxrwx 1 root root 7 Thg 12 2 17:25 bin -> usr/bin/
drwxr-xr-x 4 root root 4096 Thg 12 2 17:31 boot/
drwxrwxr-x 2 root root 4096 Thg 12 2 17:27 cdrom/
drwxr-xr-x 18 root root 4060 Thg 2 3 20:35 dev/
drwxr-xr-x 132 root root 12288 Thg 12 2 17:35 etc/
drwxr-xr-x 3 root root 4096 Thg 12 2 17:28 home/
lrwxrwxrwx 1 root root 7 Thg 12 2 17:25 lib -> usr/lib/
lrwxrwxrwx 1 root root 9 Thg 12 2 17:25 lib32 -> usr/lib32/
lrwxrwxrwx 1 root root 9 Thg 12 2 17:25 lib64 -> usr/lib64/
lrwxrwxrwx 1 root root 10 Thg 12 2 17:25 libx32 -> usr/libx32/
drwx------ 2 root root 16384 Thg 12 2 17:25 lost+found/
drwxr-xr-x 3 root root 4096 Thg 12 2 17:33 media/
drwxr-xr-x 2 root root 4096 Thg 8 8 05:52 mnt/
drwxr-xr-x 3 root root 4096 Thg 12 2 17:34 opt/
dr-xr-xr-x 409 root root 0 Thg 2 3 20:35 proc/
drwx------ 5 root root 4096 Thg 12 2 17:35 root/
drwxr-xr-x 37 root root 980 Thg 2 3 20:35 run/
lrwxrwxrwx 1 root root 8 Thg 12 2 17:25 sbin -> usr/sbin/
drwxr-xr-x 13 root root 4096 Thg 8 8 05:59 snap/
drwxr-xr-x 2 root root 4096 Thg 8 8 05:52 srv/
-rw------- 1 root root 2243952640 Thg 12 2 17:25 swapfile
dr-xr-xr-x 13 root root 0 Thg 2 3 20:35 sys/
drwxrwxrwt 24 root root 4096 Thg 2 3 20:35 tmp/
drwxr-xr-x 14 root root 4096 Thg 8 8 05:52 usr/
drwxr-xr-x 14 root root 4096 Thg 8 8 05:58 var/
Có vài liên kết mềm trong / ví dụ
/bin thực chất là /usr/bin
/sbin thực chất là /usr/sbin.
Các thư mục chứa thư viện trong / thì
/lib thực chất là /usr/lib/
/lib32 thực chất là usr/lib32/
/lib64 thực chất là /usr/lib64/
/libx32 thực chất là /usr/libx32/
Nếu root partition xài filsystem Ext4 thì sẽ có thư mục /lost+found/
Ubuntu xài kiểu đóng gói snap nên có /snap.
Linux file systems trên Rocky Linux 9 như sau:
# ll /
total 24
dr-xr-xr-x. 2 root root 6 May 16 2022 afs
lrwxrwxrwx. 1 root root 7 May 16 2022 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 Jan 24 10:54 boot
drwxr-xr-x. 19 root root 3200 Feb 3 20:28 dev
drwxr-xr-x. 82 root root 8192 Feb 3 20:52 etc
drwxr-xr-x. 4 root root 51 Feb 3 20:50 home
lrwxrwxrwx. 1 root root 7 May 16 2022 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 May 16 2022 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 May 16 2022 media
drwxr-xr-x. 2 root root 6 May 16 2022 mnt
drwxr-xr-x. 2 root root 6 May 16 2022 opt
dr-xr-xr-x. 283 root root 0 Feb 3 20:27 proc
dr-xr-x---. 3 root root 157 Feb 3 21:49 root
drwxr-xr-x. 28 root root 800 Feb 3 20:49 run
lrwxrwxrwx. 1 root root 8 May 16 2022 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 May 16 2022 srv
dr-xr-xr-x. 13 root root 0 Feb 3 20:28 sys
drwxrwxrwt. 5 root root 4096 Feb 3 21:35 tmp
drwxr-xr-x. 12 root root 144 Jan 24 10:52 usr
drwxr-xr-x. 20 root root 4096 Feb 3 20:49 var
afs là andrew filesytem nghe đồn có từ thời Fedora Linux 34.
Thư mục /afs có trên file system / là do cài gói filesystem.
# rpm -qf /afs
filesystem-3.16-2.el9.x86_64
# rpm -qi filesystem
Name : filesystem
Version : 3.16
Release : 2.el9
Architecture: x86_64
Install Date: Wed 24 Jan 2024 10:52:45 AM +07
Group : System Environment/Base
Size : 106
License : Public Domain
Signature : RSA/SHA256, Mon 16 May 2022 07:32:55 PM +07, Key ID 702d426d350d275d
Source RPM : filesystem-3.16-2.el9.src.rpm
Build Date : Mon 16 May 2022 07:28:47 PM +07
Build Host : pb-202a4f6a-5918-4ded-a4f1-d194e34aef6c-b-x86-64
Packager : Rocky Linux Build System (Peridot) <releng@rockylinux.org>
Vendor : Rocky Enterprise Software Foundation
URL : https://pagure.io/filesystem
Summary : The basic directory layout for a Linux system
Description :
The filesystem package is one of the basic packages that is installed
on a Linux system. Filesystem contains the basic directory layout
for a Linux operating system, including the correct permissions for
the directories.
/home thường là thư mục nhà (home directory) đối với tài khoản người dùng dành cho con người đăng nhập và thao tác trực tiếp với hệ điều hành. Thực tế các dịch vụ mạng cũng có tạo ra user và có thư mục nhà không phải nằm trong /home.
# pinky -l mysql apache redis root DevSecOps-Edu-VN
Login name: mysql In real life: MySQL Server
Directory: /var/lib/mysql Shell: /sbin/nologin
Login name: apache In real life: Apache
Directory: /usr/share/httpd Shell: /sbin/nologin
Login name: redis In real life: Redis Database Server
Directory: /var/lib/redis Shell: /sbin/nologin
Login name: root In real life: root
Directory: /root Shell: /bin/bash
Login name: DevSecOps-Edu-VN In real life:
Directory: /home/DevSecOps-Edu-VN Shell: /bin/bash
Kết luận
Thông tin về hệ điều hành Linux có rất nhiều trên mạng.
Có rất nhiều hình ảnh về lệnh Linux, cây thư mục trên Linux… nhưng thực tế chỉ chính xác 1 phần.
Biết được các thông tin này bạn cũng chẳng có lợi thế gì so với người khác.
Bạn phải biết lập trình shell thực chiến, chuyên sâu để tự động hóa nhiều thứ trên Linux thì bạn mới có ưu thế so với người khác.
Tự học Linux dựa vào các tài liệu trên mạng cũng được nhưng bạn sẽ mất rất nhiều thời gian, tiền bạc, sức khỏe mới có được kiến thức Linux chuyên sâu.