Một câu lệnh Linux cực kỳ mạnh mẽ mà có thể bạn chưa dùng bao giờ
Một câu lệnh Linux cực kỳ mạnh mẽ mà có thể bạn chưa dùng bao giờ
Khi root cũng phải… bó tay
Chiều hôm thứ 6 vừa rồi, tôi ssh vào con server quen thuộc, review một số thứ và dọn dẹp vài file cũ. Gõ rm abcdxyz.log cái rẹt. Nhưng thay vì im lặng làm việc như mọi lần, terminal lại trả về:
rm: cannot remove 'abcdxyz.log': Operation not permitted
Tôi đang dùng user root. Nó không bị readonly, không bị process nào giữ và kể cả bạn có thử chmod 777, chown, kill -9, TẤT CẢ ĐỀU VÔ DỤNG.
Một câu lệnh nảy ra ngay trong đầu tôi sau đó mà câu lệnh này cũng đã từ lâu rồi chưa dùng lại câu lệnh có thể khiến root “chịu luôn”, chính là: chattr. Và đúng như vậy cậu em trong team đang dò log của ngày cũ nên đã bật mode “Bất khả xâm phạm”. Thấy cũng khá hữu ích nên viết bài này tới anh em.
Vậy chattr là gì?
chattr là viết tắt của “change attribute”. Nó không can thiệp vào permission (rwx), mà chơi ở tầng sâu hơn: các flag đặc biệt trong hệ thống file. Khi bạn gắn cờ +i cho một file, file đó trở thành immutable – không sửa được, không xóa được, không đổi tên được. Kể cả bạn là root.
Nó giống như một chiếc niêm phong trong thế giới Linux. Một khi đã dán tem “không được đụng”, mọi thao tác phá hoại sẽ bị kernel từ chối thẳng mặt. Chính xác rồi đấy tất cả luôn.
Muốn làm gì cũng phải… xin phép kernel bằng cách tháo cờ:
root@lab:~# chattr -i demofile.txt
Kiểm tra xem file có bị dính +i hay không
root@lab:~# lsattr demofile.txt
Output có thể trông như thế này:
----i--------e-- demofile.txt
Dấu i chính là thứ khiến bạn vò đầu bứt tai nãy giờ.
Những flag mạnh mẽ khác của chattr
Flag
Ý nghĩa ngắn gọn
+i
Immutable – không đụng được gì hết
+a
Append only – chỉ được ghi thêm, không xóa/sửa nội dung
+A
Không cập nhật thời gian truy cập
+d
Không backup file khi dùng lệnh dump
Thực tế thì +i và +a là hai flag phổ biến nhất. Mỗi cái có use-case riêng rất rõ ràng.
Dùng chattr trong thực tế như thế nào?
Thật sự là có khá nhiều cách sử dụng trong thực tế cái này tùy vào cách nghĩ của mỗi người thôi còn bản chất mình đã nói hết ở trên rồi. Anh em dùng sao vào mục đích gì là quyết định của anh em ở đây mình gợi ý để anh em tham khảo nhé.
1. Chống tool ghi đè file config
Bạn cấu hình DNS trong /etc/resolv.conf, nhưng cứ mỗi lần kết nối VPN hoặc DHCP renew là bị ghi đè mất. Khó chịu?
root@lab:~# chattr +i /etc/resolv.conf
Xong, để đó. Ai đụng vào là báo lỗi.
2. Bảo vệ ~/.ssh/authorized_keys
Bạn dùng key để SSH vào server. Nhưng kẻ xấu (hoặc một script ngu ngốc nào đó) có thể xóa mất file này.
root@lab:~# chattr +i ~/.ssh/authorized_keys
Dán niêm phong vào. An toàn tuyệt đối.
3. Log chỉ cho phép ghi thêm
Bạn muốn đảm bảo log không bị sửa, không bị xóa:
root@lab:~# chattr +a /var/log/secure
Chỉ được append. Muốn “xoá dấu vết” trong log? Không có mùa thu nào luôn :)))
Điều gì xảy ra khi dán +i vào file?
Không thể rm, mv, truncate, echo, nano, vim lên file đó.
Không thể rename file.
Không thể tạo hardlink đến file.
Cả backup script cũng có thể fail nếu logic là xóa file rồi tạo lại.
Nó cực kỳ mạnh. Đúng nghĩa “nếu bạn không biết đã bật +i, bạn sẽ rất cay cú khi sửa file đó hoài không được”.
Có “phạm vi ngoài vòng” nào không?
Không. Kernel không quan tâm bạn là root hay ai – nếu flag i còn đó, thì rm cũng vô dụng.
Chỉ có cách duy nhất là khi bạn tháo flag đi (chattr -i) thì mọi thứ mới trở lại như cũ.
Một vài lưu ý quan trọng
Chỉ dùng chattr trên các filesystem hỗ trợ (ext2, ext3, ext4, XFS…).
Tránh gắn +i vào thư mục system, trừ khi bạn hiểu rõ mình đang làm gì.
Ghi lại vào runbook: những file nào đã bị gắn cờ, ai gắn, và vì sao.
Tạm kết
chattr là một công cụ không mới, nhưng rất nhiều admin chưa từng chạm vào. Trong khi đó, chỉ cần một flag +i thôi cũng đủ cứu bạn khỏi nhiều rắc rối: từ DNS bị ghi đè, log bị xóa, đến user nào đó “lỡ tay” xóa nhầm file hệ thống.
Và điều thú vị nhất? Nó khiến bạn nhận ra rằng: trên Linux, đôi khi “quyền lực tối cao” không nằm ở root, mà nằm ở những cái cờ nho nhỏ bị giấu kỹ trong inode.
Bạn muốn bảo vệ server của mình tốt hơn? Đừng chỉ học chmod hay chown. Hãy nhớ rằng:
Có những file chỉ nên tồn tại theo đúng cách bạn tạo ra nó. Và chattr là con dấu bảo vệ cuối cùng.
Nếu bạn thấy bài viết hữu ích, đừng quên chia sẻ cho anh em và thử troll xem anh em trong team biết không nhé :)))
=============================
cở sở dữ liệu, cơ sở dữ liệu quốc gia, database, AI, trí tuệ nhân tạo, artificial intelligence, machine learning, deep learning, LLM, ChatGPT, DeepSeek, Grok, oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty