Đối với những ai đã, đang và sẽ có ý định sử dụng Linux hay quản trị website mà host của nó có thể được đặt trên server của Lunix thì chắc chắn một điều rằng, không ít hơn 1 lần các bạn thường thấy xuất hiện lỗi “You do not have the permission to modify this file” khi muốn chỉnh sửa hoặc xóa đi một file nào đó. Và khi đó bạn phải hỏi chúa Google xem lỗi đó sửa như thế nào, cách khắc phục ra sao phải không nào? Google sẽ cho ra các kết quả kiểu như yêu cầu bạn nên “setting file permission” thành “775” hoặc “777”. Vậy chính xác Chmod là gì và Chmod 777 là gì?
Chmod là gì?
Trong hệ điều hành Unix/Linux, Chmod là lệnh được sử dụng để thay đổi quyền truy cập của người dùng tới file/folder.
Quyền truy cập file/folder trong Linux
Trong server hệ thống Linux luôn có đi kèm với cơ chế kiểm soát file, điều này để giúp xác định xem người dùng nào được phép truy cập vào một file hoặc folder cụ thể, rồi sau khi truy cập thì họ có thể làm gì với nó (đọc, chỉnh sửa, chỉ đọc).
Cơ chế kiểm soát file/folder trong Linux được chia làm 2 phần: Classes và Permission.
Classes dùng để xác định xem ai có thể truy cập vào file, Permission dùng để xác định những hành động mà người dùng có thể làm với file đó.
Trong đó thì lại được chia ra làm những nhóm nhỏ hơn. Có 3 loại Classes: Owner, Group và Others
- Owner: là người tạo ra các files/folders. Các bạn có quyền sở hữu những file này, chúng nằm trong mục Home khi mà bạn tạo ra, nhưng đồng thời bạn cũng có thể chuyển quyền sở hữu file này cho một người dùng khác.
- Group: nhóm chung của những người dùng có cùng chung “permission-quyền hạn”
- Others: nhóm những người dùng khác trong hệ thống
Còn đối với Permission, cũng có 3 loại permission bạn có thể thực hiện đối với file/folder: read, write hoặc execute
- Read: Bạn chỉ được phép đọc file này, bạn không có quyền chỉnh sửa bất kì điều gì trong file. Tương tự với folder. Bạn cũng chỉ có thể mở ra xem, không thể thêm bớt nội dung, cũng không có cách nào bạn có thể xóa được chúng đi.
- Write: khi có permission này, họ cho phép bạn có thể xem rồi sửa nội dung bên trong của một file. Đối với folder, bạn có thể xóa hoặc thêm các files vào folder đó. (Lưu ý : khi được cấp cho quyền Write đối với một folderm, bạn sẽ có khả năng xóa các files trong folder, ngay cả khi user của bạn không có quyền write đối với file đó).
- Execute: chức năng này được sử dụng chủ yếu khi bạn muốn “run – chạy” một file (thường là một script). Đối với folder, bạn có thể sử dụng nó để cho phép hoặc hạn chế việc thay đổi thư mục hiện tại.
Khi kết hợp 2 phần Classes với Permissions, chúng ta có thể kiểm soát hoàn toàn việc ai có thể truy cập vào file và những hành động họ có thể làm một cách chắc chắn.
Ví dụ, Owner có tất cả các permissions (read, write, execute) để truy cập file. Bạn sẽ được cấp quyền truy cập cho những người dùng khác. Trong trường hợp bạn không phải là owner của file/folder đó thì bạn cần thay đổi quyền sở hữu của file/folder đó thành tên bạn, hoặc thay đổi permission của Group của bạn.
Chmod 777 là gì?
Cùng tìm hiểu về ý nghĩa của con số 777, tại sao bạn thấy lại chỉ có đến 7 mà không thêm 8 hay 9 nhé
Trong mọi file/folder ở Linux thì đều chứa 8bits dữ liệu lưu quyền truy cập. Chúng được để ở dạng nhị phân cơ bản, ví dụ như là “000” thì ý nghĩa của nó là bạn không không có bất cứ quyền truy cập nào.
Con số là để máy tính có thể hiểu được lệnh
- Khi bạn muốn thiết lập quyền Read: sẽ thêm 4-bit vào dữ liệu, tạo thành “100” (dạng nhị phân) hoặc “4” dạng thập phân.
- Khi bạn muốn thiết lập quyền Write: sẽ thêm 2-bit vào dữ liệu, tạo thành “010” (nhị phân) hoặc “2” dạng thập phân.
- Khi bạn muốn thiết lập quyền Execute: sẽ thêm 1-bit vào dữ liệu, tạo thành “001” hoặc “1” dạng thập phân.
Nhìn chung thì tóm gọn đơn giản lại:
- Read (r) tương đương với 4
- Write (w) tương đương với 2
- Execute (x) tương đương với 1
Sau đó, dựa vào quy định thiết lập này để bạn tạo permissions đối với file/folder mà bạn muốn, bạn chỉ cần cộng thêm số thập phân tương ứng với permission đó là được.
Ví dụ: bạn muốn thiết lập permission là read, write và execute sẽ là 4(r) + 2(w) + 1(x) = 7; với read và execute, sẽ là 4(r) + 1(x) = 5
Kết luận: bạn chỉ có các permission mang giá trị từ 0 – 7 chứ không thể có 8 hay 9 nhé. Tổng quát quy định về giá trị BKhost cung cấp đến bạn:
- 0: không có bất cứ quyền truy cập nào
- 1: execute
- 2: write
- 3: write và execute
- 4: read
- 5: read và execute
- 6: read và write
- 7: read, write và execute
Vậy thì Chmod 777 là gì ở đây thì bạn có thể giải thích được rồi phải không nào? Mục đích của lệnh này là:
- 7 đầu tiên: dùng để cấp quyền cho Owner
- 7 thứ 2: để cấp quyền cho Group
- 7 cuối cùng: để cấp quyền cho Others
Chú ý: lấy ví dụ ngay từ số 777, mỗi vị trí của số 7 ứng với một phần của Classes như BKhost đã giới thiệu ở phần trên nhé. Và mỗi giá trị cấu tạo nên số 7 thì sẽ ứng với các Permission
Như vậy 777 có nghĩa là tất cả users trong hệ thống có full permissions: read, write và execute.
Tương tự lệnh Chmod 755 là gì?
- 7: đầu tiên: dùng để cấp quyền cho Owner full permission
- 5: cấp quyền cho Group chỉ có read và execute
- 5: cấp quyền cho Others cũng chỉ có read và execute
Như vậy Chmod 775 có nghĩa Owner có toàn quyền trong khi chỉ cho phép Group và các người dùng khác chỉ được đọc và run file
Hướng dẫn sử dụng lệnh Chmod trong Linux
Áp dụng vào thực tế khi bạn sử dụng lệnh Chmod thì trong Linux có 2 cách để bạn có thể dễ dàng thay đổi quyền truy cập cho files/folders theo câu lệnh 2 cấu trúc khác nhau như sau
Câu lệnh sử dụng Octal mode
Cấu trúc: chmod “number” “filename”
Ví dụ: Chmod 777 Bkhost
Câu lệnh đó mang ý nghĩa là bạn thiết lập full permission cho cả Owner, Group và Others đối với file có tên là Bkhost
Câu lệnh sử dụng Symbolic mode
Cấu trúc: chmode “option” “filename”
Bảng quy định “option” trong Symbolic mode
- u: owner
- g: group
- o: other
- a: tất cả (cả owner, group, others) giống ugo
- r: read
- w: write
- x: execute
- +: thêm permission
- -: loại bỏ permission
- =: gán permission
Điều này hỗ trợ cũng như giúp bạn được phép sử dụng hay kế thừa lại các quyền truy cập trước đó
Ví dụ: thêm quyền write và execute cho group tương đương “chmod g+wx bkhost”; xóa quyền execute đối với group “chmod g-x bkhost”
Một số câu lệnh Chmod phổ biến khác
Chmod 644
Câu lệnh 644 thường được dùng khi muốn cho phép chủ sở hữu – owner có thể truy cập và sửa đổi file theo cách họ muốn, trong khi những người dùng khác (group và others) chỉ có quyền truy cập mà không thể sửa đổi, cùng với đó là không cho phép ai có thể execute file ngay cả owner. Đây là câu lệnh lý tưởng cho những file có thể truy cập công khai, giúp duy trì được cả bảo mật và sự linh hoạt trong truy cập.
Chmod 555
Câu lệnh Chmod 555 có nghĩa là file không thể bị sửa đổi bởi bất kỳ ai, ngoại trừ superuser (siêu người dùng) của hệ thống. Quyền này ít được sử dụng như 644, nhưng bạn nên biết đến câu lệnh quan trọng này vì việc cài đặt quyền chỉ đọc ngăn ngừa các thay đổi ngẫu nhiên hoặc giả mạo
BKHOST vừa giới thiệu tới bạn những thông tin liên quan đến lệnh chmod trong linux. Hãy nhớ đón đọc những bài viết khác trên blog của BKHOST nhé. Ngoài ra để có thể tìm hiểu thêm về hosting Linux thì bạn cũng có thể liên hệ tới BKHOST để được tư vấn.