Nội dung
Khi mới bắt đầu tiếp xúc với Linux thì chắc chắn thuật ngữ phân quyền, chmod, chown đã không còn xa lạ với các bạn nữa. Tuy nhiên bạn đã phân quyền đúng chưa, và liệu rằng các quyền mình điều chỉnh mang ý nghĩa gì và không nên lạm dụng quyền gì.
Làm việc trực tiếp trên linux thì đôi lúc bạn sẽ bắt gặp thông báo You don't have permission to
hoặc là permission denied
. Và cách nhanh nhất mà mình đọc được ở các bài hướng dẫn và trên các diễn đàn là sử dụng chmod -R 777 file-hoac-folder
. Với lệnh này sẽ giải quyết được vấn đề bạn đang gặp, tuy nhiên nó có thực sự hiệu quả và an toàn hay không? Hãy cùng mình tìm hiểu về các quyền trong Linux nhé.
Trước khi đi vào phân quyền chúng ta hãy đặt câu hỏi. Tại sao lại cần phải phân quyền.
Mình sẽ lấy một ví dụ thực tế để các bạn dễ hình dung.
Giả sử bạn có một chiếc điện thoại nó thuộc quyền sở hữu của bạn thì bạn đang có quyền (dùng, bán, bỏ đi). Và một người khác mượn chiếc điện thoại của bạn, và bạn chỉ cho phép họ cầm, xem không được bán, thì hành động đồng ý cho mượn và chỉ cho phép cầm xem chính là một hình thức phân quyền, chia quyền.
Và nếu người đó cố ý bán điện thoại của bạn mà bạn chưa đồng ý, thì đó là một hình thức vi phạm. Nhưng trên Linux thì hành vi này sẽ bị ngăn chặn lập tức.
Cách phân quyền trong Linux
Trước khi đi vào phân quyền trong Linux bạn cần nằm 2 thành phần quan trọng sau
Permission Groups
Những user trong hệ thống sẽ được chia thành 3 nhóm như sau:
- Owner: Chủ sở hữu file.
- Group: Một nhóm nào đó và được gán quyền nào cho file thì những user nằm trong nhóm sẽ có quyền đó.
- Other: Những user còn lại (không thuộc 2 loại trên)
Permission Type
Có 3 loại quyền cơ bản trong linux là đọc(read), ghi(write) và thực thi(execute) file như bảng bên dưới
Quyền | Ký hiệu | Dạng số | Mô tả |
Read | r | 4 | Đọc file |
Write | w | 2 | Ghi/sửa file |
Execute | e | 1 | Thực thi file |
Đến đây thì chắc các bạn đã hiểu được ý nghĩa của con số 7 trong bộ quyền 777 rồi đúng không nào, nó chính là tổng của 3 con số trên(Read+Write+Execute=4+2+1=7), tức là toàn bộ quyền đọc, ghi và thực thi).
Nhưng tại sao lại là 777 thì chúng ta hãy tiếp tục đến với cách kiểm tra quyền hiện tại của file nhé. Nếu các bạn đã quen với câu lệnh ls
để liệt kê danh sách file/folder thì chỉ cần thêm tùy chọn -l
để xem được chi tiết phân quyền như sau:
Trong ảnh này bạn sẽ thấy một số cột và các dãy số cũng như ký hiệu và mình sẽ giải thích từng cột để bạn nằm rõ.
Cột 1: Ở cột này mỗi file/thư mục sẽ có các quyền với ký hiệu khác nhau. Ví dụ file đầu tiên là -rw-r–r– thì trong bộ này sẽ bao gồm
- dấu –, dấu này là để xác định loại file, tức là nếu có dấu – thì đó là file còn chữ d thì đó là thư mục, chữ c là thiết bị và chữ l (chữ L) là liên kết
- rw-: bộ 3 đầu tiên là quyền hạn của Owner
- r-: Bộ ba tiếp theo là quyền hạn của Group
- r–: Bộ 3 còn lại là quyền hạn của Other
Cột 2: (Số 1) số này để chỉ số lượng liên kết với file, số 1 ở đây có ý nghĩa là nó chỉ có 1 liên kết cứng trỏ tới chính nó
Cột 3: Chủ sở hữu của file ở đây là root
Cột 4: Nhóm (Group) sở hữu file ở ảnh này là root
Những cột tiếp theo hiển thị thông tin về dung lượng, thời gian, tên file và folder.
Khi đã xem đến phần này thì chắc hẵn bạn đã hiểu về phân quyền trong linux rồi phải không nào. Vậy thì quay ngược lại cấu hỏi và tiêu đề bài viết về quyền 777. Mỗi số sẽ tương ứng với quyền hạn lần lượt là Owner/Group/Other
chmod -R 777
Với quyền này thì đã cho một user bất kỳ có toàn bộ quyền hạn đối với file/thư mục của bạn. Đây là một hành động hết sức nguy hiểm và bạn tuyệt đối không nên sử dụng bừa. Và chỉ nên sử dụng khi cần thiết và bạn làm chủ hoàn toàn được nó.
Qua bài viết này hy vọng phần nào sẽ giúp bạn hiểu hơn về nhưng con số trong phân quyền và cách phân quyền trong Linux.