Moin,
mir ist aufgefallen, das die automatischen Updates aus der Bakery auf einigen meiner Linux System nicht funktionieren, da ein Problem beim installieren des neuen RPMs auftritt.
Das ganze passiert nur auf Systemen auf denen die SELinux Policy im “Enforcing” Mode läuft
[Admin2654@hugo ~]$ getenforce
Enforcing
Nach ein bisschen hin und her überlegen bin ich auch drauf gekommen was das Problem ist.
Der Agent wird ja (zumindest auf meinen Systemen) vom xinetd gestartet, das heißt er läuft im SELinux Kontext des xinted und das ist
inetd_child_t
Um ein RPM zu installieren, das auch Pre-/Postinstall Scripte enthält muss der Prozess aber im Kontext
rpm_script_t
laufen. Der Wechsel in diesen Kontext ist aber in der Standard SELinux Policy nicht erlaubt.
Dazu muss man sich eine kleine Policy Erweiterung bauen
module cmk 1.0;
require {
type inetd_child_t;
type rpm_script_t;
class process transition;
}
allow inetd_child_t rpm_script_t:process transition;
Einfach als cmk.te speichern
Den Sourcecode muss man jetzt noch in ein binäres Policy Modul umwandeln
checkmodule -M -m cmk.te -o cmk.mod
semodule_package -o cmk.pp cmk.mod
Das binary File muss man zumindest bei Redhat nur für die Major Revision erstellen also RHEL 7 oder 8 aber nicht für die Minor Revisions.
Das erstellte .pp File kann man einfach mit
semodule -i cmk.pp
auf dem Zielsystem installieren und dann klappt auch das automatische Aktualisieren des Agenten
Das installieren muss man nur einmal machen, danach ist die Policy dauerhaft angepasst.
Sicherheitstechnisch bedeutet das aber das jetzt jeder Prozess der vom xinetd gestartet wird SELinux seitig die Rechte hat ein RPM zu in-/deinstallieren. ‘root’ muss man aber trotzdem noch sein.
Hoffe mal das hilft irgendwem weiter
Frank