システムからパッケージ以外のすべてのファイルを削除するツール

システムからパッケージ以外のすべてのファイルを削除するツール

たとえば、ビルドまたはサーバーシステムをきれいに保つには、次のようにします。すべてのファイルが存在し、説明されていることを確認してください。パッケージメタデータを介して。職場では、引数なしで実行すると、rmどのパッケージでも言及されていないすべてのファイル/ディレクトリ(一部のツリーを除く)に対して/ステートメント付きのファイルを生成するための非常に優れたツールがあります。これはrmdir/homeその他~からrpm -Vそしてdebsums、パッケージですでに述べたファイルのみを確認してください。

DEB / RPM /ポート/その他のパッケージングシステムにも同様のツールがありますか? DEBが最善ですが、他のシステム(または他のシステムがない場合は独自のシステム)から移植することが可能です。

PS:私はいいえ代替アーキテクチャを探しています。ここで問題は、システム内のすべてのファイルを考慮することです。 VMなどは該当しません。

答え1

必要なものがファイル整合性チェッカーであれば、RPMはあなたのニーズに適しています。rpm -qaV(大文字のVに注意してください)。これは渡し、確認します:

  • ファイルサイズ
  • モード(権限とファイル形式)
  • MD5チェックサム
  • デバイス番号
  • readlinkパス(シンボルリンクが別のファイルを指している場合)
  • ユーザーの所有権
  • グループの所有権
  • 時間の変更

これはかなり包括的なリストでなければなりません。

rpm -qa --filesbypkg | awk '{print $2}'システムに記録されているすべてのファイルが一覧表示されます。
find / | grep -vf /tmp/files-on-system.txtRPMデータベースにないシステム上のすべてのファイルが検索されます。 1つのコマンドで両方のコマンドを実行する別の方法は次のとおりです。rpm -qf 'find /'#replace single quote with backtick 注:これはディレクトリにエラーファイルも表示します。

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

答え2

Debianとdpkgを使用する他のシステムでは、パッケージが提供するすべてのファイルのsort -u /var/lib/dpkg/infoリストが提供されます。システムに実際に存在するファイルのリストと比較すると、多数のファイルを提供するパッケージがないことがわかります。このリストはDebian Skigerを簡単に見ていますが、決して完全ではありません。

  • 明らかな容疑者:/etc/usr/local/opt/var、 、/home/srv様々なマウントポイント。
  • パッケージインストールスクリプトによって生成された多くのシンボリックリンク。通常、これはファイルがパッケージ内にあり、代替として置き換えられたためです。まず、新しいパッケージを解凍し、置き換えられた古いパッケージを削除し、最後に新しいパッケージのpostinstスクリプトがリンクを生成します。
  • いくつかの用途dpkg-divert
  • in /bootinitrd-*(インストールされたカーネルと追加のモジュールで自動的に再生成されます)とブートローダファイル(/boot/grub/*)。
  • では、/lib/modules/*モジュール依存ファイルとシンボルマップ自動的にモジュールをコンパイル(dkmsから)
  • パッケージのインストール時に唯一承認されたソースからダウンロードされる再配布不可能なさまざまなコンテンツ。ほとんどのドキュメントですが、いくつかのフォントもあります。
  • X11フォントは/usr/X11R6/lib/X11/fonts
  • CUPSバックエンドがからにコピーされ/usr/lib/cups/backend-available/ます/usr/lib/cups/backend/http/
  • インストール中にコンパイルされたさまざまなファイル:*.pyc(Python)、*.elc(Emacs)、*.dll(Mono)...
  • 生成された文書インデックス/usr/share/doc/HTML助ける)。

各ファイルを理解するには、その履歴を追跡する必要があります。つまり、監査に合格するには、自分が所有する文書だけを表示するのではなく、被監査人として各文書の有効性の証拠も提示しなければなりません。

古典的なアプローチは、次のツールを使用することです。引き継ぎ鉄線、ファイルが変更されると警告します。変更を追跡するためのより強力な機能を探している場合は、これです。バージョン管理。 Debian は/etc次のようにターンキーバージョンコントロールを提供します。マネージャーをお待ちください。 (残念ながら)基本インストールの一部ではありません。パッケージをインストールし、必要なバージョン管理システムを選択して/etc/etckeeper/etckeeper.conf実行しますetckeeper init。以下のすべての変更は、毎晩/etc実行または他のAPTフロントエンドの前後に自動的にコミットされます。apt-getこれらの自動コミットを無効にすることで、管理者が手動で実行し、etckeeper commitログメッセージを入力することができます。

答え3

きれいで一貫したビルドシステムが本当に必要な場合は、LVMが提供するものなどのファイルシステムスナップショットを使用する方が良いでしょう。 LVMに/ usrなどのファイルシステムを使用してシステムをインストールできます。その後、コマンドを使用して元の状態に復元したいファイルシステムのスナップショットを作成できますlvsnapshot。これらのスナップショットを正常にマウントするのではなく、書き込み可能にマウントできます。以前の状態に戻すには、スナップショットをアンマウントして削除してから再作成し、新しいスナップショットを再マウントするだけです。 /homeまたは他のファイルシステムを現在のままにしたい場合は、それをLVMに配置できますが、そのシステムのスナップショットを作成しないでください。

ソフトウェア展開またはカスタムインストールディスクをテストするために使用するもう1つの方法は、VirtualBoxやVMware Workstationなどの仮想マシンを使用することです。ディスク全体のスナップショットを撮り、要求に応じて復元できます。また、ホストの再起動時にシステムを一時停止するなどの利点もあります。仮想マシンが起動した後は、一時停止した状態で再起動します。具体的には、VirtualBoxは複数のディスクスナップショットを撮り、それを保存しながら古いスナップショットに復元できます。必要に応じて、2つ以上の行スナップショットを切り替えることができます。

関連情報