¿Cuál es la forma correcta de establecer el contexto SELinux en un RPM .spec?

14

Estoy tratando de construir un RPM que se dirija a RHEL4 y 5. En este momento llamo chcondesde, %postpero varias entradas de Google dicen "no es así como se supone que debes hacerlo" con ayuda muy limitada en la forma correcta . También he notado que fixfiles -R mypackage checkdice que los archivos están mal cuando están bien (como se esperaba; el RPM DB no se da cuenta de lo que quiero).

  • Digo específicamente RHEL4 porque no tiene lo semanageque parece ser una de las formas adecuadas de hacerlo. (Agregue una nueva política y luego ejecútela restoreconen sus directorios %post).

    • Tampoco necesito mi propio contexto, solo httpd_cache_ten un directorio no estándar.
  • También he visto "dejar que cpiose encargue", pero luego tengo un nuevo problema que un usuario de construcción RPM no root no puede ejecutar chconen los directorios de compilación. Hice trampa y tenía sudoen el archivo de especificaciones, pero eso no parecía importar de todos modos.

Aaron D. Marasco
fuente

Respuestas:

9

Las Pautas de empaquetado de Fedora tienen un borrador de documento que explica cómo manejar SELinux en paquetes, y lo usan semanage. Sin esto semanage, parece que apoyar a RHEL 4 será un truco, y no hay forma de evitarlo.

De acuerdo con las notas de la versión rpm 4.9.0 , ha habido cierto soporte directamente en rpm para administrar las políticas de SELinux, pero históricamente se ha roto:

  • Las versiones anteriores de RPM admitían una directiva%% en especificaciones para adjuntar políticas SELinux en el encabezado del paquete, pero esto nunca fue realmente utilizable para nada. Cualquier uso de la directiva% de política en las especificaciones debe eliminarse ya que esta directiva no utilizada evita la compilación con RPM 4.9.0 y posterior, sin hacer nada para las versiones anteriores.
  • A partir de RPM 4.9.0, el paquete de políticas de SELinux es compatible a través de la nueva sección% sepolicy en la especificación. Dichos paquetes no se pueden compilar, pero también se pueden instalar en versiones anteriores de RPM (pero las políticas incluidas no se utilizarán de ninguna manera).

No veo ninguna mención de los contextos de archivos allí, y no he podido encontrar ninguna mención del soporte directo de contexto de archivos (como %attren la %filessección). En cualquier caso, parece que RHEL 6 solo está en rpm 4.8.0, por lo que (a menos que me haya perdido algo) la semanageruta es tan buena como podremos hacer al menos hasta RHEL 7.

Steven Pritchard
fuente