Tài liệu Hệ thống tập tin của Unix: Hệ thống tập tin của Unix
16 Tháng 3
Hệ thống tập tin của Linux và Unix được tổ chức theo một hệ thống phân bậc tương tự cấu
trúc của một cây phân cấp. Bậc cao nhất của hệ thống tập tin là thư mục gốc, được ký hiệu
bằng gạch chéo “ / ” (root directory). Đối với các hệ điều hành Unix và Linux tấ t các thiết bị
kết nối vào máy tính đều được nhận dạng như các tập tin, k ể cả những linh kiện thiết bị như
Ổ đĩa cứng, các phân vùng đĩa cứng và các ổ USB. Điều này có nghĩa là tấ t cả các tập tín và
thư mục đều nằm dưới thư mục gốc, ngay cả nhũtig tập tin biểu tượng cho các ổ đĩa cúhg.
Nằm dưới thư mục gốc (/) có một loạt các thư mực quan trọng của hệ thống tập tin được
công nhận ở tấ t cả các bản phân phối Linux khác nhau. Sau đây là danh sách các thư mục
thông thường được nhìn thấy dưới thư mục gốc (/) :
• /bin - chứa các ứng dụng quan ữỌng (binary applications),
• /boot - các tập tin cấu hình cho quá trình khởi động hệ thống (boot configuration files),
• /dev - chứa các ...
8 trang |
Chia sẻ: Khủng Long | Lượt xem: 1126 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Hệ thống tập tin của Unix, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Hệ thống tập tin của Unix
16 Tháng 3
Hệ thống tập tin của Linux và Unix được tổ chức theo một hệ thống phân bậc tương tự cấu
trúc của một cây phân cấp. Bậc cao nhất của hệ thống tập tin là thư mục gốc, được ký hiệu
bằng gạch chéo “ / ” (root directory). Đối với các hệ điều hành Unix và Linux tấ t các thiết bị
kết nối vào máy tính đều được nhận dạng như các tập tin, k ể cả những linh kiện thiết bị như
Ổ đĩa cứng, các phân vùng đĩa cứng và các ổ USB. Điều này có nghĩa là tấ t cả các tập tín và
thư mục đều nằm dưới thư mục gốc, ngay cả nhũtig tập tin biểu tượng cho các ổ đĩa cúhg.
Nằm dưới thư mục gốc (/) có một loạt các thư mực quan trọng của hệ thống tập tin được
công nhận ở tấ t cả các bản phân phối Linux khác nhau. Sau đây là danh sách các thư mục
thông thường được nhìn thấy dưới thư mục gốc (/) :
• /bin - chứa các ứng dụng quan ữỌng (binary applications),
• /boot - các tập tin cấu hình cho quá trình khởi động hệ thống (boot configuration files),
• /dev - chứa các tập tin là chứng nhận cho các thiết bị của hệ thống (device files)
• /etc - chứa các tập tín cấu hình của hệ thống, các tập tin lệnh đ ể khởi động các dịch
vụ của hệ thống...
• /home - thư mục này chứa các thư mục cá nhân của những người có quyền truy cập
vào hệ thống (local users’ home directories),
• /lib - thư mục này lưu các thư viện chia sẻ của hệ thống (system libraries)
• /lost+found - thư mục này được dùng để lưu các tập tin không có thư mục m ẹ mà
được tìm thấy dưới thư mục gốc (/) sau khi thực hiện lệnh kiểm ữa hệ thống tập tin
(fsck).
• /media - thư mục này được dùng đ ể tạo ra các tập tin gán (loaded) tạm thời được hệ
thống tạo ra khi một thiết bị lưu động (removable media) được cắm vào như đĩa CDs,
máy ảnh kỹ thuật số ...
• /mnt - thư mục này được dùng để gắn các hệ thống tập tin tạm thời (mounted
filesystems),
• /opt - thư mục dùng dể chứa các phẩn mềm ứng dụng (optional applications) đã được
cài đặt diêm,
• /proc - đây là một thư mục đặc biệt linh động để lưu các thông tin về tình trạng của
hệ thống, đặc biệt về các tiến trình (processes) đang hoạt động,
• /root - đây là thư mực nhà của người quản trị hệ thống (root),
• /sbin - thư mục này lưu lạ i các tập tín thực thi của hệ thống (system binaries)
• /sys - thư mực này lưu các tập tin của h ệ thống (system files),
• /tmp - thư mục này lưu lạ i các tập tin được tạo ra tạm thời (temporary files),
• /usr - thư mục này lưu và chứa những tập tin của các ứng dựng chính đã được cài đặt
cho mọi người dùng (all users),
• /var - thư mực này lưu lạ i tập tin ghi các sô liệu biến đổi (variable files) như các tập
tin dữ liệu và tập tin bản ghi (logs and databases).
— 1—
ROOT
H .
foin
- c
— /étc 1
1 Jtwnf 1
H-i ~ 1
— «DM lị ----- tìMtíkxmi —
1 totnn || ----- Stmlthềtm H
-----1 UIKM>
J -----1
H - 1 -----1 ruviw>
1--- Ivatln tn
—Ị /imp Ị ---- / v a t n o c M .
X ị T -----1 tvmrftoç
1 *•' ầ
\iv*ocaltotn
>\j9€'*xMJ%txn
htÊdkOCflA/fcb
Ổ đĩa và các Partition được xác định theo dạng tập tin có quy ước như sau:
/dev/hda ổ đĩa cứng IDE đầu tiên (chính)
/dev/hdb ổ đĩa cứng IDE thứ hai (thứ cấp)
/dev/sda ổ đĩa cứng SCSI đầu Hên
/dev/sdb ổ đĩa cứng SCSI thứ hai
/dev/fdO 0 đĩa mềm đầu tiên
/dev/fdl Ổ đĩa mềm thứ hai
Trong đó quy tắc phân vùng có đặc điểm khá phức tạp điển hình lấy vd chúng ta có một ổ
cứng IDE chính sẽ có tên tập tin là /dev/had tuy nhiên nếu chúng ta phân vùng ổ đĩa thì sẽ có
quy ước theo mã sô như sau phần vùng chính sẽ có tên tập tín hdal và phân vùng logic sẽ co
tên tập tin là hda5. Hay đơn giản hơn chỉ có thể có 4 phân vùng chính có sô thứ tự từ 1 à 4
(hdal, hda2, hda3, hda4) trong khi đó các phân vùng logic thì bắt đầu từ 5 (hda5,hda6...)
Thông qua lệnh Is chúng ta sẽ có được thông tin của một tập tin trong hệ thống. Ví dụ chứng
ta có thông tin một tập tin như sau:
•rwxr-xr** I root root 191 Apr 14 14:55 named.conf
1 2 3 4 5 6 7
P/s: để xem thông tin một file dùng lệnh ls-1
1. Xác định thông tin các quyền truy cập tập tín
• Dấu đầu tiên xác định loại tập tin
Ký hiệu Ý nghĩa
Tập tin thông thường
b Tập tin đặc biệt Block
c Tập tin đặc biệt ký tự
d Thư mục
1 Tập tin liên kết (mềm/cúlng)
• Chuỗi còn lạ i chia ra 3 đoạn tương ứng với mỗi đoạn là quyền xác định cho chủ sở
hữu, nhóm sử dụng và người dùng khác đối với mỗi đối tượng như thê tổn tại 3
quyền căn bản là read - writer - execute ký hiệu tương Lftig là r-w-e còn ký hiệu
chútig tỏ không có quyền.
Ở trên đã để cập đến 3 loại quyền truy cập đối với file là read, write, execute; cụ thể hơn thì
1. read: quyền đọc file và do đó có thể sao chép lại file. Khi có quyền đọc file thì
khnng ró nghĩa là ró qtiyền ghi (sửa đổi) flip nhuVig vì ró thể sao chép lại fi]p
nên có thể sửa đổi bản sao chép.
2. write: quyền ghi file. Chú ý rằng có thể có quyền ghi mà không có quyền đọc
một file. Ví dụ: có file text “document.txt”. Nêu có quyền đọc và quyền ghi file
nậy thì người dùng có thể dùng trình soạn thảo văn bản vi, em acs,... đ ể hiển
thị toàn bộ nội dung file và tìm những chỗ không vừa ý đ ể sửa chữa. Nêu chỉ
có quyền ghi file mà không có quyền đọc thì người dùng không thể dùng ưình
soạn thảo để sửa chữa file nhưng người dùng có thể dùng lệnh cat
»docum ent.txt để ghi diêm vào cuối file hoặc cat >document.txt để ghi đè
lên toàn bộ nội dung của file.
3. execute: quyền thực thi file. Có hai loại file có thể thực thi được là: (1) file
chứa các lệnh máy mà CPU có thể thực thi luôn được, những file kiểu này gọi
là executable file (2) file text chứa các lệnh cần thực hiện, nhũhg file kiểu này
đượr gọi là script. Quyền thựr thi file độr lập với qnyền đpr và ghi flip. Ví dụ
có file script “Procedure” với quyền thực thi mà không đọc, ghi; người dùng có
thể thực thi các lệnh chứa trong file này nhlftig không thể mở file ra xem các
lệnh đó là gì và cũng không thể thêm bớt, sửa chữa các lệnh trong file này.
Việc xóa, đổi tên một file không được quyết định bởi quyền ghi với file đó mà bởi quyền ghi
với thư mục chứa file đó.
Ba quyền read, write, execute cũng được áp dụng với thư mục nhưng ý nghĩa của chúng thì
khác hoàn toàn:
1. read: quyền đọc một thư mục là quyền liệt kê các file, thư mục con của một
thư mục.
2. write: quyền ghi một thư mục là quyền tạo mới, xóa, đổi tên file và thư mục
con của thư mục. Có thể xảy ra trường hợp: có quyền ghi một file tức là sửa
chữa nội dung của file nhưng lại không có quyền đổi tên, xóa file nếu như
không có quyền ghi với thư mục chứa file đó.
3. execute: quyền thực thi một thư mục là quyền “đi vào” thư mục, chằng hạn
bằng lệnh cd. Có thể xảv ra trường hợp: có quyền thực thi nhulng lạ i không có
quyền đọc một thư mực. Khi đó có thể “cd” một thư mục nhưng lại không thể
ls nó ra.
Khi thư mục khõng có quyến excute thì khõng thể truy cập nội dung các file trong thư mục đó.
Ví dụ: giả sử user UI có file FileOfUl đặt trong /home/Ul muốn chia sẻ với các user khác nên
đã đặt quyền r, w cho file. Tuy nhiên bản thân thư mục /home/Ul khi được tạo ra đã bị mặc
định là không có quyền excute nên các user khác không thể đọc, ghi file /home/Ul/FileOfUl
được.
Chủ sở hữu và root có quyền thay đổi quyền truy cập đối với cả 3 loại đối tượng: chủ sở
hữu (user), nhóm chủ sở hữu (group), những user khác không thuộc 2 loại trên (others).
Lệnh thay đổi quyền truy cập: chmod (viết tắ t chmod = change mode)
Có 2 cách biểu diễn : bằng kí tự hoặc bằng chữ sô
- Cách 1: Biểu diên quyến bằng kí tự: quyến được biểu diễn bằng tổ hợp 3 loại kí tự sau
Đòi tượng Thao tác Quyên truy cập
II: chũ sờhùru (user)
ạ: nhóm chủ sở hừu (group)
o: nhừng user khóna CÌ1Ỉ12 nhóm ch« sở hilru (others)
a: tảt cá các người sir dụng (a = uao)
+
+: thèm quyên mới
bỡt quyên đà cỏ
=: đặt chinh xác quyền +
kliỏng cỏ quyèn
r: read
w: write
x: excute
s: G ID. L'ID
t: sticky bit
Ví dụ:
chmod u+r,o+s myfile
chmod uo=rx,g=- myfile
chmod a=rwx myfile (ó chmod ugo=rwx myfile)
chmod +x myfile (ó chmod u+x,g+x,o+x myfile)
Chú ý: chmod u+r,o+x myíile và chmod u=r,o=x myíile là hai lệnh khác nhau
- Cách 2: Biểu diễn quyền bằng chữ sô octal: dùng 3 chữ sô đ ể biểu diễn quyền của 3 loại
đối tượng u, g, 0. Giá ữị mỗi chữ sô octal biểu diễn một quyền theo bảng sau:
Chừ sò Quvcn
0 khòne cỏ quyên
1 read
2 write
4 execute
Chừ só Quyeu
3 (=1+2) read, write
5 t 1-4) read, execute
6 (=2+4) write, execute
7(=1+2+4) read, write, execute
Ví dụ:
chmod 567 myfile (ó chmod u=rx,g=wx,o=rwx myfile)
chmod 640 myfile (ó chmod u=wx,g=x,o=- myfile)
Ngoài 3 chữ sô cho quyền r, w, X còn có thể có thêm chữ sô cho UID, GID, Sticky bit đứng
đầu như trong lệnh chmod 1640 myfile
SUID, SGID, sticky bit
Ngoài 3 quyền cơ bản là là read, write, execute; còn có 3 quyền đặc biệt khác là setUID,
setGID, sticky bit.
Set UID và Set GID cho file
SUID (set User ID) hoặc SGID (set Group ID) là việc cấu hình cho một file để khi bất kĩ một
user hoặc một process nào thực thi file đó đều có quyền như thể user hoặc process đó là chủ
sở hữu hoặc thuộc nhóm chủ sở hữu của file.
Ví dụ: root sở hữu file “program” (executable file); root đặt quyền execute cho mọi user. Do
đặc tính của program mà khi được thực thi nó cần người thực thi là root. Nêu một normal user
chạy (thực thi) program thì sẽ bị báo lỗi không là root. Do vậy để một user bất kì có thể chạy
được program thì root cẩn set user id cho program.
■ Set user id cho một file: chmod u+s myfile (hoặc dạng tắt chmod +s
myfile)
■ Set group id cho một file: chmod g+s myfile
Nêu dùng lệnh ls-1 cho một file đã được set UID hoặc GID thì sẽ thấy kí tự x chỉ quyền
execute đa được thay thê bằng kí tự s. Ví dụ:
« -rw s-x-x 1 root root 14024 Sep 9 1999 filel
■ -rwxr-sr-x 1 root mail 12072 Aug 16 1999 file2
Ở đây filel đã được set UID, file2 đã được set GID. Khi filel được thực thi thì user thực thi
filel như thể là root. Khi file2 được thực thi thì user thực thi file2 như thể là thuộc nhóm mail.
Việc set UID và set GID chỉ có ý nghĩa khi file được đặt quyền execute cho đối tượng 0 (tức
là các user không cùng nhóm chủ sở hữu). Ớ ví dụ ưên nếu tập quyền của íilel và file2 không
có chữ “x” ở cuối thì việc có chữ “s” là vô nghĩa.
Set GID cho thư mục
Ở trên đã nói về set UID, GID cho file, vớ i thư mục, không có thao tác set UID mà chỉ có thao
tác set GID; Lệnh set GID cho thư mục cũng giống như set GID cho file: chmod g+s mydir
nhưng ý nghĩa của nó thì khác hẳn.
Khi một file/thư mục (con) được tạo mới trong một thư mục cha, theo mặc định file/thư mục
đó có nhóm chủ sở hữu là primary group của user tạo ra file/thư mục đó. Nhuhg nếu thư mục
cha được set GID thì mọi file/thư mục con của thư mục đó khi được tạo mới sẽ có nhóm chủ
sở hữu chính là chủ sở hữu của thư mục.
Việc set GID cho thư mục rấ t hữu ích như ở ví dụ sau. Giả sử hệ thống có user Lan, Thanh,
Ba cùng làm việc ở phòng kê toán và ba user này được root đặt thuộc cùng một group là
AccountDepart. Root tạo cho ba người một thư mục dừng chung là SharedDir để ba người
chia sẻ công việc với nhau; ShareDir có nhóm chủ sở hữu là AccountDepart. Nêu root không
set GID cho thư mục ShareDir, thì khi Lan tạo một file, theo m ặc định file đó có nhóm chủ sở
hữu là primary group của Lan tức là group có tên cũng là Lan. Lúc đó user Thanh, Ba vì không
thuộc về group Lan nên cũng chỉ có quyền như những người khác không thuộc phòng kê toán
(không thuộc group AccountDepart). Đ ể giải quyết bất tiện này hoặc mỗi lẳn tạo file, Lan
phải đặt lạ i nhóm chủ sở hữu của file đó thành AccountDepart (bằng lệnh chgrp); hoặc đơn
giản hơn là root chỉ việc set GiD cho thư mục ShareDir. Khi đó mọi file, thư mục con mà Lan,
Thanh, Ba tạo ra trong ShareDir đều có nhóm chủ sở hữu là AccountDepart. Mọi người trong
phòng kê toán (thuộc group AccountDepart) sẽ có quyền với một file nào đó của phòng khác
hẳn với những người không thuộc phòng kê toán.
Một thư mục khi được set GID, ở vị trí xuất hiện chữ “x ” thứ hai trong tập quyền của nó sẽ
có chữ “s”
Ví dụ lệnh Is -1 cho một thư mục đã được set GID
■ drwxrwsr-x 2 root AccountDepart 1674 Apr 15 08:05 ShareDir
Sticky bit
Bit này chỉ hệ thống biết sau khi dừng chương trình cẩn lưu lại nó trong bộ nhớ, ưện khi cho
những chương trình thường gọi vi sẽ tiết kiệm được thời gian nạp chương trình vào bộ nhớ
mỗi lan chạy.
Bit này còn quy định mọi người dùng có quyền write trên nó, nhưng chỉ có chủ sở hữu mới có
quyén xóa nó.
Đối với file, sticky bit thường chỉ được dùng với các thực thi thôi và thường thì chỉ có root
hoặc các users có quyền hạn cao mới được bật hay tẳ t sticky bit cho file! Khi một file thực thi
có sticky bit được bật, file này sẽ được nạp vào swap-space(không gian swap) của Unix đ ể có
thể chạy nhanh. Bạn hãy để ý, các chương trình như vi, vim, pico, pine thường được bật
sticky bit vì người dùng thường sử dụng các chương ưình này thường xuyên mà!
Đối với thư mục, Khi nhiều người cùng có quyền write với một thư mục tức là có quyền tạo
mới, xóa, đổi tên file, thư mục con của thư mục đó thì xảy ra vấn đề: một file được tạo trong
thư mục bởi người này nhưng người khác lại có quyền xóa hoặc sửa chữa. Đ ể đảm bảo mọi
file/thư mục con của một thư mục X chỉ bị xóa hoặc sửa đổi bởi chỉ người chủ sở hữu của
file/thư mục con đó (và dĩ nhiên cả root) thì sticky bit cho thư mục X cắn được thiết lập.
Đặt sticky bit cho một thư mục: chmod +t mydir
Một thư mục khi đã được đặt sticky bit thì kí tự “x” cuối cùng trong tập quyền của thư mục
đó sẽ được thay thê bằng kí tự “t”.
Ví dụ: lệnh Is -1 cho một thư mục
■ drwxrwxrwt 13 root root 4096 Apr 15 08:05 tmp
Thư mục /tmp trong Linux được mặc định đặt sticky bit.
Kí hiệu SUID, SGID, Sticky bit bằng chữ số
Ba quyến đặc biệt SUID, SGID, Sticky bit có thể được kí hiệu bằng chữ sô 4, 2 ,1 và được
đặt trước 3 chữ sô kí hiệu cho 3 quyền cơ bản r, w, X.
Ví dụ 1: chmod 1457 myDir ó chmod u=x,g=rx,o=rwx,+t myDir
Chú ý: Không thể đảo +t lên trước chuỗi u=x,g=rx,o=rwx được, đây là qui ước.
Chữ sô 1 ở đây là chỉ +t chứ không phải quyền +r.
Ví dụ 2: chmod 6777 myFile ó chmod ugo=rwx,u+s,g+s myFile
Tổng kết lạ i về quyền đặc biệt:
Quyền Chữ sô kí Kí tự kí v ớ i file myfile v ớ i thư mục mydir
hiệu hiệu
SUID 4 u+s Một user bất kĩ thuộc
nhóm 0 (others) thực thi
myfile như thể là chủ sở
hưu của file
SGID 2
Sticky bit 1
g+s Mot user bat ki thuoc File/thu' muc con (cua thli muc
nhom o (others) th lit thi mydir) co nhom chu sd hull la
myfile nhlf the user do nhom chu sd huti cua mydir
thuoc nhom chu sd huti
cua file
+t File/thu' muc con (cua thu" mlic
mydir) dlTOc bao dam chi bi
xoa/sLTa doi bdi chinh chu s d
huu clla file/thlT mile con
2. So lien ket den tap tin
Các file đính kèm theo tài liệu này:
- bai_5_he_thong_thu_muc_va_tap_4046.pdf