Giải thích về Lệnh Chmod và Quyền đối với file trong Linux | Học trực tuyến CNTT, học lập trình từ cơ bản đến nâng cao

Giải thích về Lệnh Chmod và Quyền đối với file trong Linux

Chia sẻ kiến thức 06/03/2022

Nếu bạn muốn quản lý quyền file đúng cách trên bất kỳ hệ điều hành Linux nào, bạn cần hiểu về lệnh chmod.

Nếu bạn muốn quản lý quyền file đúng cách trên bất kỳ hệ điều hành Linux nào, bạn cần hiểu về lệnh chmod.

Bạn đã tìm thấy một bản phân phối Linux mà bạn thích, nhưng lại không biết gì về các lệnh và quyền đối với file (tệp) trong Linux?

Hoặc có thể bạn có một trang web được lưu trữ trên máy chủ Linux và gặp phải một số vấn đề về quyền đối với tệp mà chỉ có thể được giải quyết thông qua dòng lệnh.

Dù là trường hợp nào, một trong những lệnh Linux cần thiết nhất để học là lệnh chmod. Nhưng trước khi giải thích chức năng của lệnh, trước tiên chúng ta phải hiểu một chút về cách Linux xử lý bảo mật tệp.

Khái niệm cơ bản về quyền đối với tệp Linux

Hệ điều hành Linux thực sự là các hệ thống giống Unix (tìm hiểu sự khác biệt giữa Linux và Unix tại đây) và các hệ thống này có cách tiếp cận các quyền đối với tệp như sau:

Mỗi tệp đều có owner (chủ sở hữu), chủ sở hữu này xác định “lớp người dùng” của tệp. Mỗi tệp cũng có một group (nhóm), nhóm này xác định “group class” (lớp nhóm) của tệp. Bất kỳ người dùng hệ thống nào không phải là chủ sở hữu và không thuộc cùng một nhóm đều được xác định là others (những người khác).

Tất cả các tệp trên hệ thống giống Unix đều có quyền được gán cho cả ba lớp và những quyền này xác định những hành động nào có thể được thực hiện bởi các lớp trên đối với tệp đó. 

Ba hành động có sẵn trên một hệ thống giống Unix là: read (khả năng mở và xem nội dung của tệp), write (khả năng mở và sửa đổi nội dung của tệp) và execute (khả năng chạy tệp như một chương trình thực thi).

Nói cách khác, quyền của tệp xác định xem:

  • Chủ sở hữu có thể đọc, ghi và thực thi tệp hay không.
  • Nhóm có thể đọc, ghi và thực thi tệp hay không.
  • Bất kỳ ai khác đều có thể đọc, ghi và thực thi tệp hay không.

Quyền đối với tệp Linux có thể được hiển thị ở hai định dạng.

Định dạng đầu tiên được gọi là symbolic notation (ký hiệu tượng trưng), là một chuỗi 10 ký tự: một ký tự đại diện cho loại tệp, sau đó là chín ký tự đại diện cho các quyền đọc (r), ghi (w) và thực thi (x) của tệp theo thứ tự chủ sở hữu, nhóm và những người khác. Nếu không được phép, ký hiệu gạch ngang (-) sẽ được sử dụng.

Ví dụ:

-rwxr-xr--

Điều này có nghĩa là tệp này là một tệp thông thường, chủ sở hữu của nó có quyền đọc, ghi và thực thi; nhóm có quyền đọc và thực thi; những người khác chỉ có quyền đọc.

Định dạng thứ hai được gọi là numeric notation (ký hiệu số), là một chuỗi gồm ba chữ số mà mỗi chữ số đại diện cho người dùng, nhóm và các quyền khác. Mỗi chữ số có thể nằm trong khoảng từ 0 đến 7 và giá trị của mỗi chữ số có được bằng cách tính tổng các quyền của lớp (class):

  • 0 có nghĩa là không có quyền nào được phép.
  • +1 nếu lớp có thể thực thi tệp.
  • +2 nếu lớp có thể ghi vào tệp.
  • +4 nếu lớp có thể đọc tệp.

Nói cách khác, ý nghĩa của mỗi giá trị chữ số là:

  • 0: Không có quyền
  • 1: Thực thi
  • 2: Viết
  • 3: Viết và thực thi
  • 4: Đọc
  • 5: Đọc và thực thi
  • 6: Đọc và viết
  • 7: Đọc, viết và thực thi

Vì vậy, ví dụ trên:

-rwxr-xr--

sẽ là 754 trong ký hiệu số.

Chmod là gì?

Trên các hệ thống giống Unix, chmod là lệnh cấp hệ thống viết tắt của “change mode” (chế độ thay đổi) và cho phép bạn thay đổi thủ công cài đặt quyền của tệp.

Đừng nhầm nó với chown, một lệnh cấp hệ thống khác trên các hệ thống giống Unix, viết tắt của “change owner” (thay đổi chủ sở hữu) và cho phép bạn chỉ định quyền sở hữu tệp cho người dùng khác; hoặc chgrp, viết tắt của “change group” (thay đổi nhóm), chỉ định một tệp cho một nhóm khác. Đây là những lệnh quan trọng cần biết, nhưng chúng không được sử dụng phổ biến như chmod.

Chmod 644 có nghĩa là gì?

Đặt quyền của tệp thành 644 khiến cho chỉ chủ sở hữu mới có thể truy cập và sửa đổi tệp theo cách họ muốn trong khi những người khác chỉ có thể truy cập mà không sửa đổi và không ai, kể cả chủ sở hữu, có thể thực thi tệp. Đây là cài đặt lý tưởng cho các tệp có thể truy cập công khai vì nó cân bằng giữa tính linh hoạt với bảo mật.

Chmod 755 có nghĩa là gì?

Đặt quyền của tệp thành 755 về cơ bản giống như 644, ngoại trừ việc ai cũng có quyền thực thi. Điều này chủ yếu được sử dụng cho các thư mục có thể truy cập công khai vì cần có quyền thực thi để thay đổi thành một thư mục.

Chmod 555 có nghĩa là gì?

Việc đặt quyền của tệp thành 555 làm cho tệp đó không thể bị sửa đổi bởi bất kỳ ai ngoại trừ người dùng siêu cấp (superuser)của hệ thống ( tìm hiểu thêm về người dùng siêu cấp trong Linux). Nó không được sử dụng phổ biến như 644, nhưng bạn cũng cần biết về nó vì cài đặt chỉ đọc ngăn chặn các thay đổi vô ý hoặc cố ý với tệp. 

Chmod 777 có nghĩa là gì?

Việc đặt quyền của tệp thành 777 giúp mọi người có thể làm bất cứ điều gì họ muốn với tệp. Đây là một rủi ro bảo mật rất lớn, đặc biệt là trên các máy chủ web! Bất kỳ ai cũng có thể truy cập tệp, sửa đổi nó theo cách họ muốn và thực thi nó trên hệ thống. 

Cách sử dụng Chmod trên Linux

Lệnh chmod có định dạng đơn giản:

chmod [permissions] [file]

Các quyền có thể được cấp dưới dạng ký hiệu số, đây là định dạng tốt nhất để sử dụng khi bạn muốn chỉ định các quyền cụ thể cho tất cả các lớp:

chmod 644 example.txt

Các quyền cũng có thể được cấp dưới dạng ký hiệu tượng trưng, ​​điều này rất hữu ích khi bạn chỉ muốn sửa đổi các quyền của một lớp cụ thể. Ví dụ:

chmod u=rwx example.txt
chmod g=rw example.txt
chmod o=rw example.txt

Bạn có thể sửa đổi quyền cho nhiều lớp, chẳng hạn như lệnh này cho phép chủ sở hữu đọc/ghi/thực thi nhưng nhóm và những người khác đọc/thực thi:

chmod u=rwx,g=rw,o=rw example.txt

Khi gán các quyền giống nhau cho nhiều lớp, bạn có thể kết hợp chúng:

chmod u=rwx,go=rw example.txt

Bạn cũng có thể sử dụng ký hiệu tượng trưng để thêm hoặc xóa quyền cho một hành động cụ thể cho một lớp cụ thể.

Ví dụ: lệnh này thêm quyền thực thi cho chủ sở hữu tệp:

chmod u+x example.txt

Và lệnh này loại bỏ quyền ghi và thực thi cho những người dùng khác:

chmod o-wx example.txt

Cuối cùng, nếu bạn muốn áp dụng một bộ quyền cụ thể cho tất cả các tệp và thư mục trong một thư mục cụ thể (tức là chmod đệ quy), hãy sử dụng tùy chọn -R và nhắm đến một thư mục:

chmod -R 755 example_directory

Mặc dù lệnh chmod thoạt nhìn có vẻ hơi phức tạp, nhưng nó thực sự khá đơn giản và hoàn toàn logic. Nếu bạn hiểu những điều trên, về cơ bản bạn đã thành thạo chmod!

Dịch từ: https://www.makeuseof.com/tag/chmod-command-linux-file-permissions/

Vân Nguyễn

ĐĂNG KÝ TƯ VẤN HỌC LẬP TRÌNH TẠI FUNiX

Bình luận (
0
)

Bài liên quan

  • Tầng 0, tòa nhà FPT, 17 Duy Tân, Q. Cầu Giấy, Hà Nội
  • info@funix.edu.vn
  • 0782313602 (Zalo, Viber)        
Chat Button
FUNiX V2 GenAI Chatbot ×

yêu cầu gọi lại