Lệnh chattr trong Linux là một tiện ích cho phép người dùng thay đổi thuộc tính tệp trên hệ thống tệp. Lệnh này cung cấp khả năng kiểm soát nâng cao đối với tệp bằng cách đặt các thuộc tính có thể sửa đổi hành vi của tệp theo những cách không thể đạt được thông qua các quyền thông thường. Ví dụ, khi sử dụng chattr, người ta có thể làm cho tệp không thể thay đổi bằng thuộc tính "+i", ngăn không cho tệp bị sửa đổi, xóa hoặc đổi tên, ngay cả bởi người dùng gốc. Các thuộc tính khác bao gồm "+a", cho phép tệp chỉ được mở ở chế độ thêm vào và "+u", đảm bảo rằng nội dung tệp được lưu để khôi phục. Các thuộc tính này có thể đặc biệt hữu ích để bảo mật các tệp hệ thống quan trọng, ngăn không cho xóa nhầm và quản lý tệp chi tiết hơn. Lệnh này phải được thực thi với quyền siêu người dùng và thường được quản trị viên hệ thống sử dụng để tăng cường tính bảo mật và tính toàn vẹn của các tệp quan trọng trong hệ thống tệp Linux.
Thông thường, một máy tính Linux được nhiều người dùng khác nhau sử dụng, vì vậy có khả năng những người dùng này truy cập vào một nhóm tệp chung. Điều này mở ra cánh cửa cho các vấn đề như vô tình xóa hoặc chỉnh sửa các tệp quan trọng, mà bạn, với tư cách là quản trị viên, chắc chắn không muốn.
Trong hướng dẫn này, chúng tôi sẽ giải thích công cụ này bằng một số ví dụ dễ hiểu. Nhưng trước khi làm điều đó, chúng tôi xin đề cập rằng tất cả các ví dụ ở đây đều đã được thử nghiệm trên Ubuntu 24.04 LTS và Debian 12.
Và đây là nội dung trang hướng dẫn nói về lệnh này:
Sau đây là một số ví dụ theo kiểu Hỏi & Đáp giúp bạn hiểu rõ hơn về cách lệnh chatter hoạt động.
Ví dụ:
Ảnh chụp màn hình sau đây cho thấy không có thao tác nào khác thành công trên tệp sau khi tệp trở thành chỉ đọc bằng chattr.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22493%22%20height=%22161%22%3E%3C/svg%3E
Lưu ý: Như bạn đã thấy, bạn cần có quyền root để sử dụng lệnh chattr.
chattr -i test.txt
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22367%22%20height=%2274%22%3E%3C/svg%3E
Vì vậy, bạn có thể thấy yếu tố chỉ đọc đã bị loại bỏ với tùy chọn -i.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22485%22%20height=%22140%22%3E%3C/svg%3E
Vì vậy, bạn có thể thấy rằng chúng ta có thể thêm vào tệp ngay bây giờ nhưng không thể chỉnh sửa thông tin hiện có hoặc xóa tệp. Để đảo ngược hành vi này, hãy sử dụng tùy chọn -a.
Ảnh chụp màn hình sau đây cho thấy giới hạn chỉ đọc đã được áp dụng thành công cho tất cả các tệp bên trong thư mục.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22494%22%20height=%22105%22%3E%3C/svg%3E
Ví dụ, ảnh chụp màn hình sau đây cho thấy đầu ra của lsattr cho thấy rõ ràng thuộc tính 'i' đã được áp dụng cho tất cả các tệp trong thư mục.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22308%22%20height=%2271%22%3E%3C/svg%3E
Chỉ để xác nhận lại, đây là kết quả sau khi tùy chọn -i được sử dụng.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22500%22%20height=%22107%22%3E%3C/svg%3E
Như bạn có thể thấy trong ảnh chụp màn hình ở trên, thuộc tính chỉ đọc đã bị xóa khỏi tất cả các tệp.
Thông thường, một máy tính Linux được nhiều người dùng khác nhau sử dụng, vì vậy có khả năng những người dùng này truy cập vào một nhóm tệp chung. Điều này mở ra cánh cửa cho các vấn đề như vô tình xóa hoặc chỉnh sửa các tệp quan trọng, mà bạn, với tư cách là quản trị viên, chắc chắn không muốn.
Trong hướng dẫn này, chúng tôi sẽ giải thích công cụ này bằng một số ví dụ dễ hiểu. Nhưng trước khi làm điều đó, chúng tôi xin đề cập rằng tất cả các ví dụ ở đây đều đã được thử nghiệm trên Ubuntu 24.04 LTS và Debian 12.
Lệnh chattr của Linux
Lệnh chattr được sử dụng để thay đổi thuộc tính tệp trên hệ thống tệp Linux. Sau đây là cú pháp của lệnh này:
Mã:
chattr [ -RVf ] [ -v version ] [ mode ] files...
Mã:
chattr changes the file attributes on a Linux file system.
The format of a symbolic mode is +-=[aAcCdDeijsStTu].
The operator '+' causes the selected attributes to be added to the
existing attributes of the files; '-' causes them to be removed; and
'=' causes them to be the only attributes that the files have.
The letters 'aAcCdDeijsStTu' select the new attributes for the files:
append only (a), no atime updates (A), compressed (c), no copy on write
(C), no dump (d), synchronous directory updates (D), extent format (e),
immutable (i), data journalling (j), secure deletion (s), synchronous
updates (S), no tail-merging (t), top of directory hierarchy (T), and
undeletable (u).
The following attributes are read-only, and may be listed by lsattr(1)
but not modified by chattr: compression error (E), huge file (h),
indexed directory (I), inline data (N), compression raw access (X), and
compressed dirty file (Z).
Not all flags are supported or utilized by all filesystems; refer to
filesystem-specific man pages such as btrfs(5), ext4(5), and xfs(5) for
more filesystem-specific details.
Câu hỏi 1. Sử dụng lệnh chattr như thế nào?
Giả sử bạn muốn biến một tệp thành chỉ đọc. Để thực hiện, hãy chạy lệnh chattr với tùy chọn +i và tên tệp làm đầu vào.Ví dụ:
Mã:
chattr +i test.txt
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22493%22%20height=%22161%22%3E%3C/svg%3E
Lưu ý: Như bạn đã thấy, bạn cần có quyền root để sử dụng lệnh chattr.
Câu hỏi 2. Làm thế nào để xóa giới hạn chỉ đọc do chattr áp đặt?
Rất đơn giản - tất cả những gì bạn phải làm là sử dụng tùy chọn -i thay vì +i. Ví dụ:chattr -i test.txt
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22367%22%20height=%2274%22%3E%3C/svg%3E
Vì vậy, bạn có thể thấy yếu tố chỉ đọc đã bị loại bỏ với tùy chọn -i.
Câu hỏi 3. Làm thế nào để cấp quyền chỉ thêm vào một tệp?
Đôi khi, bạn có thể không muốn hạn chế hoàn toàn một tệp. Ý tôi là bạn có thể muốn cung cấp cho người dùng quyền truy cập chỉ thêm vào một tệp để có thể thêm thông tin mới, nhưng không thể xóa hoặc chỉnh sửa thông tin hiện có. Điều này cũng có thể thực hiện được bằng cách sử dụng Chattr thông qua tùy chọn +a.
Mã:
chattr +a test.txt
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22485%22%20height=%22140%22%3E%3C/svg%3E
Vì vậy, bạn có thể thấy rằng chúng ta có thể thêm vào tệp ngay bây giờ nhưng không thể chỉnh sửa thông tin hiện có hoặc xóa tệp. Để đảo ngược hành vi này, hãy sử dụng tùy chọn -a.
Mã:
chattr -a test.txt
Câu hỏi 4. Làm thế nào để áp dụng hạn chế bằng chattr cho tất cả các tệp trong một thư mục?
Bạn có thể thực hiện việc này bằng cách sử dụng cờ -R, cho phép bạn thay đổi đệ quy các thuộc tính của thư mục và nội dung của chúng. Ví dụ, nếu bạn muốn biến tất cả các tệp bên trong thư mục test-dir thành chỉ đọc, hãy sử dụng lệnh chattr theo cách sau:
Mã:
chattr -R +i ./test-dir/
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22494%22%20height=%22105%22%3E%3C/svg%3E
Câu hỏi 5. Làm thế nào để kiểm tra các thuộc tính chattr được áp dụng trên các tệp?
Để kiểm tra xem thuộc tính chattr đã được áp dụng thành công hay chưa, chúng tôi đã thử thực hiện các thao tác như chỉnh sửa tệp hoặc xóa tệp đó. Nhưng một lệnh riêng biệt cho phép bạn dễ dàng xem các thuộc tính đã được áp dụng hay chưa. Lệnh đang đề cập là lsattr.
Mã:
lsattr [FILENAME]
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22308%22%20height=%2271%22%3E%3C/svg%3E
Chỉ để xác nhận lại, đây là kết quả sau khi tùy chọn -i được sử dụng.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22500%22%20height=%22107%22%3E%3C/svg%3E
Như bạn có thể thấy trong ảnh chụp màn hình ở trên, thuộc tính chỉ đọc đã bị xóa khỏi tất cả các tệp.