Quelle est la bonne façon de définir le contexte SELinux dans un RPM .spec?

14

J'essaie de créer un RPM qui cible RHEL4 et 5. Pour l'instant, j'appelle chcondepuis, %postmais plusieurs entrées Google disent "ce n'est pas comme ça que vous êtes censé le faire" avec une aide très limitée sur la bonne voie. J'ai également remarqué que fixfiles -R mypackage checkles fichiers sont incorrects lorsqu'ils sont corrects (comme prévu; la base de données RPM ne réalise pas ce que je veux).

  • Je dis spécifiquement RHEL4 parce qu'il ne pas avoir ce semanagequi semble être l' une des bonnes façons de le faire. (Ajoutez une nouvelle stratégie, puis exécutez restoreconsur vos répertoires dans %post.)

    • Je n'ai pas non plus besoin de mon propre contexte, juste httpd_cache_tsur un répertoire non standard.
  • J'ai également vu "laissez cpioprendre soin de lui" - mais j'ai ensuite un nouveau problème qu'un utilisateur de construction RPM non root ne peut pas exécuter chconsur les répertoires de construction. J'ai triché et je l'avais sudodans le fichier de spécifications, mais cela ne semblait pas avoir d'importance de toute façon.

Aaron D. Marasco
la source

Réponses:

9

Les directives d'emballage de Fedora contiennent un projet de document expliquant comment gérer SELinux dans les packages, et elles les utilisent semanage. Sans semanage, il semble que le support de RHEL 4 va être un hack, et il n'y a aucun moyen de contourner cela.

Selon les notes de publication de rpm 4.9.0 , il y a eu un certain support directement dans rpm pour la gestion des politiques SELinux, mais il a toujours été rompu:

  • Les anciennes versions de RPM prenaient en charge une directive% policy dans les spécifications pour attacher des politiques SELinux dans l'en-tête du package, mais cela n'a jamais été vraiment utilisable pour rien. Toute utilisation de la directive% policy dans les spécifications doit être supprimée car cette directive inutilisée empêche la construction avec RPM 4.9.0 et versions ultérieures, tout en ne faisant rien pour les anciennes versions.
  • À partir de RPM 4.9.0, le conditionnement des politiques SELinux est pris en charge via la nouvelle section% sepolicy de la spécification. Ces packages ne peuvent pas être construits, mais sont également installables sur les anciennes versions de RPM (mais les politiques incluses ne seront en aucun cas utilisées).

Je n'y vois aucune mention de contextes de fichiers, et je n'ai pu trouver aucune mention de prise en charge directe de contextes de fichiers (comme %attrdans la %filessection). Dans tous les cas, il semble que RHEL 6 ne soit qu'au rpm 4.8.0, donc (sauf si j'ai raté quelque chose), l' semanageitinéraire est aussi bon que nous allons pouvoir le faire au moins jusqu'à RHEL 7.

Steven Pritchard
la source