Trang chủ Linux Webserver Phân quyền tập tin và thư mục trên Linux (CHMOD)

Phân quyền tập tin và thư mục trên Linux (CHMOD)

bởi Thạch Phạm
13 bình luận 23,8K views

Tham gia nhóm hỗ trợ WordPress

Tham gia nhóm Hỗ trợ Server - Hosting & WordPress để cùng nhau hỏi đáp và hỗ trợ các vấn đề về WordPress, tối ưu máy chủ/server.

Tham gia ngay

Đây là một khái niệm cực kỳ quan trọng mà mình sẽ cần giải thích cho bạn hiểu về thế giới Linux, bởi vì server của bạn có bảo mật hay không phụ thuộc một phần vào kỹ năng phân quyền.

Trong Linux, để phân quyền lại các tập tin và thư mục, chúng ta sẽ sử dụng lệnh chmod. Trong bài viết này, mình sẽ đề cập tới việc hướng dẫn sử dụng lệnh chmod cũng như cơ cấu phân quyền trong Linux.

chmod-comic

I. Phân quyền là như thế nào?

Trong Linux, khi nói đến phân quyền là chúng ta sẽ nghĩ ngay đến 3 quyền hạn cơ bản của một user/group nào đó trên một file/folder nào đó bao gồm:

Khuyến mãi Black Friday
  • r (read) – quyền đọc file/folder
  • w (write) – quyền ghi/sửa nội dung file/folder
  • x (execute) – quyền thực thi (truy cập) thư mục. Đối với thư mục thì bạn cần phải có quyền execute thì mới dùng lệnh cd để truy cập vào được

Ok, bây giờ bạn hãy thử tự làm các công việc sau (ở các bài trước mình hướng dẫn cả rồi):

  • Đăng nhập vào SSH với user là root
  • Tạo một user mới với tên bất kỳ, sau đó thiết lập mật khẩu cho nó
  • Thoát ra khỏi SSH, đăng nhập lại với user bạn vừa tạo
  • Ngay tại thư mục của user, hãy tạo nhanh một file trống rỗng với tên bất kỳ bằng lệnh touch tên-file
  • Ngay tại thư mục của user, hãy tạo một folder với tên bất kỳ
  • Gõ lệnh ls -l để xem các file vừa tạo kèm theo thông tin chi tiết của nó

Kết quả sẽ trả về như sau:

[bash]

touch testfile
mkdir testfolder
ls -l
total 4
-rw-rw-r– 1 van van 0 Sep 21 19:47 testfile
drwxrwxr-x 2 van van 4096 Sep 21 19:47 testfolder

[/bash]

Bạn hãy để ý giúp mình 2 dòng này nhé:

-rw-rw-r– 1 van van 0 Sep 21 19:47 testfile
drwxrwxr-x 2 van van 4096 Sep 21 19:47 testfolder

Mình xin giải thích bằng mô hình bên dưới như sau:

-rw-rw-r– 1 van van 0 Sep 21 19:47 testfile
drwxrwxr-x 2 van van 4096 Sep 21 19:47 testfolder
__________________________________________^– Ngày tháng tạo ra file và tên file
^ ^ ^ ^ ^ ^ ^ ^
| | | | | | | \— Dung lượng của file/folder
| | | | | | \——– Tên group sở hữu
| | | | | \————— Tên user sở hữu
| | | | \———————- Số này khó giải thích, bỏ qua vì không quan trọng
| | | |
| \–\–\—————————– Các chỉ số phân quyền
\————————————- Loại file (chữ d nghĩa là thư mục)

Vấn đề quan trọng ở đây là chúng ta sẽ phân tích các chỉ số phân quyền trong cái đống bùi nhùi trên.

Đầu tiên là đoạn rw-rw-r--, ở đoạn này bạn có thể thấy nó có 1 số dấu gạch ngang (-). điều đó có nghĩa là chưa bật đủ quyền dành cho nó, mỗi quyền sẽ được mô tả bằng một dấu -. Cụ thể:

  • rw-: Đối tượng thứ nhất chính là quyền dành cho user sở hữu nó.
  • rw-: Đối tượng thứ hai chính là quyền dành cho CÁC user thuộc group đang sở hữu nó.
  • r--: Đối tượng thứ ba chính là quyền dành cho MỌI user không thuộc quyền sở hữu và không thuộc group sở hữu.

Vậy cái đoạn rw-rw-r-- nghĩa là “User van được phép đọc và sửa file, các user thuộc group van có thể đọc và sửa file, còn những người còn lại là chỉ được đọc file“.

Nhưng đó chỉ là 1 trong kiểu biểu diễn quyền của tập tin, còn 1 kiểu biểu diễn nữa đó là ở dạng số. Cụ thể:

  • Quyền r được biểu diễn bằng số 4.
  • Quyền w được biểu diễn bằng số 2.
  • Quyền x được biểu diễn bằng số 1.

Nếu một đối tượng mà có đủ 3 quyền này thì bạn cứ lấy cả 3 cộng lại là  4 + 2 + 1 = 7, vậy quyền số 7 nghĩa là nó được phép đọc, sửa và thực thi file. Ví dụ như đoạn rw-rw-r-- thì mình có một phép tính như sau:


r w – r w – r – –
4 2 0 4 2 0 4 0 0
| | | | | | | | |
\ 6 / \ 6 / \ 4 /

Vậy kết luận rằng, đoạn rw-rw-r-- sẽ được biểu diễn bằng số là 664. Đây là quyền mặc định dành cho file.

Tương tự, đoạn rwxrwxr-x nghĩa là ở dòng thứ 2 sẽ được biểu diễn bằng số là 775. Đây là quyền mặc định dành cho folder.

Bây giờ bạn có thể thử bằng cách tạo một user mới khác nữa, sau đó đăng nhập bằng user này vào thư mục của user mà bạn đã tạo ở trên để xem nó báo lỗi không đủ quyền khi truy cập. Kế tiếp thực hành cách đưa user mới vào group của user sở hữu rồi vào thử lại. Đây chính là lúc bạn ôn lại các kiến thức bài trước.

II. Thay đổi phân quyền cho file/folder

Bạn chắc chắn đã hiểu được hệ thống phân quyền trên Linux chưa? Nếu rồi, thì bạn sẽ cần hiểu luôn cách đổi phân quyền cho các file và folder là như thế nào.

Để phân lại quyền cho cả file/folder trên Linux thì bạn sẽ sử dụng lệnh tên là chmod. Cấu trúc sử dụng lệnh này là:

[bash]chmod [tùy chọn] [biểu diễn phân quyền] [tên file hoặc thư mục][/bash]

Trong đó, mục [tùy chọn] là không bắt buộc, bao gồm các tùy chọn sau:

  • -v: hiển thị báo cáo sau khi chạy lệnh. Nếu bạn chmod nhiều file/folder cùng lúc thì cứ mỗi lần nó đổi quyền của 1 file/folder xong là sẽ hiện báo cáo.
  • -c: giống như trên, nhưng chỉ hiện khi nó đã làm xong tất cả.
  • -f: Hiểu ngắn gọn là kiểu “kệ mẹ nó”, nếu có lỗi xảy ra nó cũng không thông báo.
  • -R: nếu bạn CHMOD một folder thì kèm theo -R nghĩa là áp dụng luôn vào các file/folder nằm bên trong nó.
  • --help: hiển thị thông báo trợ giúp.

Ở phần [biểu diễn phân quyền], ban có thể biểu diễn bằng 3 kiểu:

  • kiểu ký tự: giống như ở trên (rw-rw-x–).
  • kiểu ugo: kiểu này sẽ phân quyền cho từng đối tượng phân quyền.
  • kiểu số: cũng giống như ở trên (644).

Ví dụ:

  • chmod 775 testfile
  • chmod 400 testfolder
  • chmod u+s testfolder (cho phép mọi thành viên không thuộc người sở hữu và không thuộc group sở hữu có thể execute folder)

Một vài ví dụ thêm về kiểu ugo:

  • o+rws: cho phép user sở hữu có full quyền
  • g+rw: cho phép group sở hữu có quyền đọc và ghi
  • u+w: cho phép các user còn lại có quyền đọc
  • a+rws: cho phép toàn bộ user có full quyền (777)

III. Thay chủ sở hữu file/folder

Mặc định các file và folder sẽ được sở hữu bởi user/group tạo ra nó. Chẳng hạn như mình dùng user là thach1 để tạo một folder thì các user khác ngoại trừ user root sẽ không thể tạo file hoặc thay đổi nội dung của file trong thư mục này, vì nó thuộc sở hữu của thach1.

Do vậy, để đổi chủ sở hữu một thư mục cho user/group nào đó thì bạn sẽ sử dụng lệnh chown như sau:

[bash]chown -R [tên user]:[tên group] [file/folder][/bash]

Ví dụ:

[bash]chown -R thach2:thach2 /home/thach1[/bash]

Lời kết

Bài này có vẻ chữ hơi nhiều nhưng điều đó không có nghĩa là quá khó để hiểu, bù lại nó rất dễ hiểu nếu bạn chịu khó đọc kỹ và làm theo. Ở bài sau, mình sẽ hướng dẫn bạn từng bước cách cài đặt một LAMP Webserver (Linux + Apache + MySQL + PHP) để có thể chạy được một website WordPress cơ bản trên VPS.

Đánh giá nội dung này
13 bình luận

Có thể bạn quan tâm

Hiện tại blog tạm đóng bình luận vì mình cần tập trung thời gian vào cập nhật bài viết. Bình luận sẽ mở ra cho đến khi mình sẵn sàng.