共有ライブラリが実行可能なのはなぜですか?

共有ライブラリが実行可能なのはなぜですか?

ほとんどすべての共有ライブラリに/usr/lib/実行権限ビットが設定されているのはなぜですか?実装のユースケースはありません。いくつかの簡単な著作権とリリースノートを印刷するための機能のいくつかを接続しますが、main多くの場合、実行時にこれを行わずにセグフォルトを実行します。

もしそうなら、これを設定するポイントは何ですかx?すべてのライブラリパッケージャはこれを行う必要がありますか?共有ライブラリに権限がある場合はdlopen()どうなりますか0644

ベストアンサー1

HP-UXでは、共有ライブラリはmmap()を使用してメモリにマッピングされ、システムのすべてのメモリページに保護ビットがあります。これらの保護ビットは、カーネルお​​よびプロセッサハードウェアのメモリページ保護メカニズムと組み合わせられます。システムのメモリページの内容を実行するには、そのページにPROT_EXECが設定されている必要があります。これは、データ実行の脆弱性を防ぐのに便利な機能です。

mmap()呼び出しは、マップされるファイルの許可ビットを使用して、ファイルを含むマップされたメモリページの保護ビットを定義します。rwx -> PROT_READ | PROT_WRITE | PROT_EXEC(sys / mman.hから)。したがって、共有ライブラリをHP-UXで使用するには、共有ライブラリを含むファイルに実行権限があり、マッピングされたライブラリにも実行権限があることを確認する必要があります。

HP-UXシステムでは、モード644の共有ライブラリはコアダンプを生成します。

おすすめ記事