Đâ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.
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:
Đầ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ể:
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ể:
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à:
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:
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.
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.
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:
- 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
- Đă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ó
Bạn hãy để ý giúp mình 2 dòng này nhé: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
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
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.-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)
Đầ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.
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.
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.r w - r w - r - -
4 2 0 4 2 0 4 0 0
| | | | | | | | |
\ 6 / \ 6 / \ 4 /
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à:
Trong đó, mục [tùy chọn] là không bắt buộc, bao gồm các tùy chọn sau:chmod [tùy chọn] [biểu diễn phân quyền] [tên file hoặc thư mục]
- -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.
- 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).
- 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)
- 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)
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:
Ví dụ:chown -R [tên user]:[tên group] [file/folder]
Lời kếtchown -R thach2:thach2 /home/thach1
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.
Theo Thạch Phạm Blog