Phân quyền trên Linux

Phân quyền trên Linux là một trong những kiến thức cơ bản cho những ai tìm hiểu/làm việc trên nền tảng Linux. Bài viết này sẽ giới thiệu khái quát về phân quyền cũng như cách phân quyền trên Linux.

Nhóm phân quyền

Trong Linux mỗi file (folder) đều có 3 nhóm phân quyền chính:

  • owner: Quyền sở hữu này chỉ áp dụng cho chủ sở hữu của file và không ảnh hưởng đến hoạt động của người dùng khác.
  • group: Quyền sở hữu này được áp dụng cho nhóm đã được gán cho file.
  • others: Cấp quyền cho những người dùng khác không thuộc hai nhóm trên.

Tuy nhiên có ngoại lệ đó là root (super user) không bị ràng buộc bởi bất cứ sự phân quyền nào, có toàn quyền trên mọi file của hệ thống.

Lưu ý: Nếu không cần thiết các bạn không nên đăng nhập vào user root. Vì có những lệnh rất nguy hiểm nếu thực thi nhầm sẽ gây hại đến hệ thống.

Ví dụ lệnh rm -rf sẽ xóa tất cả file và folder mà không cần hỏi.

Các loại phân quyền

Mỗi file có 3 loại quyền cơ bản:

  • read: Quyền cho phép người dùng đọc nội dung của file.
  • write: Quyền cho phép người dùng viết hoặc thay đổi nội dung của file.
  • *execute *: Quyền cho phép người dùng thực thi file.
Tên quyền Ký hiệu Dạng bát phân Mô tả
Read r 4 Quyền đọc file
Write w 2 Quyền ghi file
Execute x 1 Quyền thực thi file

Cách xem phân quyền của file

Để xem phân quyền của một file hoặc một folder ta sử dụng câu lệnh

ls -l path/to/file hoặc ls -la path/to/file (để hiện các hidden file)

Output của câu lệnh trên là:

[root@ITFROMZERO~]# ls -l
合計 90296
drwxr-xr-x.  2 root root       86 11月  2 11:06 Downloads
-rw-r--r--.  1 root root 82722543  7月 12  2018 NVIDIA-Linux-x86_64-390.77.run
-rw-r--r--.  1 root root   208160 12月  6 17:28 Untitled.ipynb
-rw-r--r--.  1 root root  2581992 12月  6 19:18 Untitled1.ipynb
-rw-------.  1 root root     1785 10月 16 16:48 anaconda-ks.cfg
drwxr-xr-x.  3 root root       84 11月 20 16:21 arai
drwxr-xr-x.  2 root root       19 10月 23 09:30 bin
drwxr-xr-x. 15 root root     4096 10月 31 12:32 cmake-3.6.2
-rw-r--r--.  1 root root  6920069  9月  8  2016 cmake-3.6.2.tar.gz
drwxr-xr-x.  4 root root       42 12月  3 12:40 docker-mysql-5.7
-rw-r--r--.  1 root root    15080 10月  3  2017 epel-release-7-11.noarch.rpm
  • Kí tự đầu tiên là một cờ đặc biệt để chỉ loại file, - với file thông thường, d với thư mục, c với thiết bị, l với liên kết.
  • 3 ký tự tiếp theo (rwx) thể hiện quyền của owner có mọi quyền đối với file.
  • 3 ký tự tiếp theo (rwx) thể hiện quyền của group có mọi quyền đối với file.
  • 3 ký tự tiếp theo (r–) thể hiện quyền của others chỉ có quyền đọc file.
  • Số nguyên chỉ số lượng liên kết cứng tới file.
  • Cuối cùng là tên owner và group, ở đây owner là apache và group là apache

Cách phân quyền trên Linux

Các thiết lập mặc định của Linux về file nhiều khi sẽ không giải quyết được vấn đề thiết lập hoặc khi bạn muốn chia sẻ quyền cho người dùng khác…May mắn là việc phân quyền cũng không quá phức tạp.

Ký hiệu chung

Group Permission

Group Permision Ký hiệu Mô tả
Owner u Chủ sở hữu
Group g Nhóm sở hữu
Other o Người dùng và nhóm khác
All a Toàn bộ người dùng và nhóm (tương đương ugo )

Operator

Operator Ký hiệu Mô tả
Add + Cấp thêm quyền
Remove Loại bỏ quyền
Assign = Chỉ định quyền cụ thể

Phân quyền sử dụng chmod

chmod (change mode) là câu lệnh cơ bản nhất để phân quyền file. Có hai cách để phân quyền bằng chmod đó là sử dụng symbolic và octal number:

chmod [options] [mode] file

trong đó options bao gồm:

  • -R : áp dụng cho cả sub folder.
  • -f : tiếp tục kể cả khi xảy ra lỗi.
  • -v : hiển thị quá trình.

VD:

chmod a+r test.txt

-> Thêm quyền đọc cho tất cả người dùng và nhóm.

chmod u=rw,g=r,o= plan.sh

-> Cho chủ sở hữu quyền đọc và ghi, group sở hữu quyền đọc, những người dùng và nhóm khác không được làm gì.

chmod -R 775 /home/tmp

-> Cho chủ sở hữu và group sở hữu full quyền, còn những người khác chỉ được đọc và thực thi.

Phân quyền sử dụng chown và chgrp

chown (change ownership): Thay đổi “chủ quyền” của file hoặc folder. Cú pháp:

chown [options] [newowner:newgroup] file

Options cũng tương tự như chmod ngoài ra thì còn vài tùy chọn như -h--from--reference mà tôi sẽ không đề cập đến ở đây mà tập trung vào việc định danh chủ sở hữu mới. Có 5 cách để làm việc này:

Form Description
user Tên của người sở hữu mới, dấu hai chấm (“:”) và tên nhóm mới được bỏ qua, tức là nhóm sở hữu sẽ không thay đổi
user:group Dạng đầy đủ của chủ mới và nhóm mới, được ngăn cách bởi dấu hai chấm và không có khoảng cách ở giữa
:group Chủ sở hữu sẽ được bỏ qua, nhóm sở hữu mới bắt buộc phải đi sau dấu hai chấm
user: Nhóm sở hữu được bỏ qua, ở đây nhóm sở hữu mới sẽ được gán bằng nhóm login của user
: Bỏ qua cả hai, tức là không thay đổi gì cả

Lưu ý: Chủ sở hữu không thể chuyển quyền sở hữu trừ phi họ là root hoặc sử dụng sudo. Nhóm sở hữu sẽ được thay đổi bởi chủ sở hữu nếu chủ sở hữu thuộc nhóm đó.Vì vậy, tôi khuyến nghị chạy chown dưới quyền super admin.

chgrp (change group): Thay đổi nhóm sở hữu, cú pháp:

chgrp [options] group file

Trên đây là tổng quan về phân quyền và cách phân quyền trong Linux. Chúc các bạn thành công.

Nguồn: Tổng hợp từ Internet.