CLI #3: Giới thiệu lệnh chattr để bảo vệ sự toàn vẹn của file

30/12/2020

Đố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ạ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 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:

[root@dungdbhost1 vidu]# cat Sandclock.txt Sandclock.vn [root@dungdbhost1 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.

[root@dungdbhost1 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:

[root@dungdbhost1 vidu]# lsattr ----i----------- ./Sandclock.txt

Bây giờ ta thử xóa file trên:

[root@dungdbhost1 vidu]# rm -rf Sandclock.txt rm: cannot remove ‘Sandclock.txt’: Operation not permitted [root@dungdbhost1 vidu]# mv Sandclock.txt nhanhoa.txt mv: cannot move ‘Sandclock.txt’ to ‘nhanhoa.txt’: Operation not permitted [root@dungdbhost1 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

[root@dungdbhost1 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:

[root@dungdbhost1 vidu]# mv Sandclock.txt nhanhoa.txt [root@dungdbhost1 vidu]# lsattr ---------------- ./nhanhoa.txt [root@dungdbhost1 vidu]# ll total 4 -rw-r--r-- 1 root root 12 Jun  2 13:34 nhanhoa.txt [root@dungdbhost1 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

[root@dungdbhost1 vidu]# chattr +a nhanhoa.txt [root@dungdbhost1 vidu]# lsattr -----a---------- ./nhanhoa.txt

Thử sửa nội dung file này:

[root@dungdbhost1 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:

[root@dungdbhost1 vidu]# echo "noi noi dung file" >>nhanhoa.txt [root@dungdbhost1 vidu]# cat nhanhoa.txt Sandclock.vn noi noi dung file [root@dungdbhost1 vidu]#

Ta có thể gỡ bỏ thuộc tính này với lệnh

[root@dungdbhost1 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 đó.

[root@dungdbhost1 ~]# chattr -R +i vidu/

Thử xóa thư mục này đi

[root@dungdbhost1 ~]# 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 đó.

[root@dungdbhost1 ~]# 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.

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

Thử tạo thêm user:

[root@dungdbhost1 ~]# 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/

Sandclock IDC thành lập vào năm 2012, là công ty chuyên nghiệp tại Việt Nam trong lĩnh vực cung cấp dịch vụ Hosting, VPS, máy chủ vật lý, dịch vụ Firewall Anti DDoS, SSL… Với 10 năm xây dựng và phát triển, ứng dụng nhiều công nghệ hiện đại, Sandclock IDC đã giúp hàng ngàn khách hàng tin tưởng lựa chọn, mang lại sự ổn định tuyệt đối cho website của khách hàng để thúc đẩy việc kinh doanh đạt được hiệu quả và thành công.
Bài viết liên quan

[DirectAdmin] Các loại tài khoản và các gói trong Direct Admin (phần 2)

Để vận hành được Direct Admin, ta cần phải có kiến thức về các loại tài khoản và các gói trong...
30/12/2020

CÀI ĐẶT VÀ CẤU HÌNH XAMPP TRÊN CentOS 7/8

Xampp là chương trình tạo máy chủ Web (Web Server) được tích hợp sẵn Apache, PHP, MySQL, FTP Server, Mail...
24/12/2020

[Apache] Cấu hình Basic Authentication

Basic Authentication là kiểu xác thực cơ bản nhất của một Web Server Apache Mô hình Các bước...
30/12/2020
Bài Viết

Bài Viết Mới Cập Nhật

Hướng dẫn chuyển đổi windows server windows evaluation to standard và active windows server 2008 + 2012 + 2016 + 2019
26/10/2021

How to Update Ubuntu Linux
24/10/2021

Squid Proxy Manager cài đặt và quản lý Proxy Squid tự động trên ubuntu
20/10/2021

Hướng dẫn cài đặt Apache CloudStack 4.15.2.0
19/10/2021

Hướng dẫn ký file PDF bằng chữ ký số (chữ ký điện tử) và sửa lỗi mới nhất 2021 foxit reader
19/10/2021