Bảo vệ File Folder với lệnh “Chattr” trên Linux

Ở môi trường Linux thông thường bạn sẽ sử dụng chmod để phân quyền hoặc bảo vệ tập tin. Và hôm nay mình sẽ giới thiệu đến bạn một lệnh khác đó là chattr.

chattr (Change Attribute) là một lệnh cực kỳ tiện ích của Linux được sử dụng để set/unset  một số thuộc tính nhất định cho một file, thư mục trong hệ thống Linux nhằm bảo đảm việc xóa hoặc sửa đổi các file 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.

Cú pháp thực hiện

chattr [operator] [flags] [filename]

Các operator:

  • + :Thêm thuộc tính cho File
  • -: Gỡ bỏ thuộc tính ra khỏi File
  • = : Giữ nguyên thuộc tính của File

Thuộc tính và Flag

Có nhiều flag và ở đây mình giới thiệu một số flag thường dùng nhất là

  • i: Flag này khiến file không thể rename (đổi tên), không thể tạo symlink, không thể thực thi, không thể write (ghi). Và chỉ có user ROOT mới set và unset được thuộc tính này
  • a: Flag này làm cho file không thể Rename, không thể tạo được symlink, không thể thực thi, chỉ có thể thêm nội dung vào file (được write), và chỉ user ROOT mới có quyền set và unset thuộc tính này.
  • d: File có thuộc tính này sẽ không được backup khi tiến trình dump chạy
  • S: Nếu một file có thuộc tính này bị sửa, thay đổi sẽ được cập nhật đồng bộ trên ổ cứng.
  • A: Khi khi có thuộc tính được truy cập, giá trị atime của file sẽ không thay đổi.

1. Cách thêm thuộc tính vào tệp để bảo vệ khỏi bị xóa

Bây giờ mình sẽ thực hiện thêm thuộc tính i cho file và thư mục đã tạo như bên dưới.

┌──(root㉿danglee)-[/home/danglee/Documents/Demo]
└─# ll
total 8
drwxr-xr-x 2 danglee danglee 4096 Jan  4 14:03 Folder_demo
-rw-r--r-- 1 danglee danglee   10 Jan  4 14:03 file_demo.txt    

Sử dụng chattr +i để thêm thuộc tính vào

┌──(root㉿danglee)-[/home/danglee/Documents/Demo]
└─# chattr +i file_demo.txt
                                                                                                                                      
┌──(root㉿danglee)-[/home/danglee/Documents/Demo]
└─# chattr +i Folder_demo

Kiểm tra thử sau khi thêm thuộc tính đã có hiệu lực hay là chưa với lệnh lsattr. Nếu hiện như bên dưới bạn sẽ thấy dòng i như vậy là đã có thuộc tính rồi.

┌──(root㉿danglee)-[/home/danglee/Documents/Demo]
└─# lsattr 
----i---------e------- ./file_demo.txt
----i---------e------- ./Folder_demo

Bây giờ bạn hãy xoá thử xem có được không nhé. Sử dụng rm -rf để xoá. Khi xoá đều trả về thông báo Operation not permitted

2. Cách để unset thuộc tính đã thêm

Để Unset thuộc tính mà bạn đã thêm cho file, thư mục bạn sử dụng operator là -i

Bây giờ mình sẽ xoá thử xem đã xoá được chưa với lệnh rm -rf. Kết quả bên dưới cho thấy khi bỏ thuộc tính i thì đã thực hiện bình thường.

3. Chỉ cho phép thêm nội dung vào file

Bây giờ mình sẽ thực hiện chỉ cho phép thêm nội dung vào file với thuộc tính a (append).

Ví dụ thực tế

Bây giờ mình sẽ sửa nội dung của file file_demo.txt và kết quả là không được phép.

Nhưng khi nối thêm nội dung vào thì thực hiện được.

Để gở bỏ thuộc tính này bạn sử dụng lệnh chattr -a để gở bỏ.

4. Sử dụng chattr để bảo vệ thư mục

Để bảo vệ các thư mục và file bên trong bạn hãy sử dụng Flag để bảo vệ. Sử dụng -R và +i với đường dẫn của thư mục đó.

Ví dụ thực tế

Mình sẽ bảo vệ thư mục với tên Folder_demo và các file ở bên trong. Sau đó thực hiện xoá thử để xem kết quả.

Như kết quả bên dưới bạn sẽ thấy khi mình sử dụng rm -rf để xoá thì không thể xoá được.

Để unset quyền trên, ta sử dụng flag -R và -i với đường dẫn thư mục.

Như vậy mình đã hoàn tất một bài hướng dẫn ngắn về việc bảo vệ file, thư mục trên Linux với lệnh Chattr. Hy vọng bài viết sẽ hữu ích cho bạn khi sử dụng Linux.

Related Posts

Leave a Reply

Your email address will not be published. Required fields are marked *