L I N U X
BÀI 5
BẢO MẬT HỆ THỐNG FILE
Bài 5: Bảo mật hệ thống file
Mục tiêu: (cid:0) Hiểu các mức độ phân quyền trên Linux (cid:0) Dùng lệnh phân quyền cho tài khoản
1. Tổ chức hệ thống file trong Linux
1.1. Files 1.1. Files
Một file là một cấu trúc cơ sở được dùng để chứa thông tin trên hệ thống Linux. File là một dãy liên tiếp các byte được chứa trên một thiết bị lưu trữ, thường là đĩa từ.
Chú ý:
VD: Baocao và baocao là 2 tên file khác nhau.
- Linux không coi dấu chấm (“.”) là ký tự ngăn cách giữa tên chính và phần mở rộng như DOS mà nó coi đó như là một ký tự để tạo nên tên file.
- Linux phân biệt chữ hoa và chữ thường trong tên file.
1. Tổ chức hệ thống file trong Linux (tt)
1.2. Thư mục 1.2. Thư mục
Thư mục bao gồm một nhóm file, thư mục giúp người dùng tổ chức các file. Mỗi thư mục có thể bao gồm các thư mục con.
/
usr
etc
dev
home
tmp
binz
lib
user1
user2
Ta có thể mô tả cấu trúc cơ sở cây thư mục của Linux như sau :
tinhoc
toan
Web
Linux
Tôi thích vậy đó, ai biểu anh xóa folder của tôi
Tại sao anh xem nội dung file của tôi ???
Bill Clinton
Bill Gates
2. Bảo mật hệ thống file
2.1. Khái niệm 2.1. Khái niệm
Bảo mật hệ thống file là điều khiển việc truy nhập tới
file và thư mục, nó xác định:
+ Ai là người truy nhập đến một file, thư mục nào đó.
+ Các thao tác nào mà người sử dụng được tiến hành
đối với file và thư mục.
Người chủ file, thư mục sẽ toàn quyền quyết định ai được phép truy nhập với quyền nào đến file và thư mục thông qua việc gán và huỷ quyền truy nhập (permission).
Những đối tượng có thể truy nhập đến file, thư
mục là:
+ Người chủ của file (user).
+ Nhóm chủ của file (group).
+ Những người khác (other).
Ví dụ: $ls -l
- rw-r--r-- 1 u1 g1 37 Feb 24 11:06 file1
Trong đó:
- : chỉ ra kiểu của file.
rw-r--r-- : chỉ ra mode của file (quyền truy nhập).
u1 : chỉ ra người chủ file.
g1 : chỉ ra nhóm chủ file.
2. Bảo mật hệ thống file (tt)
2.2. Các quyền truy nhập 2.2. Các quyền truy nhập Có 3 quyền truy nhập tới mỗi file và thư mục:
- Read r
+ Đối với file : Đọc nội dung file. + Đối với thư mục : hiện danh sách các file và thư mục con trong thư mục.
- Write w
+ Đối với file : Thay đổi nội dung file. + Đối với thư mục : Tạo, xoá, đổi tên file và thư mục con trong thư mục.
- Execute x
+ Đối với file : Chạy các file chương trình. + Đối với thư mục : Có thể chuyển đến thư mục.
Chú ý: Để chạy một file chương trình cần có các quyền read và execute.
2. Bảo mật hệ thống file (tt)
2.3. Mode của file 2.3. Mode của file
Mode của file là một dãy có tổng số 9 ký tự bao gồm
3 cặp, mỗi cặp 3 ký tự để xác định các quyền cho các đối
tượng có thể truy nhập file là: người chủ file, nhóm chủ
file và những người dùng khác trong hệ thống. Mode của
file xuất hiện ngay sau ký tự chỉ kiểu file trong kết xuất
của lệnh ls -l
$ls -l Ví dụ: $ls -l Ví dụ:
- rw-r--r-- 1 u1 g1 37 Feb 24 11:06 file1 - rw-r--r-- 1 u1 g1 37 Feb 24 11:06 file1
Các quyền truy nhập của mỗi đối tượng
như sau: + Người chủ file (u1):
rw
+ Nhóm chủ file (g1): r
Chú ý: Các quyền không được phép trong mode của file ký hiệu là “-”.
+ Những người khác: r
2. Bảo mật hệ thống file (tt)
2.4. Thay đổi quyền truy xuất của file 2.4. Thay đổi quyền truy xuất của file
Ta có thể thay đổi quyền được gán với file hoặc thư
mục bằng lệnh chmod. Ta có thể thực hiện lệnh này theo
chế độ biểu tượng hay tuyệt đối, trong đó chế độ biểu
tượng đơn giản hơn nhưng cho phép điều khiển kém hơn
chế độ tuyệt đối. Lệnh chmod chỉ được thực hiện bởi
người chủ file.
Chế độ biểu tượng Chế độ biểu tượng
(cid:0) Để thay đổi quyền của file hay thư mục ta dùng lệnh chmod với cú pháp chặt chẽ như sau:
#chmod
(cid:0) Trong đó, biểu thức gán quyền mô tả sự
thay đổi quyền đối với file đã chỉ ra cho
các đối tượng.
(cid:0) Thành phần biểu thức bao gồm: Thành phần biểu thức bao gồm:
a) Các toán hạng: là các ký hiệu của các đối tượng được gán quyền và các quyền tương ứng được gán.
+ Các ký hiệu của các đối tượng.
u g o a
user group other all
+ Các ký hiệu quyền + Các ký hiệu quyền readread r r w w writewrite x x
execute execute
b) Các toán tử: là các phép gán quyền.
++ -- ==
thêm thêm bớtbớt bằng bằng
Trong các biểu thức gán quyền, các thành phần nằm liền nhau không có khoảng cách và chỉ cho phép dùng một toán tử duy nhất.
(cid:0)
Ví dụ:
$ ls -l vd.txt
-rw-r--r-- 1 u1 g1 37 Feb 24 11:06 vd.txt
$ chmod g=rw vd.txt $ ls -l vd.txt
-rw-rw-r-- 1 u1 g1 37 Feb 24 11:06 vd.txt
$ chmod go+x vd.txt $ ls -l vd.txt
Lệnh chmod nếu không chỉ ra đối tượng gán quyền,
thì quyền sẽ được gán cho cả 3 đối tượng.
Ví dụ: $ chmod +rwx vd.txt
(cid:0) Để huỷ bỏ tất cả các quyền được gán
cho file, thư mục ta dùng lệnh:
$ chmod =
(cid:0) Khi gán quyền bằng toán tử ‘’=’’ thì chỉ đối tượng được gán bị thay đổi quyền như được chỉ ra, bất kể trước đó họ được đặt quyền gì, các nhóm quyền của người khác cũng không bị ảnh hưởng.
Chú ý:
(cid:0) ký hiệu “-“ trong khối quyền của file chỉ rằng quyền đó không được phép đối với file hay thư mục.
(cid:0) Lệnh #chmod -R
Chế độ tuyệt đối
(cid:0) Chế độ tuyệt đối dùng dãy các số để chỉ các quyền được gán cho file hay thư mục. Khối quyền được biểu diễn bằng 3 số theo thứ tự là: số đầu tiên cho chủ file, số thứ 2 cho nhóm chủ file và số thứ 3 cho những người khác. Mỗi số là tổng 3 giá trị thể hiện quyền đọc, ghi và thực thi đối với file. Cả 3 số được chỉ ra trong cùng một dòng lệnh.
(cid:0) Các số được gán cho quyền tương ứng như
sau:
read = 4 write = 2 execute = 1 không quyền = 0
(cid:0) Các số trong mỗi nhóm quyền của từng đối
tượng (chủ file, nhóm chủ file và người khác) được cộng với nhau, sau đó viết liên tiếp 3 số tạo được liền nhau và dùng để gán quyền.
Ví dụ: để gán quyền cho file vd.txt với khối quyền là
rw-r----x ta thực hiện theo các bước sau:
(cid:0) số biểu diễn quyền gán cho mỗi đối tượng:
(cid:0) Dãy số biểu diễn khối quyền được gán là: 641.
(cid:0) Dùng lệnh chmod để gán quyền cho file.
rw- Người chủ file Nhóm chủ file r-- Những người khác --x : 4+2+0=6 : 4+0+0=4 : 0+0+1=1
(cid:0) Khi đó, quyền truy nhập đến file vd.txt là rw-r----x
#chmod 641 vd.txt
Chú ý:
- Để huỷ bỏ tất cả các quyền đã gán cho file trong chế độ tuyệt đối, ta dùng lệnh:
#chmod 000
ấn định quyền mặc định cho file và thư mục ấn định quyền mặc định cho file và thư mục
(cid:0) Theo mặc định, các file hay thư mục do người dùng tạo ra trong phiên làm việc luôn có khối quyền là rw-r--r-- tương ứng với dãy số quyền là 022.
(cid:0) Ta cũng có thể ấn định lại quyền mặc định đối với file và thư mục được người dùng tạo ra bằng lệnh umask.
(cid:0) Để đặt quyền mặc định ta dùng lệnh Để đặt quyền mặc định ta dùng lệnh với cú pháp sau: umask với cú pháp sau: umask
n1n2n3 $umask n1n2n3 $umask
Trong đó: Trong đó:
- - n1n2n3 là một nhóm 3 chữ số, khi đó dãy số biểu diễn khối quyền sẽ là (7-n1)(7-n2)(7-n3).
(cid:0) Các giá trị đặc biệt trong 3 số n1, n2, n3 của lệnh umask tương ứng với ấn định các quyền như sau:
0: đọc và ghi (và thực thi cho thư mục).
1: đọc và ghi (không thực thi cho thư mục).
2: đọc (và thực thi cho thư mục).
3: đọc (và không thực thi cho thư mục).
4: ghi (và thực thi cho thư mục).
5: ghi (và không thực thi cho thư mục).
6: thực thi.
7: không có quyền gì cả.
Ví dụ: $umask 067
(cid:0) Lệnh này sẽ ấn định quyền mặc định là 710,
tức là:
các file tạo ra sẽ có khối quyền là rw---x---
Chú ý:
Lệnh umask không có tham số sẽ hiện giá trị số của chuỗi quyền
mặc định hiện thời tạo bởi lệnh umask.
Ví dụ: $umask
các thư mục có khối quyền là rwx--x---
022
Bài tập 1:
1. Xem thông tin về quyền hạn trên tập tin
baitho.txt
2. Thêm quyền execute cho user, quyền write và
execute cho group
3. #chmod 644 baitho.txt ~> cho biết quyền hạn
trên tập tin baitho.txt
4. #chmod 764 baitho.txt ~> cho biết quyền hạn
trên tập tin baitho.txt
5. #chmod 777 baitho.txt ~> cho biết quyền hạn
trên tập tin baitho.txt
Bài tập 2:
1. Đăng nhập root
2. Tạo mới tập tin /home/baocao.txt
3. Tạo mới tài khoản nobita
4. Đổi chủ sở hữu của tập tin /home/baocao.txt
là nobita
5. Phân quyền rwxr--r-- cho các đối tượng trên
tập tin /home/baocao.txt
Bài tập 3:
1. Đăng nhập root
2. Tạo nhóm hanhchinh
3. Tạo mới tài khoản u1, u2
4. Bổ sung 2 user trên vào nhóm hanhchinh
5. Tạo mới thư mục /home/common
6. Đổi nhóm sở hữu thư mục /home/common là
nhóm hanhchinh
7. Phân quyền rwx cho nhóm hanhchinh trên thư
mục /home/common
(cid:0) Để phân quyền chi tiết cho từng user
hoặc nhóm ta dùng lệnh setfacl
$setfacl –m u:doremon:r vanban.txt
(cid:0) Để xem sự phân quyền chi tiết của tập
tin, thư mục ta dùng lệnh getfacl
$getfacl vanban.txt
Bài tập 1
1. Tạo cây thư mục sau:
Doremon
Nobita
/ |_____Doremon | | |_____Secret | | | |_____Music | | |_____Data
2. Tạo 2 tài khoản nobita và doremon, mật khẩu: 123456
3. Phân quyền cho Nobita và Doremon có thể tạo, xoá, sửa nội dung của Data
4. Doremon được toàn quyền trên thư mục Doremon
5. Không cho quyền Nobita truy cập vào thư mục Secret
6. Cho phép Nobita được truy cập vào thư mục Music nhưng chỉ được quyền đọc
Bài tập 2
1. Tạo cây thư mục sau:
/ |_____Data | |_____DuLieuChung | |_____Ketoan | |_____Nhansu
2. Tạo group KeToan. Tạo các user: u1, u2, u3, mật khẩu 123456. Đưa các
user này vào group KeToan
3. Tạo group NhanSu. Tạo các user: u4, u5, u6, mật khẩu 654321. Đưa các
user này vào group NhanSu