Ở 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àya
: 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ạyS
: 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.