Blog của Đào Anh Thành

Linux file permissions

5 phút đọc

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
LettersDefinition
rCó quyền đọc nội dung file
wViết hoặc chỉnh sửa nội dung file
xThự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ụ:

Hãy để ý 9 ký tự phần khoanh đỏ, đó chính là 'permission group' của file

Đầ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:

rwxrw-r--
usergroupother

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ượngCách hiểu
rwxuserNgười dùng (ở đây mang nghĩa 'owner') thanh_da - có toàn quyền đọc, sửa, và thực thi file.
rw-groupcác thành viên khác trong nhóm developers sẽ có quyền đọc và sửa file.
r--otherNhữ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:

Hoặc có thể dùng lib command &#39;members group_name&#39; 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ợ:

OperatorsDefinition
+Thêm quyền
-Xóa quyền
=Gán quyền

Thao tác như sau:

  1. Đầu tiên gõ chmod <đối_tượng _muốn_chỉnh_sửa>. Ví dụ đối tượng ở đây là group:
chmod g
  1. Ta muốn đối tượng này được THÊM quyền execute:
chmod g+x
  1. 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 readwrite. 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 permissionsBinary
rwx111
r-x101
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 ModeBinaryOctal
---0000
--x0011
-w-0102
-wx0113
r--1004
r-x1015
rw-1106
rwx1117

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.

Loading Comments...