Phân quyền trong Linux và các lệnh cơ bản

Linux là hệ điều hành cho phép nhiều người dùng cùng sử dụng một máy tính và mỗi người dùng có thể chạy nhiều chương trình khác nhau cùng lúc. Vậy, làm thế nào để đảm bảo rằng mỗi người dùng chỉ có thể truy cập và thay đổi dữ liệu của chính mình? Làm thế nào để phân chia tài nguyên hệ thống một cách hợp lý? Sau đây, hãy cùng TTnguyen tìm hiểu phân quyền trong linux ubuntu nhé!

Xem thêm:

Cơ chế phân quyền người dùng trong Linux

Tất cả các tập tin và thư mục trên Linux đều có một người dùng sở hữu nó. Người dùng này có toàn quyền truy cập vào tập tin hoặc thư mục, bao gồm quyền đọc, ghi và thực thi.

Bạn cũng có thể thay đổi quyền truy cập của người dùng khác đối với tập tin hoặc thư mục. Điều này cho phép bạn kiểm soát những người có thể đọc, ghi hoặc thực thi tập tin hoặc thư mục.

Quyền truy cập của tập tin cũng có thể cho bạn biết liệu tập tin đó có phải là một chương trình hay không. Nếu tập tin có quyền thực thi, thì bạn có thể chạy nó như một chương trình.

Nhóm sở hữu

Trong Linux có 3 nhóm sở hữu chính:

  • Owner: là người dùng sở hữu file hoặc thư mục. Người dùng này có toàn quyền truy cập vào file hoặc thư mục, bao gồm quyền đọc, ghi và thực thi.
  • Group: là nhóm mà người dùng sở hữu file hoặc thư mục. Các thành viên của nhóm này cũng có quyền truy cập vào file hoặc thư mục, nhưng quyền truy cập thấp hơn quyền của chủ sở hữu.
  • Others: là những người dùng và nhóm không thuộc hai nhóm trên. Các thành viên của nhóm này có quyền truy cập thấp nhất vào file hoặc thư mục.

Để dễ hiểu hơn, bạn có thể nghĩ về quyền truy cập file trên Linux như sau:

  • Owner: là chủ nhà. Chủ nhà có thể làm bất cứ điều gì họ muốn với ngôi nhà của họ.
  • Group: là những người thuê nhà. Người thuê nhà có thể sử dụng ngôi nhà, nhưng họ không có quyền như chủ nhà.
  • Others: là những người qua đường. Những người qua đường chỉ có thể nhìn vào ngôi nhà, nhưng họ không thể vào trong.

Quyền đọc, ghi, thực thi (read, write, execute)

– Quyền đọc (Read): cho phép bạn đọc nội dung của tập tin. Đối với thư mục, quyền đọc cho phép bạn di chuyển vào thư mục và xem nội dung của thư mục.

Quyền viết (Write): cho phép bạn thay đổi nội dung hay xoá tập tin. Đối với thư mục, quyền viết cho phép bạn tạo ra, xóa hay thay đổi tên các tập tin trong thư mục không phụ thuộc vào quyền cụ thể của tập tin trong thư mục. Như vậy, quyền viết 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 và bạn nên để ý tính chất này.

Quyền thực thi (Execute): cho phép bạn 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, bạn chỉ có thể vào thư mục bởi lệnh cd nếu bạn có quyền thực thi với thư mục.

Cách hiển thị quyền truy cập

Để hiển thị quyền truy cập trong Linux, bạn sử dụng lệnh ls -l:

hiển thị quyền truy cập trong Linux

– Cột đầu chỉ ra quyền hạn truy cập của tập tin, ví dụ trên, các ký tự -rw-rw-r– biểu thị quyền truy cập của tập tin ttnguyen.txt.

– Ký tự đầu tiên của quyền là ký tự “-” cho biết đó là một tập tin bình thường. Nếu ký tự d thay thế cho dấu “-“ thì nó sẽ là một thư mục. Ngoài ra còn có c cho thiết bị ngoại vi dạng ký tự (như bàn phím), b cho thiết bị ngoại vi dạng block (như ổ đĩa cứng).

– Chín ký tự tiếp theo chia thành 3 nhóm, cho phép xác định quyền của 3 nhóm: người sở hữu (owner), nhóm sở hữu (group) và những người còn lại (other). Mỗi cặp ba này cho phép xác định quyền đọc, viết và thực thi theo thứ tự kể trên. Quyền đọc viết tắt là “r” ở vị trí đầu, quyền viết viết tắt bằng “w” ở vị trí thứ hai và vị trí thứ ba là quyền thực thi ký hiệu bằng chữ “x”. Nếu một quyền không được cho thì tại vị trí đó sẽ có ký tự “-”.

Quyền hạn của tập tin

Trong trường hợp của tập tin ttnguyen.txt, người sở hữu có quyền rw tức là đọc và viết. Nhóm sở hữu có quyền rw và những người còn lại chỉ có quyền đọc tập tin (read-only). Bên cạnh đó, bạn còn biết ttnguyen.txt không phải là một chương trình.

Cách phân quyền theo số

Song song với cách phân quyền 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ố. 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à excute. Theo đó nếu cấp quyền thì bit đó là 1, ngược lại là 0. 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 2 bit 1 bit 0
read write execute

Theo cách tính số thập phân, bạn cũng có thể xác định số quyền hạn bằng cách tính tổng giá trị của các quyền. Theo quy định trên ta có giá trị tương ứng như sau:

Quyền Giá trị
Read permission 4
Write permission 2
Execute permission 1

Ví dụ: Nếu có quyền:

  • read và excute thì số của quyền là : 4+1 =5.
  • read , write và excute : 4+2+1=7.
  • Tổ hợp của 3 quyền trên có giá trị từ 0 đến 7.

Bảng giá trị phân quyền truy cập file trong linux

Giá trị Ký tự Quyền truy cập
0 không có quyền
1 –x execute
2 -w- write-only (race)
3 -wx write và execute
4 r– read-only
5 r-x read và execute
6 rw- read và write
7 rwx read, write và execute

Như vậy khi cấp quyền trên một tập tin/thư mục, bạn có thể dùng số thập phân gồm 3 con số. Số đầu tiên miêu tả quyền của sở hữu, số thứ hai cho nhóm và số thứ ba cho những người còn lại.

Ví dụ: Một tập tin với quyền 751 có nghĩa là sở hữu có quyền read, write và execute bằng 4+2+1=7.

Nhóm có quyền read và execute bằng 4+1=5 và những người còn lại có quyền execute bằng 1.

Chú ý: Người sử dụng có quyền đọc thì có quyền copy tập tin. Khi đó, tập tin sao chép sẽ thuộc sở hữu người làm copy.

Các lệnh phân quyền trong linux

Thay đổi quyền với chmod

chmod là viết tắt của change mode dùng để thay đổi quyền của một thư mục hay file trên Linux. Chỉ có chủ sở hữu và superuser mới có quyền thực hiện các lệnh này.

Gán quyền với ký tự:

Cú pháp của lệnh: chmod [nhóm-người-dùng] [thao-tác] [quyền-hạn] [tên-tập-tin/thư-mục].

Nhóm người dùng Thao tác Quyền
u – user + : thêm quyền r – read
g – group – : xoá quyền w – write
o – others = : gán ngang quyền x – execute
a – all

Ví dụ: Gán quyền trên tập tin myfile

Gán thêm quyền write cho group : $ chmod g+w myfile

Xóa quyền read trên group và others : $ chmod go-w myfile

Cấp quyền x cho mọi người:
$ chmod ugo+x myfile hoặc
$chmod a+x myfile hoặc
$ chmod +x myfile

Gán quyền qua 3 chữ số định quyền

Ngoài cách gán quyền trên, chúng ta cũng có thể gán quyền trực tiếp thông qua 3 chữ số xác
định quyền như sau :

Cú pháp của lệnh: chmod [giá-trị-quyền] [tên-tập-tin].

Quyền Lệnh
-wrxr-xr-x chmod 755 myfile
-r-xr–r– chmod 522 myfile
-rwxrwxrwx chmod 777 myfile

Phương pháp này có ưu điểm là dễ sử dụng và kết quả không phụ thuộc vào quyền truy cập hiện tại của tệp. Ví dụ, thay vì phải nhớ các ký tự đại diện cho từng loại quyền như -wrxr-xr-x thì bạn chỉ cần nhớ số 755 là đủ.

Thay đổi quyền với lệnh chown

Lệnh chown dùng để thay đổi người sở hữu trên tập tin, thư mục

Cú pháp:

chown [tên-user:tên-nhóm] [tên-tập-tin/thư-mục].

chown –R [tên-user:tên-nhóm] [thư-mục]

Dòng lệnh cuối cùng với tùy chọn –R (recursive) cho phép thay đổi người sở hữu của thư mục <tên_thư_mục> và tất cả các thư mục con của nó. Điều này cũng đúng với lệnh chmod, chgrp.

Thay đổi quyền với lệnh chgrp

Lệnh chgrp dùng để thay đổi nhóm sở hữu của một tập tin, thư mục.

Cú pháp: chgrp [nhóm-sở-hữu] [tên-tập-tin/thư-mục].

Tổng kết

  • Có 3 nhóm sở hữu: Owner, Group, Others.
  • Có 3 quyền truy cập file: Read, Write, Execute ứng với ký tự r, w, x và ứng với các số 4, 2, 1.
  • Cách hiển thị quyền: ls -l.

Hy vọng với bài viết trên bạn đã nắm được một số kiến thức cơ bản về phân quyền trong môn quản trị linux. Cảm ơn bạn đã tham khảo trên ttnguyen.net.

Nguyễn Tiến Trường

Mình viết về những điều nhỏ nhặt trong cuộc sống, Viết về câu chuyện những ngày không có em