
Đối với Linux, thông thường chúng ta sử dụng phân quyền bằng lệnh chmod để bảo vệ tập tin. Hôm nay Sandclock xin giới thiệu đến các bạn một cách khác. Đó là sử dụng lệnh chattr.
Mục lục
1. Cách thêm thuộc tính trên file để bảo vệ file khỏi bị xóa
2. Cách để unset thuộc tính đã thêm cho file
3. Chỉ cho phép nối thêm nội dụng vào file
4. Cách dùng chattr
để bảo vệ thư mục
5. Áp dụng lệnh chattr
để bảo vệ file /etc/passwd
và /etc/shadow
Nội dung
chattr
là viết tắt của Change Attribute. Đây là câu lệnh cho phép bạn thay đổi thuộc tính của file giúp bảo vệ file khỏi bị xóa hoặc ghi đè nội dung, dù cho bạn có đang là user root đi nữa.
Cú pháp lệnh:
chattr [operator] [flags] [filename]
Các operator:
+
: Thêm thuộc tính cho file-
: Gỡ bỏ thuộc tính khỏi file=
: Giữ nguyên thuộc tính của file
Các flag (hay các thuộc tính của file):
Có nhiều flag, ở đây tôi sẽ giới thiệu các flag thường dùng là:
i
: Flag này khiến file không thể rename, không thể tạo symlink, không thể thực thi, không thể write. Chỉ có user root mới set và unset được thuộc tính này.a
: Flag này khiến file không thể rename, không thể tạo symlink, không thể thực thi, chỉ có thể nối thêm nội dung vào file. Chỉ có user root mới set và unset được 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 file có thuộc tính được truy cập, giá trịatime
của file sẽ không thay đổi
Lưu ý: Tất cả các lệnh dưới đây đều chạy dưới quyền user root.
Trong bài viết này, tôi đã tạo trước một file Sandclock.txt
trong thư mục vidu
. Nội dung file như sau:
[[email protected] vidu]# cat Sandclock.txt Sandclock.vn [[email protected] vidu]#
1. Cách thêm thuộc tính trên file để bảo vệ file khỏi bị xóa
Chúng ta thêm thuộc tính i
(immutable) cho file.
[[email protected] vidu]# chattr +i Sandclock.txt
Xem lệnh trên đã có hiệu lực chưa bằng cách dùng lệnh lsattr
:
[[email protected] vidu]# lsattr ----i----------- ./Sandclock.txt
Bây giờ ta thử xóa file trên:
[[email protected] vidu]# rm -rf Sandclock.txt rm: cannot remove ‘Sandclock.txt’: Operation not permitted [[email protected] vidu]# mv Sandclock.txt nhanhoa.txt mv: cannot move ‘Sandclock.txt’ to ‘nhanhoa.txt’: Operation not permitted [[email protected] vidu]# chmod 755 Sandclock.txt chmod: changing permissions of ‘Sandclock.txt’: Operation not permitted
Có thể thấy rằng chúng ta không thể xóa hoặc thay đổi file trên.
2. Cách để unset thuộc tính đã thêm cho file
Ta sử dụng operator -
VÍ dụ tôi sẽ unset thuộc tính i
trên file Sandclock.txt
[[email protected] vidu]# chattr -i Sandclock.txt
Sau khi bỏ thuộc tính i
khỏi file, ta có thể thay đổi file một cách bình thường:
[[email protected] vidu]# mv Sandclock.txt nhanhoa.txt [[email protected] vidu]# lsattr ---------------- ./nhanhoa.txt [[email protected] vidu]# ll total 4 -rw-r--r-- 1 root root 12 Jun 2 13:34 nhanhoa.txt [[email protected] vidu]#
3. Chỉ cho phép nối thêm nội dụng vào file
Chúng ta thêm thuộc tính a
(append) cho file
[[email protected] vidu]# chattr +a nhanhoa.txt [[email protected] vidu]# lsattr -----a---------- ./nhanhoa.txt
Thử sửa nội dung file này:
[[email protected] vidu]# echo "sua noi dung file" > nhanhoa.txt -bash: nhanhoa.txt: Operation not permitted
Có thể thấy là không sửa được nội dung.
Nhưng chúng ta có thể nối nội dung file:
[[email protected] vidu]# echo "noi noi dung file" >>nhanhoa.txt [[email protected] vidu]# cat nhanhoa.txt Sandclock.vn noi noi dung file [[email protected] vidu]#
Ta có thể gỡ bỏ thuộc tính này với lệnh
[[email protected] vidu]# chattr -a nhanhoa.txt
4. Cách dùng chattr
để bảo vệ thư mục
Để bảo vệ cả thư mục và các file bên trong thư mục đó, ta dùng flag -R
(recursively) và +i
với đường dẫn của thư mục đó.
[[email protected] ~]# chattr -R +i vidu/
Thử xóa thư mục này đi
[[email protected] ~]# rm -rf vidu/ rm: cannot remove ‘vidu/nhanhoa.txt’: Permission denied
Có thể thấy ta không thể xóa thư mục vidu và các file bên trong nó.
Để unset quyền trên, ta sử dụng flag -R
(recursively) và -i
với đường dẫn của thư mục đó.
[[email protected] ~]# chattr -R -i vidu/
Sau khi chạy lệnh này, ta có thể sửa, xóa thư mục và file bên trong như bình thường.
5. Áp dụng lệnh chattr
để bảo vệ file /etc/passwd
và /etc/shadow
Thêm thuộc tính i
cho các file này để tránh bị xóa nhầm. Lưu ý rằng ta không thể tạo thêm user trên khi sử dụng cách này.
[[email protected] ~]# chattr +i /etc/passwd [[email protected] ~]# chattr +i /etc/shadow
Thử tạo thêm user:
[[email protected] ~]# useradd nhanhoa useradd: cannot open /etc/passwd
Có thể thấy ta không thể thêm user mới vào hệ thống.
Với cách này, bạn có thể đặt quyền không thể sửa đổi cho các file hệ thống quan trọng hoặc các file cấu hình quan trọng để tránh bị xóa.
Kết luận
Như vậy Sandclock đã giới thiệu xong cho bạn cách sử dụng cơ bản lệnh chattr.
Chúc các bạn thành công!!
Tham khảo: https://www.tecmint.com/chattr-command-examples/
