Tìm hiểu về hệ thống quản lý, phân quyền cho file trong linux
File permission
Trong linux, có 3 loại quyền cho file, đó là Read, Write và Execute.
- Read (r): Provides access to open and view the contents
- Write (w) Provides access to modify (or delete) the content or file
- Execute (x) Provides access to run the file as a program
| Letters | Definition |
|---|---|
| r | Có quyền đọc nội dung file |
| w | Viết hoặc chỉnh sửa nội dung file |
| x | Thực thi file, nếu file đó có thể thực thi (*.sh, .v..v..) |
Permission Group
Ta có thể xem permission group của một file trong linux bằng lệnh sau:
ls -l <file-name>
ví dụ:
Đầu tiên, hãy nghĩ về chín ký tự nêu trên như là 3 tập hợp, mỗi tập hợp 3 ký tự. Mỗi tập hợp lần lượt định nghĩa quyền cho một đối tượng cụ thể, lần lượt như sau:
| rwx | rw- | r-- |
|---|---|---|
| user | group | other |
Mỗi một tập hợp rwx định nghĩa những hành động khác nhau được phép làm với file tương ứng. Trong trường hợp với file sayHi.sh như ví dụ trên ảnh, ta có thể hiểu rằng:
| Nhóm quyền | Đối tượng | Cách hiểu |
|---|---|---|
| rwx | user | Người dùng (ở đây mang nghĩa 'owner') thanh_da - có toàn quyền đọc, sửa, và thực thi file. |
| rw- | group | các thành viên khác trong nhóm developers sẽ có quyền đọc và sửa file. |
| r-- | other | Những người khác sẽ chỉ có quyền đọc |
Ví dụ:
Nếu người đang đăng nhập là thanh_da, anh ấy có thể thực thi file như sau:

Giả sử trong nhóm developers có thêm một thành viên nữa:
Thì khi thực thi bằng normal_user, ta kỳ vọng hệ thống sẽ không cho phép vì ngoài thanh_da ra, không ai có quyền thực thi file. Cùng xem kết quả:

Vậy là ta đã thiết lập được kiến thức cơ bản về quyền của file trong linux.
Chỉnh sửa file permission
Ta làm vậy bằng cách thêm hoặc bớt quyền cho một nhóm. Dưới đây là các phép toán hỗ trợ:
| Operators | Definition |
|---|---|
+ | Thêm quyền |
- | Xóa quyền |
= | Gán quyền |
Thao tác như sau:
- Đầu tiên gõ chmod <đối_tượng _muốn_chỉnh_sửa>. Ví dụ đối tượng ở đây là group:
chmod g
- Ta muốn đối tượng này được THÊM quyền execute:
chmod g+x
- Cuối cùng ta chỉ định file nào sẽ chịu tác động:
chmod g+x ./sayHi.sh
Sau thao tác trên, cùng xem lại thay đổi của nhóm quyền của file sayHi.sh
--- TODO: chụp cái ảnh vào đây ---
Ta có thể sửa nhiều nhóm quyền cùng lúc. Ví dụ, nếu bạn muốn xóa hết quyền cho toàn bộ mọi người, bạn làm như sau:
chmod ugo-rwx ./sayHi.sh
Lệnh bên trên sẽ lấy hết quyền đọc (r), ghi (w) và thực thi (x) từ tất cả người dùng (u), nhóm (g) và những người khác (o). Điều này áp dụng cho file sayHi.sh.
Hoặc ta có thể gán nhiều nhóm với nhiều mức quyền khác nhau cùng lúc, ví dụ:
chmod ug+rw,o-x abc.xyz
Như trên là ta đang thêm quyền đọc (r), ghi (w) cho người dùng (u) và nhóm (g); cùng lúc xóa bỏ quyền thực thi (x) cho những người dùng khác (o).
Lệnh sau:
chmod ug=rw,o=x abc.d
GÁN CHÍNH XÁC quyền đọc (r), ghi (w) cho người dùng (u) và nhóm (g); cùng lúc GÁN CHÍNH XÁC quyền thực thi (x) cho những người dùng khác (o).
Điều này có nghĩa là bất kể trước đó user và group có những quyền gì, sau khi chạy lệnh trên sẽ chỉ còn quyền read và write. Tương tự với others, bất kể trước đó có quyền gì thì sau khi chạy lệnh, sẽ chỉ còn execute.
Ví dụ như sau:
--- TODO: thêm ảnh ---
Octal notation
Một set quyền luôn là tập hợp rwx, do vậy ta có thể dùng hệ nhị phân 3-bit để biểu diễn chúng.
Ví dụ:
| File permissions | Binary |
|---|---|
| rwx | 111 |
| r-x | 101 |
| r-- | 100 |
Và mỗi số nhị phân ta lại có thể biểu diễn bằng một số thập phân. Dưới đây là bảng chuyển đổi đầy đủ
| File Mode | Binary | Octal |
|---|---|---|
| --- | 000 | 0 |
| --x | 001 | 1 |
| -w- | 010 | 2 |
| -wx | 011 | 3 |
| r-- | 100 | 4 |
| r-x | 101 | 5 |
| rw- | 110 | 6 |
| rwx | 111 | 7 |
Do vậy ta có thể thay thế operation bằng octal notation. Ví dụ, hai lệnh dưới đây là tương đương:
chmod u=rwx,g=rx,o=r [file_name]
chmod 754 [file_name] # (owner: rwx(7), group: r-x(5), others: r–-(4)).
hoặc
chmod ugo+rwx [file_name] # thêm full quyền cho cả 3 nhóm
chmod 777 [file_name] # tương đương lệnh phía trên
hoặc thậm chí:
chmod ug+rwx,o=rx [file_name]
chmod 775 [file_name]
Việc phân quyền cho file cũng giống như phần quyền cho bất cứ hệ thống nào khác, cần tuân thủ [[Principle of Least Privilege PoLP]] - Nguyên tắc đặc quyền tối thiểu - để giảm tối đa rủi cho cho hệ thống khi có nhiều người cùng thao tác.