共有ライブラリの依存関係を持つファイルの種類は何ですか?

共有ライブラリの依存関係を持つファイルの種類は何ですか?

find共有ライブラリの依存関係がある可能性があるファイルのみをコマンドで検索できるようにする方法を見つけようとしています(呼び出し時に出力を生成することを意味しますldd)。

ファイルセット(バイナリ、テキスト、オフィスなど)のすべての依存関係を見つけるには、そのファイルを繰り返してすべて呼び出し、find . -type f出力を解析します。ldd

findテストオプションがあることを知っていますが、-executableそれがすべての基盤をカバーしているかどうかはわかりません。

「プログラムが動的にリンクされていません」などの出力が提供されていることを知っていても、共有lddライブラリを持つことができないファイルに対して私のコマンドを保存したいと思います。

ベストアンサー1

lddElf ファイルの依存関係をダンプします。すべての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などを構築する場合はこれが必要です。

おすすめ記事