Apa cara yang tepat untuk mengatur konteks SELinux dalam RPM .spec?

14

Saya mencoba membangun RPM yang menargetkan RHEL4 dan 5. Saat ini saya menelepon chcondari %posttetapi beberapa entri Google mengatakan "itu bukan cara Anda seharusnya melakukannya" dengan bantuan yang sangat terbatas di jalan yang benar . Saya juga memperhatikan bahwa fixfiles -R mypackage checkmengatakan file-file itu salah ketika mereka benar (seperti yang diharapkan; RPM DB tidak menyadari apa yang saya inginkan) ..

  • Saya secara khusus mengatakan RHEL4 karena tidak memiliki semanageyang tampaknya menjadi salah satu cara yang tepat untuk melakukannya. (Tambahkan kebijakan baru dan jalankan restorecondi direktori Anda di %post.)

    • Saya juga tidak memerlukan konteks saya sendiri, hanya httpd_cache_tpada direktori non-standar.
  • Saya juga telah melihat "biarkan cpioitu terjadi" - tetapi kemudian saya memiliki masalah baru yang tidak dapat dijalankan oleh pengguna bangunan RPM non-root chconpada direktori build. Saya selingkuh dan ada sudodi file spesifikasi tapi itu sepertinya tidak masalah.

Aaron D. Marasco
sumber

Jawaban:

9

The Fedora Kemasan Pedoman memiliki draft dokumen yang menjelaskan bagaimana menangani SELinux dalam paket, dan mereka menggunakan semanage. Tanpa semanage, sepertinya mendukung RHEL 4 akan menjadi peretasan, dan tidak ada jalan lain untuk itu.

Menurut catatan rilis rpm 4.9.0 , ada beberapa dukungan langsung dalam rpm untuk mengelola kebijakan SELinux, tetapi secara historis telah rusak:

  • Versi RPM yang lebih lama mendukung% policy directive secara khusus untuk melampirkan kebijakan SELinux ke header paket, tetapi ini tidak pernah benar-benar dapat digunakan untuk apa pun. Setiap penggunaan% kebijakan direktif dalam spesifikasi harus dihapus karena arahan yang tidak digunakan ini mencegah pembangunan dengan RPM 4.9.0 dan yang lebih baru, sementara tidak melakukan apa pun untuk versi yang lebih lama.
  • Dimulai dengan RPM 4.9.0, pengemasan polis SELinux didukung melalui bagian% sepolicy baru dalam spesifikasi. Paket seperti itu tidak dapat dibangun, tetapi juga dapat diinstal pada versi RPM yang lebih lama (tetapi kebijakan yang disertakan tidak akan digunakan dengan cara apa pun).

Saya tidak melihat penyebutan konteks file di sana, dan saya belum dapat menemukan penyebutan dukungan konteks file langsung (seperti %attrpada %filesbagian ini). Bagaimanapun, sepertinya RHEL 6 hanya pada rpm 4.8.0, jadi (kecuali saya telah melewatkan sesuatu) semanagerutenya sebagus kita akan dapat melakukan setidaknya sampai RHEL 7.

Steven Pritchard
sumber