Hệ Thống File
(File System)
Hệ thống tệp (File System)
•
Cấu trúc cây duy nhất:
–
Một gốc duy nhất: (/)
–
Các nút (node): thư mục hoặc file
–
Các lá: file
•
Xác định một phần tử:
–
Tuyệt đối: đường dẫn đầy đủ bắt đầu từ gốc
(/)
Vd: /home/k49/prog.c
–
Tương đối
Một số thư mục đặc biệt
•
Thư mục gốc /root
–
Thư mục riêng của siêu người dùng root.
–
Lưu trữ các file tạm thời, nhân Linux và các
file nhị phân quan trọng
•
Thư mục /bin: chứa các file khả thi
•
Thư mục /dev: chứa các trình điều khiển
thiết bị
•
Thư mục /etc: chứa các file cấu hình hệ
thống
Một số thư mục …(tiếp)
•
Thư mục /lib
•
Thư mục /lost+found: chứa các file được
khôi phục khi có lỗi
•
Thư mục /mnt: chứa các kết nối tới đĩa
cứng, đĩa mềm
•
Thư mục /tmp
•
Thư mục /boot
VFS (Virtual File System)
Hệ thống tệp - Cấu trúc nội tại
Hệ thống tệp - Cấu trúc nội tại
•
Mọi file trong Linux bao gồm
–
Các khối dữ liệu chứa nội dung file
–
Một Inode (Index Node)
•
Được nhân hệ thống cấp phát khi file được tạo
mới
•
Chứa thông tin về địa chỉ các khối chứa dữ liệu file
–
Có một hoặc nhiều tên
•
Tên file và chỉ số Inode là hai trường của một phần
tử của thư mục
Hệ thống tệp - Cấu trúc nội tại
•
Type: Xác định kiểu file
–
File thông thường
–
Thư mục
–
Kí tự/Khối
–
0 - not used
•
Perms: Xác định quyền truy nhập
cho
–
Người sở hữu
–
Nhóm sở hữu
–
The other remain.
•
Links:Số lượng liên kết với Inode
•
Size: Kích thước file (byte)
•
Timestamps
–
Thời điểm file được tạo
–
Thời điểm file được sửa đổi
–
Thời điểm truy nhập
•
Bảng địa chỉ (13 phần tử)
Thư mục - Cấu trúc
Thư mục – Lệnh cơ bản
•
Tạo thư mục : mkdir <dir_name>
•
2 thư mục con mặc định : = cha, . = chính
mình
•
Lệnh cd : về thư mục cha
•
Xoá thư mục : rmdir <dir_name>
•
Thư mục phải rỗng
•
Liệt kê thư mục : ls <dir_name>
•
Tuỳ chọn -a, -l,
•
Thiết bị ngoại vi (device)
•
Như một tệp (user view)
–
Một lá trong cây FS (trong danh mục /dev)
–
Cùng thuộc tính (chủ nhân, quyền,…)
•
Hai loại ngoại vi :
–
Block
–
ký tự
Ngoại vi block
•
Một số đặc trưng:
–
Đơn vị chuyển dữ liệu cố định: block (512B, 1KB,
4KB )
–
Truy nhập thẳng (block n˚i)
–
Hệ thống ghi nhớ mọi trao đổi trong bộ nhớ
–
Có thể tạo lập hệ thống file
•
Truy nhập dữ liệu qua 2 bước :
–
Ví dụ : đọc (read) :
•
chuyển dữ liệu vào bộ nhớ hệ thống (cache buffers)
•
chép dữ liệu vào không gian
Ngoại vi ký tự
•
Tất cả ngoại vi không phải loại block :
–
Trao đổi thông tin khuôn dạng bất kỳ
–
Truy nhập tuần tự
–
Hệ thống không ghi lại trao đổi
–
Không thể tạo hệ thống tệp
–
Ví dụ : terminals, máy in, bàn phím, chuột,
•
Hai kiểu đọc:
–
Kiểu dòng (line):
•
Các ký tự (dòng) được chuyển sau một ký tự quy định (New
Line)
–
Kiểu thô (raw):
•
Đọc từng từ
Ngoại vi giả (pseudo devices)
•
Phần tử được quản lý như những ngoại vi
(có driver) song không gắn với một phần
tử vật lý
•
/dev/null: "thùng rác“
•
/dev/tty: terminal gắn với các
Liên kết (Link)
•
Link = (tên,chỉ số
inode) trong một thư
mục
•
Cho phép tạo một link
mới từ link cũ
•
Hai loại liên kết được
tạo
–
Hard Link
–
Soft Link
Liên kết – Hard Link
•
Là một tên mới cho một file đang tồn tại
•
Không có sự phân biệt giữa file gốc và file
liên kết
•
Cùng chia sẻ một Inode
•
Không thể tạo liên kết cứng tới thư mục
•
Không thể link giữa hai hệ thống file khác
nhau
Liên kết – Soft Link
•
Con trỏ chỉ dẫn tới một file hoặc thư mục
•
Các thao tác (mở, đọc, ghi)
–
Được thực hiện trên file liên kết
–
Tự động tham chiếu và thực hiện trên file đích
–
“Xóa”: chỉ xóa trên file liên kết
•
Cho phép thiết lập liên kết giữa các hệ
thống file
•
Xoá source => truy cập link -Not OK!
Lệnh tạo liên kết
•
ln [tùy-chọn] <đích> [tên mới]
–
-d, -F, directory: Tạo liên kết cứng đến thư
mục
–
-s, symbolic: tạo liên kết mềm
•
#ln –s /usr/doc/g77/DOC g77manual.txt
Quyền truy nhập
•
Mọi phần tử của FS đều được gán cho 3 quyền
–
Đọc r (read)
–
Ghi w (write)
–
Chạy x (execute)
•
Cho 3 hạng NSD
–
Chủ nhân (user)
–
Nhóm chủ nhân (group)
–
Còn lại (others)
•
Chú ý:
–
Với thư mục, quyền x
•
Cho phép di vào, di ra thư mục
Kiểm soát truy nhập
•
Căn cứ vào UID và GID của tệp và tiến
trình
–
Tiến trình mang UID và GID của người sử
dụng
–
UID và GID của tệp trong inode
•
NOTE:
–
UID đăng nhập (NSD) vs. UID thực (tiến trình)
•
super-user (root, UID=0) có tất cả các
quyền
Kiểm soát truy nhập
•
Tạo mới một tệp, đổi tên (mv) và xóa tệp
(rm)
–
Kiểm soát qua quyền w của thư mục
•
Xóa tệp phụ thuộc vào quyền của tiến
trình trên thư mục chứ không phải trên
bản thân tệp
Kiểm soát truy nhập
(Tệp nhị phân)
•
Bit SUID (S)
–
Chạy chương trình với UID (real) của chủ nhân
chương trình.
•
Bit SGID (s)
–
Chạy chương trình với GID của group của chủ nhân
chương trình
•
Sticky bit (t)
–
Giữ lại ảnh trong RAM sau khi kết thúc
–
For directory
•
Only the owner of the file in that directory can delete a file
Lệnh liên quan quyền truy nhập
•
Lệnh umask <quyền_truy_nhập>
–
Xác định những quyền bị dỡ bỏ khi tạo tệp
hoặc thư mục
–
Ví dụ:
•
umask 022 tức là w—w-
–
Các tệp mới sẽ có quyền rwx r-x r
•
umask 077 tức là rwx rwx
–
Các tệp mới sẽ có quyền rwx rwx
Lệnh liên quan … (tiếp)
•
chown [tùy_chọn] [chủ] [.nhóm] <file …>
–
Thay đổi quyền sở hữu của file, thư mục
–
[tùy_chọn]
•
-R, recursive: thực hiện đệ quy
•
chgrp [tùy_chọn] [nhóm|
reference=nhómR] <file …>
–
Thay đổi nhóm sở hữu của file, thư mục
–
[tùy_chọn]
•
-R, recursive: thực hiện đệ quy