find
共有ライブラリの依存関係がある可能性があるファイルのみをコマンドで検索できるようにする方法を見つけようとしています(呼び出し時に出力を生成することを意味しますldd
)。
ファイルセット(バイナリ、テキスト、オフィスなど)のすべての依存関係を見つけるには、そのファイルを繰り返してすべて呼び出し、find . -type f
出力を解析します。ldd
find
テストオプションがあることを知っていますが、-executable
それがすべての基盤をカバーしているかどうかはわかりません。
「プログラムが動的にリンクされていません」などの出力が提供されていることを知っていても、共有ldd
ライブラリを持つことができないファイルに対して私のコマンドを保存したいと思います。
答え1
ldd
Elf ファイルの依存関係をダンプします。すべてのElfファイルはbytesで始まります。\x7F 'E' 'L' 'F'
これはおそらくファイルをテストする最速の方法です。ただし、find
ファイルの内容を読み取るオプションはありません。find
主にファイル名、モードビットなどのディレクトリリストのメタデータを表示します。
ただし、Elfファイルを実行するには実行ビットを設定する必要があります。実行ビットのないElfファイルがあると実行できないので、大変気にしなくてもいいです。したがって、検索を高速化する高速な方法を探している場合は、実行ビットを確認するのが安全です。
-perm /555
代わりにお勧めします-executeable
。 1つ目は実行ビットをチェックし、2つ目は現在のユーザーがそれを実行できることを確認するためです。
しかし、jofelが言及したPythonのような動的言語に加えて、多くのCプログラムはPAMライブラリ(/lib/security/pam_*.so
)とlibc "nss"ライブラリ(/lib/libnss*.so
)に動的にリンクされています。 chrootなどを構築する場合はこれが必要です。