
私は仕事でアプリケーションをテストしていましたが、SELinuxサポートシステムでインストールが失敗しました。私たちが投稿した回避策には、エラーセンターのライブラリファイルでchconコマンドを実行することが含まれます。
chcon -t textrel_shlib_t /usr/lib/ourfile.so.1.0.20
RHEL5ではこの機能が機能し、SELinuxを完全に無効にすることなくアプリケーションを正常に実行できます。
RHEL6 では、chcon コマンドはエラーを提供しませんが、アプリケーションがデーモンで始まっている場合は、次のように同じエラーが表示されます。/etc/init.d/ourapp
私の主な関心事は、アップデートの回避策を見つけることです(問題のアプリケーションライブラリは外部認証プロセスに送信され、6ヶ月間変更することはできません)。しかし、これがRHEL5からRHEL6に意図的に変更されたことを示すものかもしれません。 。
答え1
非公式SELinux FAQの貢献このソリューション。
これは Linux という拡張機能が原因です。執行シールド。プログラムがスタック内でコードを実行するのを防ぎ、問題を軽減します。スタックスマッシング攻撃。
ほとんどの共有ライブラリは実行可能スタックを必要としないため、次の手順を実行してライブラリに実行可能スタックが必要ないことを示す必要があります。
execstack -c /usr/lib/ourfile.so.1.0.20
使用後実行スタック、プログラムをテストして実行を継続してください。実際にスタックでコードを実行しようとする間違ったコードがあると、競合が発生します。