Hướng dẫn sử dụng lệnh chmod Linux cho người mới bắt đầu

theanh

Administrator
Nhân viên
Lệnh chmod của Linux được sử dụng để thay đổi quyền đối với tệp và thư mục trong hệ điều hành dựa trên Linux. Lệnh này cho phép người dùng xác định ai có thể đọc, ghi hoặc thực thi tệp bằng cách sửa đổi cài đặt quyền. Quyền thường được gán cho ba loại: chủ sở hữu tệp, nhóm mà tệp thuộc về và những người khác (tất cả những người khác). Lệnh chmod có thể được sử dụng với ký hiệu tượng trưng (ví dụ: chmod u+x filename để thêm quyền thực thi cho người dùng) hoặc ký hiệu số (ví dụ: chmod 755 filename để đặt quyền đọc, ghi và thực thi cụ thể cho từng loại). Lệnh này rất cần thiết để quản lý quyền truy cập trên hệ thống, đảm bảo rằng các tệp và thư mục có cài đặt bảo mật phù hợp.

Xin lưu ý rằng tất cả các ví dụ và hướng dẫn được đề cập trong hướng dẫn này đều đã được thử nghiệm trên Ubuntu 24.04 và phiên bản chmod mà chúng tôi sử dụng là 8.25.

Cơ bản về Chmod​

Hãy xem xét ví dụ lệnh sau:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22499%22%20height=%2240%22%3E%3C/svg%3E


Cột đầu tiên trong kết quả đầu ra là thứ chúng ta quan tâm. Bỏ qua dấu '-' ban đầu (biểu thị loại tệp). Các trường còn lại trong cột có thể được chia nhỏ hơn nữa như sau: rw- , rw- và r--. Đây là các quyền mà chủ sở hữu tệp, nhóm mà tệp thuộc về và những người khác có khi nói đến tệp này.

Điều này có nghĩa là chủ sở hữu có cả quyền đọc (r) và quyền ghi (w), cũng như nhóm. Tuy nhiên, những người khác chỉ có quyền đọc đối với tệp. Xin lưu ý rằng chúng tôi giả định rằng người dùng hiện tại sở hữu tệp.

Bây giờ, giả sử yêu cầu là cấp cho mọi người quyền thực thi tệp này. Sau đây là cách thực hiện:
Mã:
chmod +x script.sh
Sau đây là các quyền hiện tại:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22496%22%20height=%2221%22%3E%3C/svg%3E


Ký tự 'x' thêm vào trong các quyền dành cho chủ sở hữu, nhóm và những người khác biểu thị rằng mọi người hiện có quyền thực thi đối với tập tin.

Tuy nhiên, có nhiều khả năng là bạn không muốn mọi người đều có quyền thực thi đối với một tập tin. Còn nếu yêu cầu là chỉ cấp quyền thực thi cho chủ sở hữu/người dùng hiện tại đối với script.sh thì sao.

Vâng, đối với điều này, bước đầu tiên bây giờ là lấy lại quyền thực thi từ mọi người, bạn có thể thực hiện điều này bằng lệnh sau:
Mã:
chmod -x script.sh
Sau đó cấp rõ ràng cho chủ sở hữu:
Mã:
chmod u+x script.sh
Như bạn đã làm đoán, 'u+x' có nghĩa là cấp (+) cho chủ sở hữu/người dùng hiện tại (u) thực thi (x) quyền truy cập vào tệp. Tương tự, đối với nhóm, bạn có thể sử dụng 'g' và đối với những người khác, bạn có thể sử dụng 'o'.

Xin lưu ý rằng bất cứ khi nào bạn muốn cấp/thu hồi một tập hợp quyền chung cho/từ tất cả mọi người, bạn có thể sử dụng 'a' thay vì 'ugo'. Ý tôi là, thế này:
Mã:
chmod ugo-x script.sh
có thể được thay thế bằng thế này:
Mã:
chmod a-x script.sh
Ngoài ra, hãy nhớ rằng nếu không có cái nào trong số này ('u', 'g', 'o' và 'a') được chỉ định rõ ràng, thì mặc định cũng được coi là 'a'.

Tiếp tục, nếu muốn, bạn cũng có thể chỉ cần sao chép các quyền được cấp cho, ví dụ, chủ sở hữu/người dùng hiện tại và có chúng cho nhóm hoặc những người khác. Đối với điều này, hãy sử dụng dấu '='.

Ví dụ, để sao chép các quyền của chủ sở hữu/người dùng cho nhóm, hãy sử dụng lệnh sau:
Mã:
chmod g=u script.sh
Một kịch bản khác có thể là sao chép các quyền cho một tệp cụ thể và có chúng cho tệp của bạn. Đối với điều này, hãy sử dụng tùy chọn dòng lệnh --reference. Sau đây là mẫu chung để sử dụng tùy chọn dòng lệnh này:
Mã:
chmod --reference=[source-file] [destination file]
Trong lệnh trên, source-file là tệp có các bit quyền mà bạn muốn sao chép và destination-file là tệp có các bit quyền mà bạn muốn thay đổi.

Tiếp tục, cũng có một ký hiệu số (còn được gọi là biểu diễn bát phân) mà bạn có thể sử dụng để yêu cầu chmod thay đổi quyền. Có ba số bạn chơi trong chế độ này: 4, 2 và 1. Trong khi 4 là để đọc, hai số còn lại là để ghi và thực thi.

Ví dụ, hãy xem xét ví dụ sau:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22499%22%20height=%2236%22%3E%3C/svg%3E


Bây giờ, giả sử nhiệm vụ là thêm quyền thực thi cho chủ sở hữu/người dùng, xóa quyền ghi nhưng thêm quyền thực thi cho nhóm và xóa tất cả các quyền của những người khác. Điều này có thể được thực hiện như sau:
Mã:
chmod 750 script.sh
Trong lệnh trên, '7' dành cho người dùng, là kết quả của 4+2+1 vì yêu cầu đối với người dùng là phải có tất cả các quyền. Tương tự, '5' dành cho nhóm, là kết quả của 4+0+1 vì yêu cầu là chỉ cấp quyền đọc và thực thi cho nhóm. Cuối cùng, '0' dành cho những người khác, là kết quả của 0+0+0, vì yêu cầu là thu hồi tất cả các quyền từ những người khác.

Đối với những người xử lý liên kết tượng trưng, đây là một số điều đáng biết:
Mã:
chmod never changes the permissions of symbolic links; the chmod system call cannot change their permissions. This is not a problem since the
permissions of symbolic links are never used. However, for each symbolic link listed on the command line, chmod changes the permissions of
the pointed-to file. In contrast, chmod ignores symbolic links encountered during recursive directory traversals.

Tham chiếu dòng lệnh​

Lệnh chmod trong Linux có một số tùy chọn dòng lệnh sửa đổi hành vi của nó. Sau đây là danh sách các tùy chọn được sử dụng phổ biến nhất:
  • -R, --recursive: Tùy chọn này áp dụng các thay đổi quyền một cách đệ quy cho tất cả các tệp và thư mục trong thư mục được chỉ định. Tùy chọn này hữu ích khi bạn muốn thay đổi quyền của một thư mục và toàn bộ nội dung của nó cùng một lúc.

    Ví dụ: chmod -R 755 /path/to/directory

  • -c, --changes: Tùy chọn này chỉ báo cáo khi có thay đổi. Nếu quyền được sửa đổi thành công, nó sẽ đưa ra một thông báo cho biết sự thay đổi.

    Ví dụ: chmod -c 644 filename

  • -v, --verbose: Tùy chọn này cung cấp thông tin chi tiết về mọi tệp được xử lý, cho dù quyền đã được thay đổi hay chưa.

    Ví dụ: chmod -v 755 filename

  • -reference=RFILE: Thay vì chỉ định quyền trực tiếp, tùy chọn này cho phép bạn đặt quyền của tệp hoặc thư mục để khớp với tệp hoặc thư mục khác (RFILE).

    Ví dụ: chmod --reference=file1 file2

  • -f, --silent, --quiet: Tùy chọn này sẽ ngăn chặn hầu hết các thông báo lỗi, khiến lệnh chạy mà không hiển thị đầu ra cho các lỗi.

    Ví dụ: chmod -f 755 filename
Các tùy chọn này cho phép sử dụng chmod một cách linh hoạt trong nhiều tình huống khác nhau, từ việc điều chỉnh tệp đơn lẻ đến việc thay đổi quyền thư mục trên quy mô lớn.

Kết luận​

Trong hướng dẫn này, chúng tôi đã thảo luận hầu hết các kiến thức cơ bản liên quan đến công cụ này và các ví dụ chúng tôi đã thảo luận nhằm mục đích làm rõ những kiến thức cơ bản đó.

Xin lưu ý rằng thảo luận của chúng tôi chủ yếu tập trung vào các tệp. Bạn nên ghi nhớ một số chi tiết khi sử dụng chmod với các thư mục. Để biết tất cả thông tin đó (cũng như thông tin chi tiết hơn về chmod), hãy truy cập trang hướng dẫn của công cụ.
 
Back
Bên trên