Security

刪除系統上所有非封包件的工具

  • May 5, 2011

例如,如果您想保持建構或伺服器系統的清潔,那麼能夠檢查所有文件是否存在並由包元數據說明是非常有用的。在工作中,我們有一個非常好的工具,如果在沒有任何參數的情況下執行,它只需為任何包未提及的任何和所有文件/目錄創建一個帶有rm/語句的文件(不包括一些樹,如)。這與and不同,它只檢查包已經提到的文件。rmdir``/homerpm -Vdebsums

DEB/RPM/Ports/其他打包系統有這樣的工具嗎?DEB 將是最好的,但從另一個系統(或我們自己的系統,如果沒有其他系統)移植可能是可行的。

PS:我不是在尋找替代架構。這裡的問題是絕對考慮系統上的每個文件。虛擬機等不適用。

如果你想要的是一個文件完整性檢查器,那麼 RPM 會做你想要的。rpm -qaV(注意大寫的 V)。這將通過並檢查:

  • 文件大小
  • 模式(權限和文件類型)
  • MD5 校驗和
  • 設備號(檢查是否有人通過在此處安裝另一個分區來隱藏文件
  • 讀取連結路徑(如果符號連結指向不同的文件)
  • 使用者所有權
  • 集團所有權
  • 修改時間

這應該是一個相當全面的清單。

rpm -qa --filesbypkg | awk '{print $2}'將列出系統上所有已被佔用的文件。

find / | grep -vf /tmp/files-on-system.txt將查找系統上不在 RPM 數據庫中的所有文件。在一個命令中完成這兩個命令的另一種方法是rpm -qf 'find /'#replace single quote with backtick 注意:這也會在目錄中標記為錯誤文件,例如

  • /dev
  • /home
  • /proc
  • /var/run
  • /var/log
  • /var/lib
  • /tmp

引用自:https://unix.stackexchange.com/questions/12662