Как правильно установить контекст SELinux в RPM .spec?

14

Я пытаюсь создать RPM, который нацелен на RHEL4 и 5. Сейчас я звоню chconиз, %postно несколько записей Google говорят: «Это не то, что вы должны делать» с очень ограниченной помощью на правильном пути. Я также заметил, что fixfiles -R mypackage checkговорит, что файлы неправильные, когда они правы (как и ожидалось; RPM DB не понимает, что я хочу) ..

  • Я специально говорю RHEL4 , потому что он не имеет , semanageкоторый , кажется, один из подходящих способов сделать это. (Добавьте новую политику и затем запустите ее restoreconв каталогах %post.)

    • Мне также не нужен мой собственный контекст, просто httpd_cache_tв нестандартном каталоге.
  • Я также видел «давай cpioпозаботимся об этом», но у меня возникла новая проблема, заключающаяся в том, что пользователь, не имеющий прав root, не может работать chconв каталогах сборки. Я изменял и имел sudoв файле спецификации, но это все равно не имело значения.

Аарон Д. Мараско
источник

Ответы:

9

В Руководстве по упаковке Fedora есть проект документа, объясняющего, как обращаться с SELinux в пакетах, и как они его используют semanage. Без semanageэтого, похоже, что поддержка RHEL 4 будет взломом, и нет пути к этому.

Согласно примечаниям к выпуску rpm 4.9.0 , в rpm была некоторая поддержка для управления политиками SELinux, но она исторически была нарушена:

  • Более старые версии RPM поддерживали директиву% policy в спецификации для присоединения политик SELinux к заголовку пакета, но это никогда не использовалось ни для чего. Любое использование директивы% policy в спецификациях должно быть удалено, так как эта неиспользуемая директива предотвращает сборку с RPM 4.9.0 и новее, но ничего не делает для более старых версий.
  • Начиная с RPM 4.9.0, упаковка политики SELinux поддерживается через новый раздел% sepolicy в спецификации. Такие пакеты не могут быть собраны, но их можно установить и на более старые версии RPM (но включенные политики не будут использоваться никоим образом).

Я не вижу упоминаний о контекстах файлов там, и я не смог найти никаких упоминаний о прямой поддержке контекста файлов (как %attrв %filesразделе). В любом случае, похоже, что RHEL 6 работает только на оборотах 4.8.0, поэтому (если я что-то пропустил) semanageмаршрут такой же хороший, как мы сможем сделать, по крайней мере, до RHEL 7.

Стивен Притчард
источник