Tải bản đầy đủ (.doc) (8 trang)

Hệ thống tập tin của unix pdf

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 (171.32 KB, 8 trang )

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 tin và thư mục đều nằm dưới
thư mục gốc, ngay cả những tập tin biểu tượng cho các ổ đĩa cứng.
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 trọ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 tin 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 tra 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 thê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 tin 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).
Ổ đĩ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 tiên
• /dev/sdb Ổ đĩa cứng SCSI thứ hai
• /dev/fd0 Ổ đĩa mềm đầu tiên
• /dev/fd1 Ổ đĩ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 tin hda1 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 (hda1, 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 ls 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:
P/s: để xem thông tin một file dùng lệnh ls-l <file path>
1. Xác định thông tin các quyền truy cập tập tin
• 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
l Tập tin liên kết (mềm/cứng)

• 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 ứng là r-w-e còn ký hiệu ‘-‘ chứng 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ì
không có nghĩa là có quyền ghi (sửa đổi) file nhưng vì có thể sao chép lại file 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, emacs, … để 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 trình soạn thảo để sửa
chữa file nhưng người dùng có thể dùng lệnh cat >>document.txt để ghi thê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ững file kiểu này được
gọi là script. Quyền thực thi file độc lập với quyền đọc và ghi file. 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 nhưng 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ảy ra trường hợp: có quyền thực thi nhưng 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 U1 có file FileOfU1 đặt trong /home/U1 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/U1 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/U1/FileOfU1 đượ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 <quyền> <file> (viết tắt chmod = change mode)
Có 2 cách biểu diễn <quyề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
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 myfile và chmod u=r,o=x myfile 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, o. Giá trị mỗi chữ số octal biểu diễn một quyền theo bảng sau:
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-l cho một file đã được set UID hoặc GID thì sẽ thấy kí tự x chỉ quyền execute
đã được thay thế bằng kí tự s. Ví dụ:
 -rws–x–x 1 root root 14024 Sep 9 1999 file1
 -rwxr-sr-x 1 root mail 12072 Aug 16 1999 file2
Ở đây file1 đã được set UID, file2 đã được set GID. Khi file1 được thực thi thì user thực thi file1
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 o (tức là
các user không cùng nhóm chủ sở hữu). Ở ví dụ trên nếu tập quyền của file1 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 đó. Nhưng 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 ls –l 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ớ, tiện khi cho
những chương trình thường gọi vì sẽ tiết kiệm được thời gian nạp chương trình vào bộ nhớ mỗi
lần 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 trì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 ls –l 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í
hiệu
Kí tự kí
hiệu
Với file myfile Với thư mục mydir
SUID 4 u+s Một user bất kì thuộc nhóm
o (others) thực thi myfile
như thể là chủ sở hữu của
file
-
SGID 2 g+s Một user bất kì thuộc nhóm
o (others) thực thi myfile
như thể user đó thuộc nhóm
chủ sở hữu của file
File/thư mục con (của thư mục

mydir) có nhóm chủ sở hữu là
nhóm chủ sở hữu của mydir
Sticky bit1 +t
-
File/thư mục con (của thư mục
mydir) được bảo đảm chỉ bị
xóa/sửa đổi bởi chính chủ sở
hữu của file/thư mục con
2. Số liên kết đến tập tin

×