Trang chủ / Blog / CHMOD là gì? Hướng dẫn sử dụng lệnh Chmod trong Linux
#

Tìm hiểu lệnh Chmod 777 là gì?

 03/10/2019 04:55:00 Trịnh Duy Thanh

Đố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.

Lệnh cho phép thay đổi quyền truy cập Chmod

Lệnh cho phép thay đổi quyền truy cập Chmod

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).

Là một trong những trình quản lý file trên server vô cùng hiệu quả, nhưng không phải ai cũng biết sử dụng cpanel. Vậy hãy tìm hiểu Cpanel là gì nhé.

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.

Câu lệnh 777 và 755 thường xuyên được dùng

Câu lệnh 777 và 755 thường xuyên được dùng

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.

Để có thể lưu trữ dữ liệu của website cá nhân hay doanh nghiệp hoặc một website thương mại điện tử thì việc đăng ký hosting là vô cùng cần thiết. Nhưng nếu chưa có đủ kinh phí thì hãy tham khảo cách đăng ký hosting miễn phí để có thể trải nghiệm dịch vụ hosting.

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.

Lệnh Chmod 777

Lệnh Chmod 777

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”

Ví dụ thực tế chạy lệnh Chmod

Ví dụ thực tế chạy lệnh Chmod

Bảng quy định ký tự

Bảng quy định ký tự

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.

Tôi là Trịnh Duy Thanh, CEO & Founder Công ty Cổ Phần Giải Pháp Mạng Trực Tuyến Việt Nam - BKHOST. Với sứ mệnh mang tới các dịch vụ trên Internet tốt nhất cho các cá nhân và doanh nghiệp trong nước và quốc tế, tôi luôn nỗ lực hết mình nâng cấp đầu tư hệ thống phần cứng, nâng cao chất lượng dịch vụ chăm sóc khách hàng để đem đến những sản phẩm hoàn hảo nhất cho người tiêu dùng. Vì vậy, tôi tin tưởng sẽ đem đến các giải pháp CNTT mới nhất, tối ưu nhất, hiệu quả nhất và chi phí hợp lý nhất cho tất cả các doanh nghiệp.