Tải bản đầy đủ (.pdf) (48 trang)

Tìm hiểu về cơ chế phân quyền trong hệ điều hành linux

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.45 MB, 48 trang )

HỌC VIỆN KỸ THUẬT MẬT MÃ
KHOA AN TOÀN THÔNG TIN

BÁO CÁO
Học phần: An toàn hệ điều hành
Đề tài: Tìm hiểu cơ chế phân quyền trong hệ điều hành Linux
Giảng viên hướng dẫn: Nguyễn Tuyết Trinh
Nhóm sinh viên thực hiện (L01 – AT12):
1. Trần Minh Đức
2. Cà Duy Dự
3. Nguyễn Văn Mạnh
4. Nguyễn Thị Mười

Hà Nội, năm 2018


MỤC LỤC
CHƯƠNG I: TỔNG QUAN HỆ ĐIỀU HÀNH LINUX .................................. 3
1.1 Về lịch sử ..................................................................................................... 3
1.2 Những ưu điểm kỹ thuật nổi bật của Linux ................................................. 5
1.4 Một số tập lệnh cơ bản trong Linux ............................................................. 8
CHƯƠNG II: CÁCH THỨC TỔ CHỨC, CƠ CHẾ BẢO VỆ DỮ LIỆU
TRONG LINUX ................................................................................................ 11
2.1 Sơ bộ kiến trúc nội tại của hệ thống file .................................................... 11
2.2 Ý nghĩa các thư mục hệ thống trong Linux ............................................... 16
2.3 Hệ thống ghi nhật ký, cơ chế journaling file system (JFS), journaling block
device (JBD). ................................................................................................... 19
2.3.1 Lịch sử hệ thống file nhật ký của Linux .............................................. 20
2.3.2 Cơ chế JFS (journaling file system) .................................................... 22
2.3.3 Cơ chế JBD (journaling block device) ................................................ 22
2.4 Kiểu hệ thống file trợ giúp bằng cơ chế journaling file system................. 25


2.4.1 Hệ thống file Reiserfs .......................................................................... 25
2.4.2 Hệ thống file XFS ................................................................................ 26
2.4.3 Hệ thống file JFS ................................................................................. 26
2.4.4 Ext3 ...................................................................................................... 27
CHƯƠNG III: CƠ CHẾ KIỂM SOÁT TRUY CẬP TRÊN LINUX (PHÂN
QUYỀN) ............................................................................................................. 29
3.1 Quyền truy nhập thư mục và file ............................................................... 29
3.2 Chế độ truy cập .......................................................................................... 32
3.2.1 Cách xác lập tương đối ........................................................................ 34
3.2.2 Cách xác lập tuyệt đối ......................................................................... 35
3.3 Một số lệnh thay đổi chế độ truy cập ......................................................... 37
3.3.1 Thay đổi quyền sở hữu file với lệnh chown ........................................ 37
3.3.2 Thay đổi quyền sở hữu nhóm với lệnh chgrp ...................................... 38
3.3.3 Thay đổi quyền truy cập file với lệnh chmod ...................................... 39
CHƯƠNG IV: DEMO KIỂM SOÁT TRUY CẬP VÀ CẤP PHÁT QUYỀN
CHO THƯ MỤC TRONG LINUX ................................................................. 41
4.1 Tạo group và phân quyền. ......................................................................... 41


CHƯƠNG 5: KẾT LUẬN ................................................................................ 44
TÀI LIỆU THAM KHẢO ................................................................................ 45


DANH MỤC HÌNH VẼ
Hình 1 Hệ điều hành Linux ................................................................................... 3
Hình 2 Ví dụ về một Inode ................................................................................. 13
Hình 3 Sơ đồ một hệ thống file nhật ký ............................................................. 20
Hình 4 Hình ảnh thể hiện vị trí VFS ................................................................... 21
Hình 5 Cơ chế JBD trong hình ảnh Linux kernel phiên bản 2.6.0..................... 24
Hình 6 Cơ chế phân quyền cho một file ............................................................ 29

Hình 7 10 Ký tự đầu tiên trong dãy .................................................................... 31
Hình 8 Chế độ truy cập bit .................................................................................. 33
Hình 9 Các ký hiệu của các quyền truy cập ........................................................ 33
Hình 10 Giải thích quyền truy cập chi tiết trong một thư mục ........................... 34
Hình 11 Các chữ cái biểu diễn mod theo cách xác lập đối tượng ....................... 35
Hình 12 Chế độ chi tiết bit của mod .................................................................. 36
Hình 13 Ký tự đặc biệt của chmod ..................................................................... 39
Hình 14 Tạo group L01...................................................................................... 41
Hình 15 Tạo mới một User ................................................................................. 41
Hình 16 Thay đổi mật khẩu User ........................................................................ 42
Hình 17 Tạo quyền sở hữu folder cho group ...................................................... 42
Hình 18 Phân quyền cho group (full quyền) ....................................................... 42
Hình 19 Tạo thêm 3 User thuộc nhóm l01 .......................................................... 43
Hình 20 Tạo thêm 3 User .................................................................................... 43
Hình 21 Tạo group L02 - chuyển user “nguyenmanh” qua l02 .......................... 44
Hình 22 User “nguyenmanh” không còn quyền ở folder L01 ............................ 44


DANH MỤC BẢNG BIỂU
Bảng 1 Các kiểu thư mục trong Linux ................................................................ 30
Bảng 2 Các quyền được liệt kê trong bảng ......................................................... 32
Bảng 3 Hệ 8 áp dụng cách tính ........................................................................... 36
Bảng 4 Chế độ truy cập ban đầu (mặc định) ....................................................... 37

2


CHƯƠNG I: TỔNG QUAN HỆ ĐIỀU HÀNH LINUX
1.1 Về lịch sử
Linux là một hệ điều hành tương tự như hệ điều hành UNIX của AT&T

Bell Labs. Linux có mọi đặc tính của một hệ điều hành hiện đại: hệ thống đa
nhiệm, đa tuyến đoạn, bộ nhớ ảo, thư viện động, chương trình dùng chung, tải
theo nhu cầu, quản lý bộ nhớ, các module driver thiết bị, video frame buffering,
và mạng TCP/IP.

Hình 1 Hệ điều hành Linux
Phiên bản đầu tiên do Linux Torvalds viết vào năm 1991 khi còn là sinh
viên, đưa ra trên cơ sở cải tiến phiên bản Unix có tên Minix do giáo sư Andrew
S.Tanenbaum xây dựng và phổ biến và nhóm lập trình viên tình nguyện từ khắp
nơi trên Internet viết và đang hoàn thiện dần dần Linux.
Là hệ điều hành mô phỏng Unix, xây dùng trên nhân kernel và các gói phần
mềm mã nguồn mở, được công bố dưới bản quyền của GPL (General Public
Licence). Giống như UNIX Linux gồm ba thành phần chính nhân Kernel, shell và
cấu trúc file.
* Các phiên bản của Linux
Hiện tại đó có các phiên bản Linux “khá ổn định”, và có một số phiên bản

3


“phát triển”. Không giống như các phần mềm đặc quyền, những phiên bản ổn định
cũ vẫn tiếp tục được hỗ trợ chừng nào còn được dùng. Đó là lý do tại sao có nhiều
phiên bản cùng tồn tại.
Số hiệu phiên bản linux tuân theo chuẩn truyền thống. Mỗi phiên bản gồm
3 chữ số, vd. X.Y.Z. số “X” chỉ tăng khi xảy ra những thay đổi quan trọng, những
thay đổi làm cho phần mềm không thể hoạt động đúng với những phần mềm khác.
Điều này rất hiếm khi xảy ra trong lịch sử linux chỉ xảy ra đúng một lần.
Số “Y” cho biết số series phát triển đang dùng. Một hạt nhân ổn định luôn
có số Y chẵn và hạt nhân đang phát triển luôn có số Y lẻ. số “Z” xác định chính
xác số phiên bản đang dùng, được tăng lên khi xuất hiện phiên bản mới. Các phiên

bản nổi bật là Redhat, Caldera, Suse, Debían, TurboLinux, Mandrake .... Các phần
mềm được Linux hỗ trợ tuy không đa dạng như windows nhưng, Linux chạy được
hết các phần mềm mã nguồn mở chuẩn như GCC, (X)Emacs, X Window System.
Mọi tiện ích Unix chuẩn, TCP/IP (bao gồm SLIP và PPP), và hàng trăm chương
trình đó được mọi người hiệu chỉnh để chạy Linux. Có một chương trình mô
phỏng DOS, gọi là DOSEMU, cho phép Linux chạy các ứng dụng trên Dos (
là trang web cung cấp phần mềm này). Chương trình mô
phỏng chuẩn tương thích hệ nhị phân Intel (Intel Binary Compatibility Standard ĨBCS2) cho SVR4 ELF và SVR3.2 COFF có thể được chọn làm biên dịch.
Linux ban đầu được viết cho máy PC bộ vi xử lý của Intel, dùng các tính
năng phần cứng của bộ vi xử lý 80386 và những bộ vi xử lý thế hệ sau của 80386.
Họ máy 80386 bao gồm 80486, và tất cả các chip Pentium. Tuy nhiên, ngày nay
Linux đó có thể được dùng trên nhiều hệ máy khác nhau. Có nhiều bản phân phối
Linux (Linux distribution) đặc biệt dành riêng cho các máy cầm tay và máy di
động. Đặc tả API bộ công cụ phát triển cho bộ vi xử lý Crusoe Smart được phát
triển bởi Transmeta Corporation.
Ban đầu một phiên bản cài đặt Linux cần được yêu cầu hệ máy tối thiểu,
với ít nhất 2MB ram, và một 0 đĩa mềm. Tuy nhiên bây giờ do yêu cầu cần thiết

4


của người dùng và nhu cầu làm về vấn đề gì? phiên bản nào? mà người dung cần
có cấu hình một máy tính họp lý. Các máy tương thích với PC, CPU intel, cần bộ
xử lý 80386 để chạy nhân Linux chuẩn.
Với nhiều ưu điểm của một hệ mã nguồn mở, linux đã giải quyết được rất
nhiều vấn đề. Nhưng bên cạnh đó cũng còn một số nhược điểm cần được khắc
phục.
1.2 Những ưu điểm kỹ thuật nổi bật của Linux
Linux là một hệ điều hành mã nguồn mở, như vậy chi phí sẽ rẻ hơn so với
các phần mềm truyền thống, mặt khác rất dễ nâng cấp, cải tiến (do cung cấp mã

nguồn kèm theo). Chính vì thế, phát triển phần mềm mã nguồn mở có thể tận dụng
được những công nghệ tiên tiến có sẵn trên thế giới, cải tiến cho phù họp với
người Việt Nam, tiết kiệm được rất nhiều công sức so với việc phát triển từ đầu,
có thể tùy ý sửa chữa theo ý mình.
*

Linh hoạt, uyển chuyển
Có thể chỉnh sửa Linux và các ứng dụng trên đó sao cho phù họp với mình

nhất. Việc Việt hóa Windows được xem là không thể nếu như không có sự đồng
ý và hỗ trợ của Microsoft. Tuy nhiên với Linux thì có thể làm được điều này một
cách đơn giản hơn. Mặt khác, do Linux được một cộng đồng rất lớn những người
làm phần mềm cùng phát triển trên các môi trường, hoàn cảnh khác nhau nên tìm
một phiên bản phù họp với yêu cầu của riêng mỗi cá nhân sẽ không phải là một
vấn đề quá khó khăn.
Bên cạnh Windows đòi hỏi cấu hình cài đặt cao thì tính linh hoạt của Linux
còn được thể hiện ở chỗ nó tương thích được với rất nhiều môi trường, và có thể
chạy trên nhiều nền tảng. Hiện tại, ngoài Linux dành cho server, máy tính để
bàn,... nhân Linux (Linux kernel) còn được nhúng vào các thiết bị điều khiển như
máy tính palm, robot... Phạm vi ứng dụng của Linux được xem là rất rộng rãi.
*

Độ an toàn cao
Trong Linux có một cơ cấu phân quyền hết sức rõ ràng. Chỉ có "root"

5


(người dùng tối cao) mới có quyền cài đặt và thay đổi hệ thống. Ngoài ra Linux
cũng có cơ chế để một người dùng bình thường có thể chuyển tạm thời sang quyền

"root" để thực hiện một số thao tác. Điều này giúp cho hệ thống có thể chạy ổn
định và tránh phải những sai sót dẫn đến sụp đổ vì hệ thống. Trong những phiên
bản Windows gần đây, cơ chế phân quyền này cũng đã bước đầu được áp dụng,
nhưng so với Linux thì vẫn kém chặt chẽ hơn.
Ngoài ra chính tính chất "mở" cũng tạo nên sự an toàn của Linux. Neu như
một lỗ hổng nào đó trên Linux được phát hiện thì nó sẽ được cả cộng đồng mã
nguồn mở cùng sửa và thường thì chỉ sau 24h sẽ có thể cho ra bản sửa lỗi. Trong
khi với hệ điều hành Windows, không thể biết được người ta viết gì, và viết ra sao
mà chỉ biết được chúng chạy như thế nào. Vì vậy nếu như Windows có chứa
những đoạn mã cho phép tạo những "backdoor" để xâm nhập vào hệ thống của
thì cũng không thể biết được. Đối với người dùng bình thường, vấn đề này có vẻ
như không quan trọng nhưng đối với một hệ thống tầm cỡ như hệ thống quốc
phòng thì vấn đề như thế này lại mang tính sống còn. Các nhân viên an ninh không
được phép để lộ một kẽ hở nào, dù là nhỏ nhất vì nó liên quan đến an ninh của cả
một quốc gia. Và một lần nữa các phần mềm mã nguồn mở nói chung và Linux
nói riêng lại là sự lựa chọn số một. Trong Linux mọi thứ đều công khai, người
quản trị có thể tìm hiểu tới mọi ngõ ngách của hệ điều hành, điều đó cũng có nghĩa
là độ an toàn được nâng cao.
*

Thích hợp cho quản trị mạng
Được thiết kế ngay từ đầu cho chế độ đa người dùng, Linux được xem là

một hệ điều hành mạng rất giá trị. Nếu như Windows tỏ ra là một hệ điều hành
thích họp với máy tính Desktop thì Linux lại là hệ điều hành thống trị đối với các
Server. Đó là do Linux có rất nhiều ưu điểm thỏa mãn đòi hỏi của một hệ điều
hành mạng: tính bảo mật cao, chạy ổn định, các cơ chế chia sẻ tài nguyên tốt ...
Giao thức TCP/IP mà ngày nay vẫn thường thấy chính là một giao thức truyền tin
của Linux (sau này mới được đưa vào Windows).


6


*

Chạy thống nhất trên các hệ thống phần cứng
Cho dù có rất nhiều phiên bản Linux được các nhà phân phối khác nhau

ban hành nhưng nhìn chung đều chạy khá ổn định trên mọi thiết bị phần cứng, từ
Intel 486 đến những máy Pentium mới nhất, từ những máy có dung lượng RAM
chỉ 4MB đến những máy có cấu hình cực mạnh (tất nhiên là tốc độ sẽ khác nhau
nhưng về nguyên tắc vẫn có thể chạy được). Nguyên nhân là Linux được rất nhiều
lập trình viên ở nhiều môi trường khác nhau cùng phát triển (không như Windows
chỉ do Microsoft phát triển) và sẽ gặp nhiều người có "cùng cảnh ngộ" như nhau,
như vậy dễ dàng tìm được các driver tương ứng với thiết bị của mỗi người. Tính
chất này hoàn toàn trái ngược với Windows, mỗi khi có một phiên bản Windows
mới ra đời thì bao giờ kèm theo đó cũng là một cơn khát về phần cứng vì hệ điều
hành mới thường không hỗ trợ các thiết bị quá cũ.1.3 Một vài nhược điểm của
Linux
Mặc dù hiện nay Linux đang có tốc độ phát triển nhanh hơn hẳn Windows
nhưng khách quan mà nói so với Windows thì Linux vẫn chưa thể đến với người
sử dụng cuối. Đó là do Linux vẫn còn có những nhược điểm cố hữu.
*

Đòi hỏi người dùng phải thành thạo
Trước kia việc sử dụng và cấu hình Linux được xem là một công việc chỉ

dành cho những chuyên gia. Hầu như mọi công việc đều thực hiện trên các dòng
lệnh và phải cấu hình nhờ sửa trực tiếp các file. Mặc dù trong những phiên bản
gần đây, hệ điều hành Linux đã có những cải tiến đáng kể, nhưng so với Windows

thì tính thân thiện của Linux vẫn còn là một vấn đề lớn. Đây là một trong những
nguyên nhân chủ yếu khiến Linux mặc dù có rất nhiều đặc tính kỹ thuật tốt nhưng
vẫn chưa đến được với người dùng cuối. Tuy nhiên Linux hiện nay đã phát triển
nhiều phiên bản thân thiện với người dùng giao diện đẹp nên cũng đã dần dần đã
được nhiều người sử dụng.
*

Tính tiêu chuẩn hóa
Linux được phát hành miễn phí nên bất cứ ai cũng có thể tự mình đóng gói,

7


phân phối theo những cách riêng. Hiện tại có khá nhiều bản Linux phát triển từ
một nhân ban đầu cùng tồn tại như: RedHat, SuSE, Knoppix... Người dùng phải
tự so sánh xem bản nào là phù hợp với mình. Điều này có thể gây khó khăn cho
người dùng, nhất là những người còn có kiến thức về tin học hạn chế.
*

Số lượng các ứng dụng chất lượng cao trên Linux còn hạn chế
Mặc dù Windows có sản phẩm nào thì Linux cũng gần như có phần mềm

tương tự. (VD: OpenOffice trên Linux tương tự như MSOffice, hay GIMP tương
tự như Photoshop, V V... ) Tuy nhiên chất lượng những sản phẩm này là chưa thể
so sánh được với các sản phẩm viết cho Windows.
* Một số nhà sản xuất phần cứng không có driver hỗ trợ Linux
Do hiện nay Linux chưa phổ biến bằng Windows nên nhiều nhà sản xuất
không hỗ trợ các driver chạy trên Linux. Tuy nhiên vẫn có thể tìm thấy các driver
này do ai đó trong cộng đồng mã nguồn mở viết.
Linux có một số nhược điểm mang tính cố hữu như vậy nhưng vẫn có thể

chạy được một số chương trình Windows trên nền Linux thông qua chương trình
WINE (một chương trình giả lập để chạy các ứng dụng Windows trên Linux). Do
đó có thể tận dụng được các ưu điểm của Windows lẫn Linux. Ngoài ra vẫn có
thể cài đặt song song Linux và Windows trên cùng một máy tính cá nhân như vẫn
thường cài chung WinXP và Win98 (tuy nhiên do hệ thống file khác nhau nên
Windows không đọc được một số file của Linux). Như vậy cũng có nghĩa là các
nhược điểm của Linux cũng đã phần nào được giải quyết.
Ngoài ra Linux cũng có hệ thống tập lệnh tương đối đầy đủ, rất tiện cho sử
dụng.
1.4 Một số tập lệnh cơ bản trong Linux
Lệnh liên quan đến hệ thống
- exit: thoát khỏi cửa sổ dòng lệnh.
- logout: tương tự exit.
- reboot: khởi động lại hệ thống.

8


- halt: tắt máy.
- startx: khởi động chế độ xwindows từ cửa sổ terminal.
- mount: gắn hệ thống tập tin từ một thiết bị lưu trữ vào cây thư mục chính.
- unmount: ngược với lệnh mount.

Lệnh thao tác trên tập tin
- ls: lấy danh sách tất cả các file và thư mục trong thư mục hiện hành.
- pwd: xuất đường dẫn của thư mục làm việc.
- cd: thay đổi thư mục làm việc đến một thư mục mới.
- mkdir: tạo thư mục mới.
- rmdir: xóa thư mục.
- cp: copy một hay nhiều tập tin đến thư mục mới.

- mv: đổi tên hay di chuyển tập tin, thư mục.
- rm: xóa tập tin.
- wc: đếm số dòng, số kí tự... trong tập tin.
- touch: tạo một tập tin.
- cat: xem nội dung tập tin.
- vi: khởi động trình soạn thảo văn bản vi.
- df: kiểm tra dung lượng đĩa.
- du: xem dung lượng đĩa đã dùng cho một số tập tin nhất định

Lệnh khi làm việc trên terminal
- clear: xoá trắng cửa sổ dòng lệnh.
- date: xem ngày, giờ hệ thống.
- cal: xem lịch hệ thống.

Lệnh quản lý hệ thống
- rpm: kiểm tra gói đã cài đặt hay chưa, hoặc cài đặt một gói, hoặc sử dụng để gỡ

bỏ một gói.
- ps: kiểm tra hệ thống tiến trình đang chạy.
- kill: dừng tiến trình khi tiến trình bị treo. Chỉ có người dùng super-user mới có

9


thể dừng tất cả các tiến trình còn người dùng bình thường chỉ có thể dừng
tiến trình mà mình tạo ra.
- top: hiển thị sự hoạt động của các tiến trình, đặc biệt là thông tin về tài nguyên

hệ thống và việc sử dụng các tài nguyên đó của từng tiến trình.
- pstree: hiển thị tất cả các tiến trình dưới dạng cây.

- sleep: cho hệ thống ngừng hoạt động trong một khoảng thời gian.
- useradd: tạo một người dùng mới.
- groupadd: tạo một nhóm người dùng mới.
- passwd: thay đổi password cho người dùng.
- userdel: xoá người dùng đã tạo.
- groupdel: xoá nhóm người dùng đã tạo.
- gpasswd: thay đổi password của một nhóm người dùng.

- su: cho phép đăng nhập với tư cách người dùng khác
- groups: hiển thị nhóm của user hiện tại.
- who: cho biết ai đang đăng nhập hệ thống.
- W: tương tự như lệnh who.
- man: xem hướng dẫn về dòng lệnh như cú pháp, các tham số...

10


CHƯƠNG II: CÁCH THỨC TỔ CHỨC, CƠ CHẾ BẢO VỆ DỮ LIỆU
TRONG LINUX
Trong môi trường làm việc của linux các thức tổ chức file có các đặc tính
riêng nắm một chức năng quan trọng trong hệ điều hành. Vì thế cấu trúc và chức
năng của từng thư mục luôn được thể hiện rõ nét. Ở linux các file cấu hình có nội
dung theo nhóm, cấu trúc cấp bậc cây thư mục. Tất cả các thư mục được nhóm
theo cấu trúc gốc "/" . Linux có tính kế thừa các đặc tính cơ bản từ Unix nên hầu
hết đều mang đặc điểm của hệ điều hành tiền nhiệm.
2.1 Sơ bộ kiến trúc nội tại của hệ thống file
Trên đĩa từ, hệ thống file được coi là dãy tuần tự các khối logic mỗi khối
chứa hoặc 512B hoặc 1024B hoặc bội của 512B là cố định trong một hệ thống
file. Trong hệ thống file, các khối dữ liệu được địa chỉ hóa bằng cách đánh chỉ số
liên tiếp, mỗi địa chỉ được chứa trong 4 byte (32 bit).

Cấu trúc và hệ thống file, thư mục trong linux bao gồm 4 thành phần kế
tiếp nhau:
-

Block 0: Boot block thường chứa mã để nạp hệ điều hành(tương ứng với boot
sector trong MS Dos).

-

Block 1: Siêu khối (Super block) chứa thông tin liên quan đến trạng thái của
hệ thống file (số lượng Inode; số Disk Block; Điểm bắt đầu của danh sách
các khối đĩa trống).

-

Inode: Tương ứng bảng Fat trong Ms - Dos , chứa thông tin mô tả về lưu trữ
file trên đĩa và số lượng thông tin khác nhau (chủ sở hữu, quyền truy cập,
thời gian truy cập file). Mỗi Inode dài 64 byte, mô tả chính xác một file.

-

Khối dữ liệu ( Data block): Tất cả file và thư mục được lưu trữ tại đây Siêu
khối
Siêu khối chứa nhiều thông tin liên quan đến trạng thái của hệ thống file.

Trong siêu khối có các trường sau đây:
-

Kích thước của danh sách Inode (khái niệm Inode sẽ được giải thích trong


11


mục sau): định kích cỡ vùng không gian trên hệ thống file quản lý các Inode.
- Kích thước của hệ thống file.
Hai kích thước trên đây tính theo đơn vị dung lượng bộ nhớ ngoài, một danh
sách chỉ số các khối rỗi (thường trực trên siêu khối) trong hệ thống file.
Chỉ số các khối rỗi thường trực trên siêu khối được dùng để đáp ứng nhu
cầu phân phối mới. Danh sách chỉ số các khối rỗi có trên siêu khối chỉ là một bộ
phận của tập tất cả các khối rỗi có trên hệ thống file.
Chỉ số của khối rỗi, dùng để hỗ trợ việc tìm kiếm tiếp các khối rỗi, bắt đầu
tìm từ khối có chỉ số này trở đi. Điều đó có nghĩa là mọi khối có chỉ số không lớn
hơn chỉ số này hoặc có trong danh sách các khối rỗi thường trực hoặc đó được cấp
phát cho một file nào đó.
Hai tham số trên đây tạo thành cặp xác định được danh sách các Inode rỗi trên hệ
thống file các thao tác tạo file mới, xoá file cập nhật thông tin này.
Một danh sách các Inode rỗi (thường trực trên siêu khối) trong hệ thống
file. Danh sách này chứa chỉ số các Inode rỗi được dùng để phân phối ngay được
cho một file mới được khởi tạo. Thông thường, danh sách này chỉ chứa một bộ
phận các Inode rỗi trên hệ thống file.
Các trường khóa (lock) danh sách các khối rỗi và danh sách Inode rỗi. Trong
một số trường hợp, chẳng hạn khi hệ thống đang làm việc thực sự với đĩa từ để
cập nhật các danh sách này, hệ thống không cho phép cập nhật tới hai danh sách
nói trên.
Cờ chỉ dẫn về việc siêu khối đó được biến đổi. Định kỳ thời gian siêu khối
ở bộ nhớ trong được cập nhật lại vào siêu khối ở đĩa từ và vì vậy cần có thông tin
về việc siêu khối ở bộ nhớ trong khác với nội dung ở bộ nhớ ngoài: nếu hai bản
không giống nhau thì cần phải biến đổi để chúng được đồng nhất.
Cờ chỉ dẫn rằng hệ thống file chỉ có thể đọc (cấm ghi). Trong một số trường hợp,
hệ thống đang cập nhật thông tin từ bộ nhớ ngoài thì chỉ cho phép đọc đối với hệ

thống file, số lượng tổng cộng các khối rỗi trong hệ thống file, số lượng tổng cộng

12


các Inode rỗi trong hệ thống file, thông tin về thiết bị, kích thước khối (đơn vị
phân phối dữ liệu) của hệ thống file. Hiện tại kích thước phổ biến của khối là
1KB.
Trong thời gian máy hoạt động, theo từng giai đoạn, nhân sẽ đưa siêu khối
lên đĩa nếu nó đó được biến đổi để phù hợp với dữ liệu trên hệ thống file. Một
trong khái niệm cốt lõi xuất hiện trong hệ thống file đó là Inode.

Hình 2 Ví dụ về một Inode

Mỗi khi một quá trình khởi tạo một file mới, nhân hệ thống sẽ gán cho nó
một Inode chưa sử dụng. Nội dung của file được chứa trong vùng dữ liệu của hệ
thống file và được phân chia các khối dữ liệu (chứa nội dung file), hình ảnh phân
bố nội dung file có trong một Inode tương ứng. Liên kết đến tập họp các khối dữ
liệu này là một Inode, chỉ thông qua Inode mới có thể làm việc với dữ liệu tại các
khối dữ liệu. Inode chứa thông tin về tập hợp các khối dữ liệu nội dung file. Tổ
hợp gồm Inode và tập các khối dữ liệu như vậy là một file vật lý, Inode có thông
tin về file vật lý, trong đó có địa chỉ của các khối nhớ chứa nội dung của file vật
lý. Thuật ngữ Inode là sự kết hợp của hai từ index với node và được sử dụng phổ
biến trong Linux.

13


Các Inode được phân biệt nhau theo chỉ số của Inode, đó chính là số thứ tự
của Inode trong danh sách Inode trên hệ thống file. Thông thường, hệ thống dùng

2 bytes để lưu trữ chỉ số của Inode. Với cách lưu trữ chỉ số như thế, không có
nhiều hơn 65535 Inode trong một hệ thống file.
Như vậy, một file chỉ có một Inode song một file lại có một hoặc một số
tên file. Người dùng tác động thông qua tên file và tên file lại tham chiếu đến
Inode (tên file và chỉ số Inode là hai trường của một phần tử của một thư mục).
Một Inode có thể tương ứng với một hoặc nhiều tên file, mỗi tương ứng như vậy
được gọi là một liên kết. Inode được lưu trữ tại vùng danh sách các Inode.
Trong quá trình làm việc, Linux dùng một vùng bộ nhớ, được gọi là bảng
Inode (trong một số trường hợp, nó cũng được gọi là bảng sao in-core Inode) với
chức năng tương ứng với vùng danh sách các Inode có trong hệ thống file, hỗ trợ
cho quá trình truy nhập dữ liệu trong hệ thống file. Nội dung của một in-core
Inode không chỉ chứa các thông tin trong Inode tương ứng mà cũng được bổ sung
các thông tin mới giúp cho quá trình xử lý Inode.
Inode bao gồm các trường thông tin sau đây:
- Kiểu file.
Trong Linux phân loại các kiểu file:
File thông thường (regular), thư mục, đặc tả kí tự, đặc tả khối và ống dẫn
FIFO (pipes).
Linux quy định trường kiểu file có giá trị 0 tương ứng đó là Inode chưa
được sử dụng. Tên file được tạo thành từ 1 đến 14 kí tự. Nếu tên file bắt đầu bằng
dấu chấm (.) thì là file ẩn. Mỗi file bao gồm các thông số:
Tên file, số hiệu file, độ dài file, thời gian tạo file, thời gian sửa đổi sau
cùng, các thuộc tính thâm nhập file (đọc - r , ghi - w, thực thi - x). Một file có 9
thuộc tính thâm nhập và thêm một thuộc tính chỉ ra nó là file hay thư mục
1 : chỉ ra là file hay thư mục 2,3,4 :
quyền truy nhập User 5,6,7 : quyền

14



truy nhập Group 8,9,10 : quyền truy
nhập Other
Trong mỗi nhóm có 3 thuộc tính : R, W, X, (-) rỗng.
- Quyền truy nhập file. Trong Linux, file là một tài nguyên chung của hệ
thống vì vậy quyền truy nhập file được đặc biệt quan tâm để tránh những trường
hợp truy nhập không hợp lệ. Đối với một Inode, có 3 mức quyền truy nhập liên
quan đến các đối tượng:
Mức chủ của file (đối tượng này được ký hiệu là u: từ chữ user), mức nhóm
người dùng của chủ nhân của file (đối tượng này được ký hiệu là g: từ chữ group),
mức người dùng khác (đối tượng này được ký hiệu 1 o: từ chữ other).
Quyền truy nhập là đọc, ghi, thực hiện hoặc một tổ họp nào đó từ nhóm
gồm 3 quyền trên. Quyền thực hiện đối với một thư mục tương ứng với việc cho
phép tìm một tên file có trong thư mục đó.
Số lượng liên kết đối với Inode: Đây chính là số lượng các tên file trên các
thư mục được liên kết với Inode này, định danh chủ nhân của Inode, định danh
nhóm chủ nhân, xác định tên nhóm người dùng mà chủ file là một thành viên của
nhóm này, độ dài của file tính theo byte. Thời gian truy nhập file: thời gian file
được sửa đổi muộn nhất, thời gian file được truy nhập muộn nhất, thời gian file
được khởi tạo.
Địa chỉ chứa các địa chỉ khối nhớ chứa nội dung file. Có 13 phần tử địa chỉ,
trong đó có 10 phần tử trực tiếp, 1 phần tử gián tiếp bậc 1, 1 phần tử gián tiếp bậc
2 và một phần tử gián tiếp bậc 3.
Nội dung của file thay đổi khi có thao tác ghi lên nó nội dung của một Inode
thay đổi khi nội dung của file thay đổi hoặc thay đổi chủ hoặc thay đổi quyền hoặc
thay đổi số liên kết.
Ví dụ về nội dung một Inode như sau:
type regular perms rwxr-xr-x links 2 owner 41CTgroup
41CNTTsize 5703 bytes

15



accessed Sep 14 1999 7:30 AM modified Sep 10 1999 1:30 PM Inode Aug 1 1995
10:15AM
Bản sao in-core Inode cũng bổ sung thêm trường trạng thái của in-core
Inode. Trường trạng thái của in-core Inode có các thông tin sau: Inode đó bị khoá,
một quá trình đang chờ đợi khi Inode tháo khóa, in-core Inode khác với Inode do
sự thay đổi dữ liệu trong Inode, in-core Inode khác với Inode do sự thay đổi dữ
liệu trong file, số lượng các tên file nối với file đang được mở, số hiệu thiết bị
logic của hệ thống file chứa file nói trên chỉ số Inode: dùng để liên kết với Inode
trên đĩa, các móc nối tới các in-core Inode khác. Trong bộ nhớ trong, các in-core
Inode được liên kết theo một hàm băm và một danh sách tự do. Trong danh sách
hàm băm, các in-core Inode hòa họp theo số hiệu thiết bị logic và số hiệu Inode.
Trong quá trình hệ thống làm việc, nảy sinh khái niệm Inode tích cực nếu
như có một quá trình đang làm việc với Inode đó (như mở file).
Một Inode thuộc vào danh sách các Inode rỗi khi không có file vật lý nào tương
ứng với Inode đó.
2.2 Ý nghĩa các thư mục hệ thống trong Linux
* root

Chứa các thư mục gốc cho những người sử dụng .
* home

Chứa các thư mục của người sử dụng cùng với các thư mục các dịch vụ.
- ftp
- HTTP
- samba
- george
* bin


Lệnh cần thiết trong quá trình bootup của người sử dụng.
* sbin

Cũng giống như bin nhưng lệnh không phải là dành cho người sử dụng bình

16


thường. Chạy lệnh của Linux.
* proc

Đây không phải là hệ thống file trên một đĩa. Là một hệ thống file ảo trong hạt
nhân nghĩ là bộ nhớ.
* 1

Một thư mục với các thông tin về việc xử lý số 1. Mỗi quá trình có một thư mục
trong proc.
* usr

Chứa tất cả các lệnh, thư viện, trò chơi và các file cho hoạt động bình thường.
* bin

Chứa hầu như tất cả lệnh. Một số lệnh ở trong / bin hoặc / usr / local / bin.
* sbin

Có quyền quản lý lệnh hệ thống không cần thiết trên các file gốc. Ví dụ: hầu hết
các chương trình trên sever.
* include

Tựa đề các file trong chương trình ngôn ngữ c

* lib h tr

Không thể thay đổi dữ liệu hoặc file cho chương trình và hệ thống nhỏ.
* local

Nơi để cài đặt phần mềm hay các file khác trên máy cục bộ.
* man

Các trang hướng dẫn.
* info

Thông tin về tài liệu.
doc Tài liệu
* X11R6

Hệ thống file trong X windows. Có một thư mục tương tự với usr bên dưới thư
mục này.

17


* X386 Giống như XI1R6 nhưng XI1 cho phát hành lần 5.
* boot

Được sử dụng bởi các file tải và khởi động hệ tải, LILO. Hình ảnh nhân thường
được lưu trữ tại đây.
* lib

Chia sẻ các thư viện cần thiết của các chương trình trên hệ thống file gốc.
* modules


Các modules cần thiết để tải hệ thống nhân kernel. Đặc biệt cần thiết khi có lỗi
xảy ra.
* dev

Thiết bị file
* etc

Cấu hình các file đặc biệt trên hệ thống máy tính.
* skel

Khi một thư mục được tạo ra sẽ làm việc với các file từ thư mục này.
* Sysconfig

File cấu hình hệ thống cho các thiết bị.
* var

Chứa các file mà thay đổi cho các email, tin tức, máy in các file đăng nhập, các
file tạm thời.
* file

Là các tệp tin.
Đăng nhập các file từ các chương trình như đăng nhập và ghi nhật ký hệ thống mà
tất cả các bản ghi từng đăng nhập và đăng xuất.
* run

File có chứa các thông tin đúng về hệ thống cho đến khi hệ thống khởi động.
* spool

18



Thư mục cho các thư điện tử, máy in, tin tức và các spooled làm việc.
* tmp

Các file tạm thời lớn hoặc cần phải tồn tại lâu.
* catman

Một bộ nhớ cache cho người dùng được định dạng theo yêu cầu.
* mnt

Điểm để tạm thời gắn kết của các quản trị hệ thống.
* tmp

Các file tạm thời. Chương trình đang chạy sau khi bootup nên sử dụng thư mục /
var / tmp.
2.3 Hệ thống ghi nhật ký, cơ chế journaling file system (JFS), journaling
block device (JBD).
Khi hệ điều hành bị tắt đột ngột (mất điện, lỗi phần mềm, vv....), trong hệ
thống file xuất hiện lỗi do file đang ghi dở, địa chỉ chưa được cập nhật,... Nếu hệ
thống file đang dùng không thuộc loại hệ thống file nhật ký (ext2,...), khi khởi
động lại, hệ điều hành sẽ phát hiện được lần tắt bị lỗi (unclean shutdown) trước
đó và tự động dùng phần mềm fsck (file system check) để soát và sửa lỗi. Nếu ổ
cứng lớn, quá trình chạy fsck sẽ khá lâu và nếu lỗi nặng fsck không sửa được sẽ
báo cho hệ điều hành khởi động vào chế độ single user mode để người dùng sửa.
Hệ thống file nhật ký JFS tránh việc hỏng hệ thống file bằng cách ghi một nhật
ký. Nhật ký là một file riêng ghi lại mọi thay đổi của hệ thống file vào một vùng
đệm (thay vì ghi thẳng vào hệ thống file trên 0 cứng). Sau từng khoảng thời gian
định trước, những thay đổi đó được thực hiện chính thức vào hệ thống file. Nếu
giữa khoảng thời gian đó, hệ thống bị tắt đột ngột, file nhật ký sẽ được dùng để

khôi phục lại các thông tin chưa lưu và tránh làm hỏng metadata của hệ thống
file. (Metadata của hệ thống gồm các thông tin về cấu trúc dữ liệu trên ổ cứng:
ngày giờ tạo, xóa file và thư mục, tăng giảm dung lượng file, chủ nhân của file,
...)

19


Tóm lại, hệ thống file nhật ký là một hệ thống file tự chữa lỗi bằng cách dùng một
file nhật ký lưu lại mọi thay đổi trước khi thay đổi đó được thực hiện thật sự vào
hệ thống file.

Hình 3 Sơ đồ một hệ thống file nhật ký
(Các hệ Linux hiện tại, sau khoảng 25-30 lần mount một partition, thường hằng
số lần khởi động hệ thống, sẽ tự động thực hiện kiểm tra hệ thống file trong các
partition đỏ mount Do vậy, thỉnh thoảng thấy hệ thống khởi động lâu hơn thường
lệ).
2.3.1 Lịch sử hệ thống file nhật ký của Linux
Hệ thống file nhật ký đầu tiên là IBM Journaled File System (JFS) ra đời
năm 1990, version hiện nay là JFS2. Năm 1994, công ty Silicon Graphics công
bố hệ thống file nhật ký cao tốc XFS cho hệ điều hành IRIX. XFS được chuyển
vào Linux năm 2001. Smart File System (SFS) của công ty Amiga ra đời năm
1998 và công bố thành nguồn mở, dùng trong Linux năm 2005. Hệ thống file nhật
ký phổ biến nhất hiện đang dùng trong các hệ Linux là ext3fs (third extended file
system, thường viết tắt là ext3), được đưa vào Linux năm 2001. Ext3 là mở rộng
(thêm khả năng nhật kỷ) của hệ thống file ext2 (không có nhật ký). Cuối cùng, hệ
thống file ReiserFS với nhiều tính năng hay, được chấp nhận rộng rãi.
Hệ thống file trong Linux mang đặc tính kế thừa cơ bản từ hệ thống file ban

20



đầu Ext2 phát triển lên vì thế việc nghiên cứu hệ thống file Ext2 là rất quan trọng
và cơ chế bảo vệ dữ liệu Journaling.
Hệ thống file ext2
Hệ thống file của Linux có tên là Ext2, được cải tiến từ hệ thống file ban
đầu của Linux là Ext thừa hưởng từ Minix. Hệ thống file Minix có dung lượng tối
đa là 64MB và tên file là 14 ký tự. Ext2 hỗ trợ hệ thống file 2GB và file 255 ký
tự nhưng lại bị hạn chế về tốc độ. Ext2 hỗ trợ 4TB, tên file 255 ký tự đồng thời
khắc phục được những khuyết điểm trên .
Kiến trúc Ext2 dùng cấu trúc dữ liệu được gọi là nút định dạng (Inode) để
tham chiếu và định vị file cũng như các dữ liệu tương ứng. Bảng Inode chứa các
thông tin gồm các loại file, kích thước, quyền truy cập, trỏ đến những khối dữ liệu
liên quan và các thuộc tính khác. Hệ thống file này tổ chức đĩa thành những nhóm
khối, trong đó chứa cả thông tin của Inode và các khối dữ liệu tương ứng.
Nhân Linux dùng lớp hệ thống file ảo (Virtual File System viết tắt là VFS) để
tương tác với hệ thống file và thực hiện các tác vụ xuất nhập đĩa. Điều này mang
lại cho Linux khả năng hỗ trợ nhiều hệ thống file khác nhau như DOS, FATI 6,
FAT32....

Hình 4 Hình ảnh thể hiện vị trí VFS

21


2.3.2 Cơ chế JFS (journaling file system)
Khi được khởi động hệ điều hành luôn luôn dùng một chương trình để kiểm
fra tính toàn vẹn của hệ thống file, đó là trình fsck. Nếu phát hiện hệ thống file có
dấu hiệu bất thường hoặc chưa được unmount, do các nguyên nhân như mất điện
hoặc hệ thống bị treo đột ngột trong khi đang chạy, lúc đó fsck sẽ quét lại toàn bộ

hệ thống file để cố gắng khôi phục lại dữ liệu. Quá trình kiểm tra và khôi phục lại
dữ liệu (nếu có) nhanh hay chậm phụ thuộc vào dung lượng của ổ cứng, và với
những hệ thống có dung lượng lưu trữ rất lớn như hiện nay (từ hàng chục đến
hàng trăm gigabyte) thì phải mất hàng giờ để quét lại toàn bộ hệ thống ổ cứng.
Cách làm này được áp dụng trên các hệ thống file Unix chuẩn ufs (Sun & HP)
hoặc ext2 mà Linux đang sử dụng.
Nếu hệ thống file cổ khả năng ghi lại (log) được các hoạt động mà hệ điều
hành đã và đang thao tác trên dữ liệu thi hệ thống xác định được ngay những file
bị sự cố mà không cần phải quét lại toàn bộ hệ thống file, giúp quá trình phục hồi
dữ liệu trở nên tin cậy và nhanh chóng hơn. Hệ thống file như vậy được gọi là
journaling file system.
Cách thức journaling file system
-

Ghi nhận các lần cập nhật trên file system thành các thao tác (transaction).

-

Mọi transaction đều phải được ghi nhận trong log file.

-

Một transaction được coi là hoàn tat (commit) <--» đã được ghi nhận đầy đủ
trong log file (lúc này file system có thể chưa được cập nhật).

-

Khi file system được cập nhật với đầy đủ mọi tác vụ trong transaction thì
transaction được xóa đi trong log file.


-

Nếu file system bị hỏng thì hệ điều hành dựa vào các transaction trong log
file để sửa chữa và khôi phục.

2.3.3 Cơ chế JBD (journaling block device)
Journaling Block Device (Thiết bị ngăn chặn ghi nhật ký). JBD cung cấp
phần đệm (pad) hỗn tạp để cung cấp nguyên tử trong vận hành. Do đó, một hệ

22


×