Das von RHEL7 bereitgestellte Tomcat-Paket unterstützt mehrere Instanzen durch die Erstellung von Verzeichnissen und Symlinks. Sobald eine solche Mehrfachinstanz erstellt und als RPM gepackt wurde, können die zusätzlichen Instanzen aufgrund von Selinux-Fehlern nicht gestartet werden.
Die Lösung besteht darin, Selinux in der RPM-Verpackung korrekt zu konfigurieren. Ich habe jedoch Schwierigkeiten, eine kanonische Beschreibung zu finden, wie dies zu tun ist.
Woher kommt die Selinux-Konfiguration, wenn Tomcat in RHEL7 installiert ist?
Bearbeiten: die Frage unter Wie kann man den SELinux-Kontext in einer RPM-.spec richtig einstellen? Hatte sich jemand die Mühe gemacht, es tatsächlich zu lesen, verwies auf die veralteten RHEL4- und RHEL5-Distributionen und ist 7 Jahre alt. Wie in dieser Frage klar angegeben, bezieht sich dies auf RHEL7 im Jahr 2018. Die Antwort auf die 7 Jahre alte Frage und die Antwort auf diese Frage unterscheiden sich stark voneinander.
Antworten:
Die SELinux-Konfiguration wird vom
selinux-policy-targeted
Paket bereitgestellt , das die Standardrichtlinienkonfiguration für die Distribution enthält, einschließlich der SELinux-Konfiguration für Tomcat.Ich konnte zwei alte Fedora-Verpackungsentwürfe finden, die die SELinux-Konfiguration in RPM-Verpackungen beschreiben.
PackagingDrafts / SELinux schlägt vor , einschließlich der Dateikennzeichnung Konfiguration in
%post
und%postun
Abschnitte der Spec - Datei durch Ausführensemanage fcontext -a
undsemanage fcontext -d
jeweils Laufenrestorecon
/fixfiles
danach.Wie von Graham Legett hervorgehoben , ist es nützlich zu beachten, dass durch die Verwendung von
semanage
in%pre
oder%post
Abschnitten der Spezifikation der gesamte Python-Stack zusammen mit derpolicycoreutils-python
Abhängigkeit von der Installationszeit hinzugefügt wird . Mitrestorecon
fügtpolicycoreutils
, was wiederum bringtsed
,gawk
undgrep
als Zeitabhängigkeiten installieren.Ein besserer Weg, um die erforderlichen Regeln für die Dateibeschriftung bereitzustellen, wäre ein SELinux-Richtlinienmodul. Richtlinienmodule bieten eine übersichtlichere Oberfläche für die Verwaltung modularer Richtlinien (Kennzeichnungsregeln werden nicht mit lokalen Änderungen gemischt
semanage
).Für Ihr Richtlinienmodul mit Dateibeschriftungsregeln müssen Sie eine Typdurchsetzungsdatei und eine Dateikontextbeschriftungsdatei bereitstellen. Eine Typ-Durchsetzungsdatei ist erforderlich, auch wenn Sie der Richtlinie keine Änderungen hinzufügen. Eine beispielhafte Dummy-Typ-Durchsetzungsdatei
mymodule.te
:Die Regeln für die Dateikennzeichnung sind in
mymodule.fc
und folgen denselben:Mit
selinux-policy-devel
kann das Modulpaket mit [Anmerkung 1] kompiliert werden :In Bezug auf Verpackungsrichtlinienmodule empfiehlt SELinux Policy Modules Packaging Draft in ähnlicher Weise, die Abschnitte
%post
und%postun
der Spezifikationsdatei zu verwenden, um die Richtlinie mitsemodule
undrestorecon
/ zu installierenfixfiles
. Eine Beispielspezifikationsdatei wird ebenfalls bereitgestellt.[Anmerkung 1] Das Beispielrichtlinienmodul kann ohne
selinux-policy-devel
Verwendung voncheckmodule
undsemodule_package
direkt generiert werden. Dazu müssten die Richtliniendateien ohne Makros geschrieben werden.quelle
selinux-policy-targeted
, die Regeln für die Dateibeschriftung enthält. Daher wird wahrscheinlich keine SELinux-Konfiguration mit dem Tomcat-Paket geliefert.