1. Home
  2. Linux
  3. Giới thiệu lệnh chattr giúp bảo vệ sự toàn vẹn của file
VnTips 6 tháng trước

Giới thiệu lệnh chattr giúp bảo vệ sự toàn vẹn của file

Lệnh chattr (Thay đổi thuộc tính) là một tiện ích dòng lệnh Linux được sử dụng để gán hoặc bỏ gán một số thuộc tính nhất định cho một tập tin, thư mục trong hệ thống Linux nhằm bảo đảm việc vô tình xóa hoặc sửa đổi các tập tin và thư mục quan trọng, ngay cả khi bạn đã đăng nhập với tư cách người dùng root.

Trong các hệ thống tệp gốc của Linux, tức là ext2, ext3, ext4, btrfs… hỗ trợ tất cả các flag, mặc dù tất cả các flag sẽ không hỗ trợ cho tất cả non-native FS. Người ta không thể xóa hoặc sửa đổi tập tin/thư mục khi các thuộc tính được đặt bằng lệnh chattr, mặc dù người ta có toàn quyền đối với nó.

Điều này rất hữu ích để đặt thuộc tính trong các tệp hệ thống như tệp passwd và tệp bóng trong đó chứa thông tin của người dùng.

Cú pháp của chattr

# chattr [operator] [flags] [filename]

Thuộc tính và flag

Sau đây là danh sách các thuộc tính phổ biến và các cờ liên quan có thể được đặt/bỏ đặt bằng lệnh chattr.

  1. Nếu một tệp được truy cập với tập thuộc tính ‘ A ‘, bản ghi thời gian của nó sẽ không được cập nhật.
  2. Nếu một tập tin được sửa đổi với tập thuộc tính ‘ S ‘, những thay đổi này sẽ được cập nhật đồng bộ trên đĩa.
  3. Một tập tin được đặt với thuộc tính ‘ a ‘, chỉ có thể mở ở chế độ chắp thêm để ghi.
  4. Một tập tin được đặt với thuộc tính ‘ i ‘, không thể sửa đổi (bảo vệ sự toàn vẹn của tập tin). Có nghĩa là không thể đổi tên, không tạo liên kết tượng trưng, ​​​​không thực thi, không thể ghi, chỉ superuser mới có thể bỏ đặt thuộc tính.
  5. Một tệp có thuộc tính ‘ j ‘ được đặt, tất cả thông tin của nó được cập nhật vào tạp chí ext3 trước khi được cập nhật vào chính tệp đó.
  6. Một tệp được đặt với thuộc tính ‘ t ‘, không hợp nhất đuôi.
  7. Một tệp có thuộc tính ‘ d ‘, sẽ không còn ứng cử viên nào để sao lưu khi quá trình kết xuất được chạy.
  8. Khi một file có thuộc tính ‘ u ‘ bị xóa, dữ liệu của nó sẽ được lưu lại. Điều này cho phép người dùng yêu cầu hủy xóa nó.

Operator

  1. + : Thêm thuộc tính vào thuộc tính hiện có của tệp.
  2.  : Xóa thuộc tính cho thuộc tính hiện có của tệp.
  3. = : Giữ các thuộc tính hiện có mà tệp có.

Ở đây, chúng tôi sẽ trình bày một số ví dụ về lệnh chattr để đặt/bỏ đặt thuộc tính cho một tệp và thư mục.

1. Cách thêm thuộc tính vào file để bảo đảm không bị xóa

Với mục đích ví dụ, chúng tôi đã sử dụng thư mục demo và tệp important_file.conf tương ứng. Trước khi thiết lập thuộc tính, hãy đảm bảo xác minh rằng các tệp hiện có có bất kỳ thuộc tính nào được đặt bằng lệnh ‘ ls -l ‘. Bạn đã thấy kết quả chưa, hiện tại chưa có thuộc tính nào được đặt.

[root@vntips vntips]# ls -l
total 0
drwxr-xr-x. 2 root root 6 Aug 31 18:02 demo
-rwxrwxrwx. 1 root root 0 Aug 31 17:42 important_file.conf

Để đặt thuộc tính, chúng ta sử dụng dấu + và để hủy đặt, hãy sử dụng dấu  bằng lệnh chattr. Vì vậy, hãy đặt bit bất biến trên các tệp có cờ +i để ngăn chặn bất kỳ ai xóa tệp, ngay cả người dùng root cũng không có quyền xóa tệp đó.

[root@vntips vntips]# chattr +i demo/
[root@vntips vntips]# chattr +i important_file.conf

Lưu ý : Tùy chọn +i chỉ có thể được đặt bởi superuser (tức là tài khoản root) hoặc người dùng có đặc quyền sudo mới có thể đặt.

Sau khi thiết lập bit bất biến, hãy xác minh thuộc tính bằng lệnh ‘ lsattr ‘.

[root@vntips vntips]# lsattr
----i----------- ./demo
----i----------- ./important_file.conf

Bây giờ, đã cố gắng xóa mạnh, đổi tên hoặc thay đổi quyền, nhưng nó không cho phép nói “ Operation not allow “.

[root@vntips vntips]# rm -rf demo/
rm: cannot remove ademo/a: Operation not permitted
[root@vntips vntips]# mv demo/ demo_alter
mv: cannot move ademo/a to ademo_altera: Operation not permitted
[root@vntips vntips]# chmod 755 important_file.conf
chmod: changing permissions of aimportant_file.confâ: Operation not permitted

2. Cách bỏ đặt thuộc tính trên File

Trong ví dụ trên, chúng ta đã thấy cách đặt thuộc tính để bảo mật và ngăn chặn các tệp vô tình bị xóa, ở đây trong ví dụ này, chúng ta sẽ xem cách đặt lại quyền (hủy đặt thuộc tính) và cho phép tạo một tệp có thể thay đổi hoặc có thể thay đổi bằng cách sử dụng flag -i.

[root@vntips vntips]# chattr -i demo/ important_file.conf

Sau khi đặt lại quyền, hãy xác minh trạng thái bất biến của tệp bằng lệnh ‘ lsattr ‘.

[root@vntips vntips]# lsattr
---------------- ./demo
---------------- ./important_file.conf

Bạn thấy trong kết quả trên đã flag ‘ -i ‘, điều đó có nghĩa là bạn có thể xóa tất cả tệp và thư mục nằm trong thư mục vntips một cách an toàn.

[root@vntips vntips]# rm -rf *

[root@vntips vntips]# ls -l
total 0

3. Cách bảo mật các tập tin /etc/passwd và /etc/shadow

Đặt thuộc tính bất biến trên các tệp /etc/passwd hoặc /etc/shadow , giúp chúng an toàn khỏi việc vô tình xóa hoặc bị hack và nó cũng sẽ vô hiệu hóa việc tạo tài khoản người dùng.

[root@vntips vntips]# chattr +i /etc/passwd
[root@vntips vntips]# chattr +i /etc/shadow

Bây giờ hãy thử tạo người dùng hệ thống mới, bạn sẽ nhận được thông báo lỗi ‘cannot open /etc/passwd ‘.

[root@vntips vntips]# useradd tecmint
useradd: cannot open /etc/passwd

Bằng cách này, bạn có thể đặt quyền bất biến đối với các tệp quan trọng hoặc tệp cấu hình hệ thống của mình để ngăn chặn việc xóa.

4. Nối dữ liệu mà không sửa đổi dữ liệu hiện có trên Tệp

Giả sử, bạn chỉ muốn cho phép mọi người chỉ thêm dữ liệu vào một file mà không thay đổi hoặc sửa đổi dữ liệu đã nhập, bạn có thể sử dụng thuộc tính “ a ” như sau.

[root@vntips vntips]# chattr +a example.txt

[root@vntips vntips]# lsattr example.txt
-----a---------- example.txt

Sau khi cài đặt chế độ chắp thêm, tệp chỉ có thể được mở để ghi dữ liệu ở chế độ chắp thêm. Bạn có thể bỏ đặt thuộc tính chắp thêm như sau.

[root@vntips vntips]# chattr -a example.txt

Bây giờ hãy thử thay thế nội dung đã có trên một tệp example.txt , bạn sẽ gặp lỗi thông báo ‘ Operation not allow ‘.

[root@vntips vntips]# echo "replace contain on file." > example.txt
-bash: example.txt: Operation not permitted

Bây giờ hãy thử thêm nội dung mới vào tệp example.txt hiện có và xác minh nó.

[root@vntips vntips]# echo "replace contain on file." >> example.txt
[root@vntips vntips]# cat example.txt
Here is the example to test 'a' attribute mean append only.
replace contain on file.

5. Cách bảo mật thư mục

Để bảo mật toàn bộ thư mục và các tệp trong đó, chúng tôi sử dụng chuyển đổi ‘ -R ‘ (recursively) với flage ‘ +i ‘ cùng với đường dẫn đầy đủ của thư mục.

[root@vntips vntips]# chattr -R +i myfolder

Sau khi thiết lập thuộc tính recursively, hãy thử xóa thư mục và các tệp của nó.

[root@vntips vntips]# rm -rf myfolder/
rm: cannot remove 'myfolder/': Operation not permitted

Để hủy đặt quyền, chúng tôi sử dụng cùng một công tắc ‘-R’ với flag ‘-i’ cùng với đường dẫn đầy đủ của thư mục.

[root@vntips vntips]# chattr -R -i myfolder

Nếu bạn đã đọc đến đây, hãy nhấn Like hoặc để lại ý kiến của bạn hoặc nếu chia sẻ với bạn bè nếu cảm thấy bài viết hữu ích.

54 lượt xem | 0 bình luận

Avatar

Xem nhanh