Lệnh chattr: cách thiết lập và quản lý thuộc tính tệp tin

Lệnh chattr là một tiện ích mạnh mẽ trên hệ điều hành Linux, giúp người dùng quản lý thuộc tính của tệp tin và thư mục. Công cụ này đặc biệt hữu ích trong việc bảo vệ dữ liệu quan trọng khỏi bị xóa hoặc sửa đổi, ngay cả khi có quyền root.

Tổng quan về lệnh chattr

Lệnh chattr (Change Attribute) cho phép thiết lập hoặc loại bỏ một số thuộc tính trên các tệp tin thuộc hệ thống tệp ext2, ext3, ext4, btrfs,... Một khi một tệp tin được gán các thuộc tính bảo vệ, ngay cả tài khoản quản trị cũng không thể can thiệp nếu không hủy bỏ các cờ bảo vệ trước.

Điều này đặc biệt quan trọng khi quản lý các tệp tin hệ thống như /etc/passwd hay /etc/shadow, giúp đảm bảo an toàn cho thông tin đăng nhập và hạn chế các thao tác không mong muốn.

chattr command examples

Cú pháp lệnh chattr

chattr [toán tử] [cờ] [tệp tin/thư mục]

Trong đó:

  • Toán tử: + (thêm thuộc tính), - (loại bỏ thuộc tính), = (thiết lập thuộc tính cụ thể).
  • Cờ: Xác định thuộc tính cần áp dụng.

Các thuộc tính quan trọng

Dưới đây là một số cờ quan trọng mà lệnh chattr hỗ trợ:

  • +i (Immutable): Tệp tin không thể bị xóa, đổi tên hoặc sửa đổi.

  • +a (Append-only): Chỉ có thể nối thêm nội dung vào tệp tin, không thể chỉnh sửa hoặc xóa dữ liệu cũ.

  • +A (No atime update): Hệ thống không cập nhật thời gian truy cập.

  • +S (Synchronous updates): Mọi thay đổi được ghi trực tiếp xuống ổ đĩa ngay lập tức.

  • +j (Journaled file): Nội dung tệp tin được ghi vào nhật ký của hệ thống tệp trước khi thay đổi chính thức.

  • +d (No dump): Bỏ qua tệp tin khi thực hiện sao lưu bằng lệnh dump.

  • +u (Undeletable): Khi tệp bị xóa, nội dung có thể được khôi phục.

Các tình huống sử dụng lệnh chattr

1. Chống xóa nhầm tệp tin quan trọng

Giả sử bạn có tệp config.cfg và muốn ngăn chặn bất kỳ ai xóa hoặc sửa đổi nó:

sudo chattr +i config.cfg

Bây giờ, nếu cố gắng xóa tệp:

rm config.cfg
rm: cannot remove 'config.cfg': Operation not permitted

Muốn hủy bảo vệ, bạn cần loại bỏ thuộc tính +i:

sudo chattr -i config.cfg

2. Bảo vệ tệp tin hệ thống /etc/passwd/etc/shadow

Để tránh thay đổi thông tin người dùng hoặc mật khẩu một cách vô tình hoặc do tấn công:

sudo chattr +i /etc/passwd
sudo chattr +i /etc/shadow

Nếu cố gắng thêm người dùng mới, hệ thống sẽ báo lỗi:

useradd newuser
useradd: cannot open /etc/passwd

Muốn chỉnh sửa lại tệp, bạn cần bỏ thuộc tính +i trước:

sudo chattr -i /etc/passwd
sudo chattr -i /etc/shadow

3. Chế độ chỉ ghi nối tiếp (append-only)

Nếu muốn bảo vệ tệp nhật ký (logfile.log) sao cho chỉ có thể thêm nội dung mà không thể chỉnh sửa:

sudo chattr +a logfile.log

Khi thử sửa nội dung tệp:

echo "Sửa nội dung" > logfile.log
-bash: logfile.log: Operation not permitted

Nhưng vẫn có thể thêm dữ liệu:

echo "Dòng mới" >> logfile.log

Muốn bỏ thuộc tính +a, dùng lệnh:

sudo chattr -a logfile.log

4. Bảo vệ toàn bộ thư mục

Nếu bạn muốn bảo vệ thư mục backup và tất cả các tệp tin bên trong khỏi bị xóa hoặc sửa đổi:

sudo chattr -R +i backup

Thử xóa thư mục sẽ gặp lỗi:

rm -rf backup/
rm: cannot remove 'backup/': Operation not permitted

Muốn chỉnh sửa hoặc xóa thư mục, cần bỏ thuộc tính +i:

sudo chattr -R -i backup

Kiểm tra thuộc tính với lệnh lsattr

Để kiểm tra thuộc tính đã thiết lập trên tệp tin/thư mục, sử dụng:

lsattr

Ví dụ đầu ra:

----i----------- config.cfg
----a----------- logfile.log
----i----------- /etc/passwd

Kết luận

Lệnh chattr là một công cụ hữu ích giúp bảo vệ tệp tin và thư mục trong hệ thống Linux khỏi các thao tác không mong muốn. Dù bạn là quản trị viên hệ thống hay người dùng thông thường, việc hiểu và sử dụng lệnh này có thể giúp nâng cao mức độ an toàn cho dữ liệu của bạn.

Hãy áp dụng lệnh chattr một cách hợp lý để bảo vệ các tệp quan trọng trong hệ thống của bạn!