Read only file folder qua lệnh chattr trong linux

  • Monday 04/05/2020
chattr (Change Attribute) 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, do cho bạn có đang là user root đi nữa.
chattr có nhiều options, trong đó mình thường dùng:
+i: Khiến file immutable: 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 unset được thuộc tính này.
+a: không thể xóa file, không thể ghi đè, chỉ có thể append dữ liệu vào file
Add thuộc tính immutable cho file
Set thuộc tính cho file (yêu cầu quyền root)
$ touch zero2hero.txt
$ chattr +i zero2hero.txt
Liệt kê thuộc tính file: Chữ “i” cho thấy thuộc tính immutable đã được set (HÌNH 1)
$ lsattr zero2hero.txt
Kiểm tra: Không thể xóa, ghi nội dung, rename hoặc change permission (HÌNH 2)
Xóa bỏ thuộc tính (yêu cầu quyền root)
$ chattr -i zero2hero.txt
Chỉ cho phép append nội dung vào file
Set thuộc tính cho file (yêu cầu quyền root)
$ chattr +a zero2hero.txt
Liệt kê thuộc tính file: Chữ “a” cho thấy thuộc tính append only đã được set (HÌNH 3)
$ lsattr zero2hero.txt
Kiểm tra: Không thể xóa file, không thể ghi đè nhưng có thể append nội dung vào file (HÌNH 4)
Xóa bỏ buộc tính (yêu cầu quyền root)
$ chattr -a zero2hero.txt
Ứng dụng thực tế
Giữ các file quan trọng của hệ thống không cho phép user xóa (file cấu hình, file log v.v)
Không cho phép add user mới
$ chattr +i /etc/passwd
Không cho phép xóa history (chỉ được ghi thêm vào)
$ chattr +a ~/.bash_history
Không cho phép thay đổi DNS
$ chattr +i /etc/resolv.conf
có 1 bạn bị exploit bug redis, attacker dùng redis để ghi đè nội dung file authorized_keys của root, qua đó chiếm quyền điều khiển toàn bộ server. Áp dụng: không cho phép thay đổi nội dung file authorized_keys:
$ chattr +i /root/.ssh/authorized_keys
Ngoài sử dụng cho file, chattr cũng có thể apply cho thư mục, chức năng tương tự.