Thứ Sáu, 22 tháng 8, 2025

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

e1a1bd1a-8d07-4416-82ae-5c9ccd254690

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 777chownkill -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.

Làm thử cho vui

root@lab:~# echo "data" > demofile.txt
root@lab:~# chattr +i demofile.txt

Giờ thử xóa:

root@lab:~# rm demofile.txt
rm: cannot remove 'demofile.txt': Operation not permitted

Hay sửa:

root@lab:~#echo "new" > demofile.txt
bash: demofile.txt: Permission denied

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
+iImmutable – không đụng được gì hết
+aAppend only – chỉ được ghi thêm, không xóa/sửa nội dung
+AKhông cập nhật thời gian truy cập
+dKhô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ể rmmvtruncateechonanovim 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é :)))

=============================
Website không chứa bất kỳ quảng cáo nào, mọi đóng góp để duy trì phát triển cho website (donation) xin vui lòng gửi về STK 90.2142.8888 - Ngân hàng Vietcombank Thăng Long - TRAN VAN BINH
=============================
Nếu bạn không muốn bị AI thay thế và tiết kiệm 3-5 NĂM trên con đường trở thành DBA chuyên nghiệp hay làm chủ Database thì hãy đăng ký ngay KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE, được Coaching trực tiếp từ tôi với toàn bộ bí kíp thực chiến, thủ tục, quy trình của gần 20 năm kinh nghiệm (mà bạn sẽ KHÔNG THỂ tìm kiếm trên Internet/Google) từ đó giúp bạn dễ dàng quản trị mọi hệ thống Core tại Việt Nam và trên thế giới, đỗ OCP.
- CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
- Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
2 khóa học online qua video giúp bạn nhanh chóng có những kiến thức nền tảng về Linux, Oracle, học mọi nơi, chỉ cần có Internet/4G:
- Oracle cơ bản: https://bit.ly/admin_1200
- Linux: https://bit.ly/linux_1200
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
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

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master