Linux Lab 4: Phân quyền cho user, tập tin, thư mục

pn799

Administrator
Nội dung

1. Cấu trúc hệ thống tập tin
2. Lệnh thay đổi quyền chủ sở hữu (Owner)
3. Lệnh thay đổi quyền nhóm chủ sở hữu (group)
4. Lệnh thay đổi quyền (đọc, ghi, thực thi) của tập tin thư mục
5. Quyền mặc định (default permissions)
6. Quyền đặc biệt

1. Cấu trúc hệ thống tập tin
Tập tin trong Linux được chia ra làm 3 loại chính:
+ Tập tin chứa dữ liệu bình thường.​
+ Tập tin thư mục.​
+ Tập tin thiết bị.​
Ngoài ra Linux còn dùng các Link (hard-link, soft-link) và Pipe như là các tập tin đặc biệt.
Screenshot_2.png
Các thông tin từ trái sang phải của phần thể hiện ở trên sẽ như sau:
- Cột 1 ("-rw-r--r--" hoặc "drwxr-xr-x"): Chỉ ra quyền truy cập của tập tin hay thư mục.

+ Ký tự đầu tiên ("-" trong ("-rw-r--r--" hoặc "d" trong "drwxr-xr-x") chính là loại tập tin, thư mục.​
-Tập tin thông thường
bThiêt bị ngoài vi dạng block (như ổ đĩa cứng)
cThiết bị ngoại vi dạng ký tự (như bàn phím)
dThư mục
lTập tin liên kết

+ Các ký tự tiếp theo trong cột đầu tiên ("rw-r--r--" trong ("-rw-r--r--" hoặc "rwxr-xr-x" trong "drwxr-xr-x" chính là quyền của tập tin thư mục. Chú ý là quyền này được chia thành 3 nhóm. 1 nhóm gồm 3 ký tự.​
Owner:
user chủ sở hữu
Group:
group chủ sở hữu
Other:
rw-r--r--rw-r--r--
rwxr-xr-xrwxr-xr-x

Theo ví dụ "rw-r--r--" thì user chủ sở hữu có quyền rw, nhóm chủ sở hữu và other có quyền r.
Nói cách khác, sẽ có 3 đối tượng chính là {owner, group, other} và mỗi đối tượng ứng với 3 quyền cụ thể {read, write, execute}.

Quyền read cho phép đọc nội dung của tập tin. Đối với thư mục, quyền đọc cho phép di chuyển vào thư mục và xem nội dung của thư mục.
Quyền write cho phép thay đổi nội dung hay xóa tập tin. Đối với thư mục, quyền write cho phép tạo, xóa, thay đổi tên các tập tin trong thư mục không phục thuộc vào quyền cụ thể của tập tin trong thư mục. Như vậy, quyền write của thư mục sẽ vô hiểu hóa các quyền truy cập của tập tin trong thư mục.
Quyền execute cho phép gọi chương trình lên bộ nhớ bằng cách nhập từ bàn phím tên của tập tin. Đối với thư mục, có thể vào thư mục bởi lệnh cd nếu có quyền thực thi với thư mục.

0 hoặc --Không có quyền
4 hoặc r--Quyền đọc
2 hoặc -w-Quyền ghi
1 hoặc --xQuyền thực thi

Song song với các ký hiệu miêu tà bằng ký tự ở trên, quyền hạn truy cập còn có thể biểu diễn dưới dạng 3 số. Nếu tính từ bên trái qua thì số đầu tiên đại diện cho quyền của Owner, số thứ hai đại diện cho quyền của Group, số thứ 3 đại diện cho quyền Other. Mỗi số là một nhóm 3 bit. Quyền hạn cho từng loại người dùng sử dụng một số có 3 bit tương ứng cho 3 quyền read, write và execute. Theo đó nếu cấp quyền thì bit đó là 1, ngược lại là 0 (không cấp quyền). Giá trị nhị phân của số 3 bit này xác định các quyền cho nhóm người đó.

Bit 2Bit 1Bit 0
ReadWriteExecute

Cụ thể hơn khi cấu hình, có thể chuyển đổi giữa thập phân, nhị phân. Bảng sau sẽ chỉ ra điều này:
Thập phânNhị phânQuyềnÝ nghĩa
0000---Không có mọi quyền
1001--xQuyền thực thi
2010-w-Quyền ghi
3011-wxGhi và thực thi
4100r--Quyền đọc
5101r-xĐọc và thực thi
6110rw-Đọc và ghi
7111rwxToàn quyền

2. Lệnh thay đổi quyền chủ sở hữu (Owner)

Cấn chú ý là các lệnh liên quan đến thay đổi quyền sở hữu thì phải thực hiện trên user chủ sở hữu trên chính tập tin hay thư mục đó hoặc user root.
Cú pháp:​
[root@localhost Desktop]#chown [user] [tập tin thư mục]

Ví dụ: logon bằng user root và tạo file test.txt. test.txt. Thay đổi quyền sở hữu file test.txt cho user u2.
Screenshot_4.png
Nếu muốn thay đổi chủ sở hữu cho một thư mục và các thư mục con bên trong thì dùng option -R cho lệnh chown.
Ví dụ: logon bằng user root và tạo cấu trúc sau /teo/ti/xyz.txt. Thay đổi quyền sở hữu /teo cho user u2.
Screenshot_5.png
3. Lệnh thay đổi quyền nhóm chủ sở hữu (group)

Cú pháp:
[root@localhost Desktop]#chgrp [nhóm] [tập tin thư mục]
Ví dụ: thay đổi nhóm sở hữu của /test.txt cho nhóm kinhdoanh
Screenshot_6.png
Tương tự như lệnh chown thì nếu muốn thay đổi chủ sở hữu cho một thư mục và các thư mục con bên trong thì dùng option -R cho lệnh chgrp.
Ví dụ: thay đổi nhóm sở hữu của /teo/ti/xyz.txt cho nhóm kinhdoanh
Screenshot_7.png

4. Lệnh thay đổi quyền (đọc, ghi, thực thi) của tập tin thư mục
Cú pháp:
[root@localhost Desktop]#chmod [+ quyền theo ký tự] [tập tin thư mục]
Hoặc
[root@localhost Desktop]#chmod [quyền theo số thập phân] [tập tin thư mục]
Ví dụ 1: Kiểm tra quyền hiện tại của /test.txt và thêm quyền thực thi cho /test
Screenshot_8.png
Ví dụ 2: Kiểm tra quyền hiện tại của /teo/ti/xyz.txt và sửa quyền thành 750 cho /teo/ti/xyz.txt. Quyền 750 nghĩa là user chủ sở hữu có đọc, ghi và thực thi, group chủ sở hữu có quyền đọc và thực thi, còn other thì không có quyền.
Screenshot_9.png

5. Quyền mặc định (default permissions)

Umask (user mask) được sử dụng để kiểm soát quyền mặc định của các files, thư mục mới khi nó được tạo ra. Có thể gán umask mặc định trong /etc/bashrc hoặc /etc/profile cho tất cả các users. Phần lớn các distro đều gán là 022 hoặc 002. Để gán umask cho một user xác định nào đó, bạn có thể chỉnh sửa etc/bashrc của user đó.

Thực hiện mở file /etc/bashrc bằng cat hoặc vi:
Screenshot_10.png

Trong Linux, khi một file hay một thư mục được tạo ra thì các quyền hạn truy cập đối với chúng là (read, write, execute) cho các chủ thể (owner, group, other) sẽ được xác định dựa trên hai giá trị là quyền truy nhập cơ sở (base permission) và mặt nạ (mask). Đối với thư mục, quyền truy cập cơ sở là 0777(rwxrwxrwx), còn đối với files là 0666 (rw-rw-rw).

Giá trị “mask” được thiết lập nhờ lệnh umask (quan sát hình ở trên). Tất cả các file và thư mục được tạo ra sau đó sẽ chịu ảnh hưởng của giá trị mask mới.

Quyền truy cập chính thức được tính bằng cách lấygiá trị nhị phân của Base permission" "AND" dạng biểu diễn bù 1 của mask" <=> "quyền truy cập mặc định" AND "(NOT (Giá trị umask))".

Ví dụ:
Bash permission của file: 666 = 110110110
umask: 022 = 000010010
NOT (umask) = NOT (000010010 ) = 111101101
110 110 110 AND 111 101 101 = 110 100 100 = 644.
Cũng có thể tính quyền truy cập chính thức đơn giản hơn bằng cách lấy Bash permission – umask (666 – 022 = 644). Nhưng chỉ đúng với thư mục.
Còn với file thì Bash permission – umask. Sau đó số nào chẵn giữ nguyên, số nào lẻ thì giảm đi 1.
Nếu giá trị umask mặc định cho user thường là 002 thì quyền hạn truy cập mặc định cho thư mục là 775 và file là 664.
Còn nếu giá trị umask mặc định cho user thường là 0022 thì quyền hạn truy cập mặc định cho thư mục là 755 và file là 644.

6. Quyền đặc biệt

Ngoài các quyền cho Owner, Group, Other thì còn có các quyền đặc biệt. Các quyền đặc biệt này bap gồm: SUID (Set User ID), SGID (Set Group ID), Sticky bit.

SUIDSGIDStickyOwnerOwnerOwnerGroupGroupGroupOtherOtherOther
  • SUID (Set User ID)
SUID (Set User ID): Nếu SUID bit được thiết lập cho một ứng dụng, những file có thể thực thi bằng người nào đó, điều này có nghĩa là một người dùng khác không phải là chủ sở hữu của ứng dụng cũng có thể sử chạy như chính chủ sở hữu. Hãy xem một ví dụ:
  • SGID (Set Group ID)
SGID (Set Group ID) Bit: SGID bit rất hữu ích khi phải trao quyền truy cập directory cho một nhóm các users trong 1 group. Khi SGID bit được kích hoạt trên 1 directory, toàn bộ file trong directory cấp dưới được tạo bởi bất cứ người dùng nào đều có group permission giống với parent directory.
  • Sticky bit
Một khi sticky bit được kích hoạt, chỉ owner của file đó mới có thể remove hoặc rename file, bất chấp những người sử dụng khác có full permission trên file đó

QuyềnCấu hình theo ký tựCấu hình thep số
SUIDchmod +s [tên file]chmod 4XXX [tên file]
SGIDchmod +g [tên file]chmod 2XXX [tên file]
Sticky bitchmod +t [tên file]chmod 1XXX [tên file]
 

Attachments

Last edited:
Top