(+84) 236.3827111 ex. 402

Tìm hiểu cấu trúc i-node và cách đọc thông tin tệp tin trong Linux


Giới thiệu

Trong các hệ điều hành Linux/Unix, mọi tệp tin (file) và thư mục (directory) đều được quản lý thông qua một cấu trúc dữ liệu đặc biệt gọi là i-node (Index Node). Đây là thành phần cốt lõi của hệ thống tập tin (File System), lưu trữ toàn bộ thông tin mô tả về tệp tin ngoại trừ tên của tệp.

Việc hiểu rõ i-node không chỉ giúp sinh viên nắm vững nguyên lý hoạt động của hệ điều hành Linux mà còn là nền tảng quan trọng trong các lĩnh vực như Quản trị hệ thống, An toàn thông tin, Điều tra số (Digital Forensics), Khôi phục dữ liệu và Quản trị máy chủ.

Bài viết dưới đây hướng dẫn cách tạo tệp tin, xem thông tin i-node và phân tích ý nghĩa của từng trường thông tin hiển thị bằng lệnh ls -li.

Bước 1. Tạo tệp tin trong Linux

Đầu tiên, tạo một tệp tin có tên hello.sh với nội dung đơn giản:

echo "hi" > hello.sh

Lệnh trên sẽ:

  • Tạo tệp hello.sh nếu chưa tồn tại.
  • Ghi nội dung hi vào tệp.
  • Nếu tệp đã tồn tại thì nội dung cũ sẽ bị ghi đè.

Để kiểm tra nội dung của tệp:

cat hello.sh

Kết quả:

hi

Bước 2. Thay đổi chủ sở hữu của tệp

Giả sử hệ thống đã có người dùng tên sinhvien.

Nếu chưa có, tạo người dùng:

useradd sinhvien

Sau đó chuyển quyền sở hữu tệp:

chown sinhvien hello.sh

Lệnh chown (Change Owner) giúp thay đổi chủ sở hữu của một tệp hoặc thư mục.

Sau khi thực hiện, người dùng sinhvien sẽ trở thành chủ sở hữu của tệp hello.sh.

Bước 3. Hiển thị thông tin i-node

Để xem toàn bộ thông tin của tệp, sử dụng lệnh:

ls -li hello.sh

Ví dụ kết quả:

4194577 -rwxr-xr--. 1 sinhvien root 38 Feb 19 14:48 hello.sh

Trong đó:

4194577 -rwxr-xr--. 1 sinhvien root 38 Feb 19 14:48 hello.sh
(1)      (2)(3)      (4)(5)      (6)  (7) (8)         (9)

Ý nghĩa của các tùy chọn trong lệnh ls

Lệnh ls có nhiều tùy chọn hữu ích, trong đó phổ biến nhất là:

Tùy chọn

Ý nghĩa

-l

Hiển thị thông tin chi tiết của tệp tin (long format).

-i

Hiển thị số i-node (inode number).

-a

Hiển thị tất cả các tệp, bao gồm cả tệp ẩn.

-d

Hiển thị thông tin của chính thư mục thay vì nội dung bên trong thư mục.

Ví dụ:

ls -li

sẽ kết hợp cả hai tùy chọn:

  • -l: hiển thị đầy đủ thông tin.
  • -i: hiển thị số i-node.

Phân tích từng trường thông tin của i-node

1. Inode Number

4194577

Đây là số định danh duy nhất của tệp trong hệ thống tập tin.

Mỗi tệp đều có một số i-node riêng.

Tên tệp chỉ là một “nhãn” (label) ánh xạ đến i-node.

Nếu đổi tên tệp:

mv hello.sh test.sh

thì:

  • inode không thay đổi
  • chỉ có tên file thay đổi.

Đây là lý do Linux có thể hỗ trợ Hard Link, khi nhiều tên tệp cùng trỏ tới một i-node.

2. Loại tệp (File Type)

-

Ký tự đầu tiên xác định loại đối tượng.

Ký hiệu

Ý nghĩa

-

File thông thường

d

Thư mục

l

Liên kết mềm (Symbolic Link)

b

Thiết bị Block (HDD, SSD…)

c

Thiết bị Character (Keyboard, Terminal…)

p

Pipe

s

Socket

Ví dụ:

drwxr-xr-x

chữ d đầu tiên cho biết đây là một thư mục.

3. Quyền truy cập (Permission)

rwxr-xr--

Chuỗi quyền gồm 9 ký tự, chia thành ba nhóm:

rwx | r-x | r--
Owner Group Others

Ý nghĩa:

Owner

rwx

  • r: Read
  • w: Write
  • x: Execute

Group

r-x

  • Được đọc
  • Được thực thi
  • Không được ghi

Others

r--

  • Chỉ được đọc

Không có quyền ghi và thực thi.

Ý nghĩa từng quyền

Quyền

Giá trị

Chức năng

r

4

Đọc

w

2

Ghi

x

1

Thực thi

Ví dụ:

755

tương đương:

rwxr-xr-x

Còn:

644

tương đương:

rw-r--r--

4. Link Count

1

Đây là số lượng Hard Link đang tham chiếu đến i-node này.

Ví dụ:

ln hello.sh test.sh

Sau đó:

ls -li

kết quả sẽ hiển thị:

4194577 -rwxr-xr-- 2 sinhvien root ...

Chỉ số liên kết tăng từ 1 lên 2.

Điều này chứng tỏ hai tên tệp cùng chia sẻ một i-node.

5. Chủ sở hữu (Owner)

sinhvien

Đây là tài khoản đang sở hữu tệp.

Người sở hữu thường có quyền thay đổi:

  • quyền truy cập
  • nội dung
  • thuộc tính của tệp

Thông tin này có thể thay đổi bằng:

chown

6. Nhóm sở hữu (Group)

root

Mỗi tệp đều thuộc một nhóm người dùng.

Các thành viên của nhóm sẽ được áp dụng quyền trong cột Group Permission.

Có thể thay đổi bằng:

chgrp

7. Kích thước tệp

38

Đây là kích thước của tệp tính theo byte.

Nếu thêm nội dung:

echo "Linux" >> hello.sh

thì kích thước sẽ tăng.

8. Thời gian chỉnh sửa cuối

Feb 19 14:48

Đây là thời điểm dữ liệu của tệp được chỉnh sửa lần cuối (Modification Time - mtime).

Linux còn lưu thêm nhiều loại thời gian khác như:

  • Access Time (atime): thời điểm truy cập cuối.
  • Change Time (ctime): thời điểm thay đổi thuộc tính.
  • Birth Time (nếu hệ thống tập tin hỗ trợ): thời điểm tạo tệp.

Các thông tin này có thể xem bằng:

stat hello.sh

9. Tên tệp

hello.sh

Điều thú vị là tên tệp không được lưu trong i-node.

Tên tệp thực chất được lưu trong thư mục (Directory Entry), còn thư mục chỉ lưu cặp thông tin:

Tên file  --->  inode number

Nhờ cơ chế này:

  • Có thể đổi tên tệp mà không làm thay đổi nội dung.
  • Có thể tạo nhiều Hard Link cùng trỏ đến một i-node.
  • Việc quản lý tệp trở nên linh hoạt và hiệu quả hơn.

Mối quan hệ giữa Directory và i-node

Có thể hình dung quá trình lưu trữ của Linux như sau:

Directory

hello.sh
      │
      ▼
Inode 4194577
      │
      ├── Owner
      ├── Group
      ├── Permission
      ├── Size
      ├── Time
      ├── Link Count
      └── Block dữ liệu

             │
             ▼

        Nội dung file
             hi

Điều này cho thấy thư mục chỉ đóng vai trò ánh xạ tên tệp đến i-node, trong khi mọi thông tin kỹ thuật của tệp đều được lưu trong i-node.

Kết luận

i-node là thành phần trung tâm của hệ thống tập tin Linux, chịu trách nhiệm lưu trữ toàn bộ siêu dữ liệu (metadata) của tệp như quyền truy cập, chủ sở hữu, kích thước, thời gian và vị trí dữ liệu trên đĩa. Thông qua lệnh ls -li, người dùng có thể quan sát trực quan các thông tin này và hiểu rõ cách Linux quản lý tệp tin.

Việc nắm vững khái niệm i-node không chỉ giúp sinh viên sử dụng Linux hiệu quả hơn mà còn là kiến thức nền tảng cho các học phần như Hệ điều hành, Quản trị Linux, Quản trị hệ thống, An toàn thông tin, Điều tra số (Digital Forensics)Phân tích mã độc. Đây cũng là cơ sở để nghiên cứu các cơ chế nâng cao như Hard Link, Symbolic Link, quản lý quyền truy cập, phục hồi dữ liệu và tối ưu hóa hệ thống tập tin trong các môi trường máy chủ hiện đại.