Linux file systems trên Ubuntu Server và Rocky Linux khác gì nhau và khác gì với Filesystem Hierarchy Standard?

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.