chmod command in linux

Tìm hiểu lệnh chmod trong Linux: Thay đổi quyền truy cập file một cách dễ dàng

Chào mừng bạn đến với thế giới Linux! Nếu bạn là người mới bắt đầu, có lẽ bạn đã từng nghe đến lệnh chmod, một công cụ mạnh mẽ để quản lý quyền truy cập file và thư mục. Trong bài viết này, chúng ta sẽ cùng nhau khám phá chmod một cách chi tiết, từ cú pháp cơ bản đến những ví dụ thực tế, giúp bạn làm chủ hệ thống Linux của mình.

Chúng ta sẽ bắt đầu bằng việc tìm hiểu ý nghĩa của quyền truy cập file trong Linux, sau đó đi sâu vào cú pháp và các tùy chọn của lệnh chmod. Cuối cùng, chúng ta sẽ xem xét một số tình huống thực tế mà bạn có thể áp dụng chmod để bảo vệ dữ liệu và đảm bảo an ninh hệ thống.

Quyền truy cập file trong Linux là gì?

Trong Linux, mỗi file và thư mục đều có một bộ quyền truy cập (permissions) xác định ai có thể đọc, ghi hoặc thực thi chúng. Các quyền này được chia thành ba loại người dùng:

  • User (chủ sở hữu): Người tạo ra file hoặc thư mục.
  • Group (nhóm): Nhóm người dùng có quyền truy cập chung.
  • Others (người khác): Tất cả những người dùng còn lại trên hệ thống.

Mỗi loại người dùng có thể có ba loại quyền:

  • Read (r): Cho phép xem nội dung của file hoặc liệt kê nội dung của thư mục.
  • Write (w): Cho phép chỉnh sửa nội dung của file hoặc tạo, xóa file trong thư mục.
  • Execute (x): Cho phép chạy file (nếu nó là một chương trình) hoặc truy cập vào thư mục.

Các quyền này thường được biểu diễn dưới dạng một chuỗi 10 ký tự, ví dụ: -rwxr-xr--. Ký tự đầu tiên cho biết loại file (- cho file thông thường, d cho thư mục, l cho liên kết tượng trưng). Chín ký tự tiếp theo biểu diễn quyền truy cập cho user, group và others theo thứ tự.

Cú pháp cơ bản của lệnh chmod

Cú pháp cơ bản của lệnh chmod như sau:

chmod [options] mode file(s)

Trong đó:

  • chmod là lệnh gọi chương trình.
  • [options] là các tùy chọn để thay đổi hành vi của lệnh.
  • mode là chế độ quyền mới mà bạn muốn gán cho file.
  • file(s) là tên của một hoặc nhiều file hoặc thư mục mà bạn muốn thay đổi quyền.

Có hai cách chính để chỉ định mode: sử dụng ký hiệu (symbolic mode) và sử dụng số (numeric mode).

Ký hiệu (Symbolic Mode)

Ký hiệu cho phép bạn thay đổi quyền một cách tương đối, tức là thêm hoặc bớt quyền hiện có. Cú pháp như sau:

chmod [who] [+|-|=] [permission] file(s)

Trong đó:

  • who xác định đối tượng mà bạn muốn thay đổi quyền:
    • u cho user (chủ sở hữu)
    • g cho group (nhóm)
    • o cho others (người khác)
    • a cho all (tất cả, tương đương với ugo)
  • + để thêm quyền.
  • - để xóa quyền.
  • = để gán quyền cụ thể (loại bỏ các quyền hiện có).
  • permission là quyền bạn muốn thêm, xóa hoặc gán:
    • r cho read
    • w cho write
    • x cho execute

Ví dụ:

  • chmod u+x myfile.sh: Thêm quyền thực thi cho user (chủ sở hữu) của file myfile.sh.
  • chmod g-w myfile.txt: Xóa quyền ghi cho group của file myfile.txt.
  • chmod a=r myfile.pdf: Gán quyền đọc cho tất cả mọi người (user, group, others) của file myfile.pdf, loại bỏ tất cả các quyền khác.

Số (Numeric Mode)

Số cho phép bạn chỉ định quyền một cách tuyệt đối, bằng cách sử dụng hệ thống số bát phân (octal). Mỗi quyền (r, w, x) được gán một giá trị số:

  • r = 4
  • w = 2
  • x = 1

Để tính tổng quyền cho mỗi loại người dùng (user, group, others), bạn cộng các giá trị tương ứng. Ví dụ:

  • Quyền rwx tương ứng với 4 + 2 + 1 = 7
  • Quyền r-x tương ứng với 4 + 0 + 1 = 5
  • Quyền r-- tương ứng với 4 + 0 + 0 = 4

Sau đó, bạn kết hợp ba số này lại để tạo thành một số có ba chữ số, đại diện cho quyền của user, group và others. Ví dụ:

  • chmod 755 myfile.sh: Gán quyền rwxr-xr-x cho file myfile.sh (user có quyền đọc, ghi, thực thi; group và others có quyền đọc và thực thi).
  • chmod 644 myfile.txt: Gán quyền rw-r--r-- cho file myfile.txt (user có quyền đọc và ghi; group và others chỉ có quyền đọc).
  • chmod 700 myfile.private: Gán quyền rwx------ cho file myfile.private (chỉ user có quyền đọc, ghi, thực thi; group và others không có quyền gì).

Các tùy chọn thường dùng của lệnh chmod

Dưới đây là một số tùy chọn thường dùng của lệnh chmod:

  • -R hoặc --recursive: Thay đổi quyền một cách đệ quy, áp dụng cho tất cả các file và thư mục bên trong thư mục chỉ định. Rất hữu ích khi bạn muốn thay đổi quyền của cả một cây thư mục.
  • -v hoặc --verbose: Hiển thị thông tin chi tiết về các thay đổi quyền.
  • --reference=RFILE: Sử dụng quyền của file RFILE làm mẫu cho file đích.

Ví dụ:

  • chmod -R 755 mydirectory: Thay đổi quyền của thư mục mydirectory và tất cả các file và thư mục bên trong thành rwxr-xr-x.
  • chmod -v u+x myfile.sh: Thêm quyền thực thi cho user của file myfile.sh và hiển thị thông báo xác nhận.
  • chmod --reference=template.txt myfile.txt: Gán quyền của file template.txt cho file myfile.txt.

Ví dụ thực tế về sử dụng lệnh chmod

Dưới đây là một số tình huống thực tế mà bạn có thể sử dụng lệnh chmod:

  • Cho phép thực thi một script: Nếu bạn có một file script (ví dụ, myscript.sh) và muốn chạy nó, bạn cần cấp quyền thực thi cho user của bạn bằng lệnh chmod u+x myscript.sh.
  • Chia sẻ file cho một nhóm: Nếu bạn muốn chia sẻ một file với một nhóm người dùng, bạn có thể thay đổi group của file bằng lệnh chgrp (một lệnh khác) và sau đó cấp quyền đọc cho group bằng lệnh chmod g+r myfile.txt.
  • Bảo vệ file riêng tư: Nếu bạn có một file chứa thông tin nhạy cảm, bạn có thể giới hạn quyền truy cập chỉ cho user của bạn bằng lệnh chmod 700 myfile.private.
  • Thiết lập quyền cho một website: Khi triển khai một website, bạn cần thiết lập quyền phù hợp cho các file và thư mục để đảm bảo an ninh. Ví dụ, bạn có thể cấp quyền đọc và thực thi cho user của web server (thường là www-data hoặc apache) để web server có thể truy cập và hiển thị nội dung.

Bảng so sánh ký hiệu và số trong chmod

Ký hiệu (Symbolic) Số (Numeric) Ý nghĩa
r 4 Quyền đọc
w 2 Quyền ghi
x 1 Quyền thực thi
rwx 7 Quyền đọc, ghi, thực thi
rw- 6 Quyền đọc, ghi
r-x 5 Quyền đọc, thực thi
r-- 4 Quyền đọc
--- 0 Không có quyền

Câu hỏi thường gặp (FAQ)

Làm thế nào để xem quyền của một file?

Bạn có thể sử dụng lệnh ls -l file_name để xem quyền của một file. Cột đầu tiên của kết quả sẽ hiển thị chuỗi quyền (ví dụ: -rwxr-xr--).

Tôi nên sử dụng ký hiệu hay số khi sử dụng chmod?

Việc lựa chọn giữa ký hiệu và số phụ thuộc vào sở thích cá nhân và độ phức tạp của việc thay đổi quyền. Ký hiệu dễ đọc và dễ hiểu hơn khi bạn chỉ muốn thay đổi một vài quyền cụ thể. Số lại tiện lợi hơn khi bạn muốn gán một bộ quyền hoàn chỉnh.

Làm thế nào để thay đổi quyền của tất cả các file trong một thư mục?

Bạn có thể sử dụng tùy chọn -R (recursive) của lệnh chmod. Ví dụ: chmod -R 755 mydirectory sẽ thay đổi quyền của thư mục mydirectory và tất cả các file và thư mục bên trong thành rwxr-xr-x.

Kết luận

Lệnh chmod là một công cụ thiết yếu để quản lý quyền truy cập file và thư mục trong Linux. Bằng cách hiểu rõ cú pháp và các tùy chọn của lệnh, bạn có thể bảo vệ dữ liệu của mình, kiểm soát quyền truy cập và đảm bảo an ninh hệ thống. Hy vọng bài viết này đã cung cấp cho bạn những kiến thức cần thiết để bắt đầu sử dụng chmod một cách hiệu quả. Hãy thử nghiệm và khám phá thêm các tính năng của lệnh này để làm chủ hệ thống Linux của bạn!

Last Updated : 21/08/2025