Wie Ihr ( und .tux. )Â im letzten Bericht zu selinux-policy lesen konntet, wurde das SEL Problem mit einem generellen Downgrade erstmal behoben. Heute schauen wir uns an, wie man das trotz aller Gegenwehr von Red Hat wieder auf den letzten aktuellen Stand geupdated bekommt đ
Fedora und die Repostrukturen
Wenn man dnf downgrade benutzt, bekommt man nicht automatisch die letzte Version von einem Paket installiert, sondern nur die nĂ€chst kleinste im Repository (Repo) und genau da happerts meiner Meinung nach bei Fedora und Red Hat. Man sollte ja annehmen, daĂ die aktuelle Version und die vorherige Version eines Paketes zur VerfĂŒgung stehen, tun Sie aber nicht. Fedora betreibt ein Basis Repo und ein Updates Repo. Eine funktionierende alte Fassung liegt im Basis Repo, die aktuellste im Updates Repo. Zwischenversionen gibt es leider keine und das ist, denke ich, ein Fehler von Seiten der Distribution.
Immer wieder Koji
Und wieder ist es Koji, die Buildverwaltung fĂŒr Fedora, die uns bei der Sache als nĂŒtzliche Datenquelle dient:
https://koji.fedoraproject.org/koji/buildinfo?buildID=1076199
Dort holen wir uns die nötigen RPMs fĂŒr die lokale Installation:
https://kojipkgs.fedoraproject.org//packages/selinux-policy/3.13.1/283.34.fc27/noarch/selinux-policy-targeted-3.13.1-283.34.fc27.noarch.rpm
https://kojipkgs.fedoraproject.org//packages/selinux-policy/3.13.1/283.34.fc27/noarch/selinux-policy-devel-3.13.1-283.34.fc27.noarch.rpm
https://kojipkgs.fedoraproject.org//packages/selinux-policy/3.13.1/283.34.fc27/noarch/selinux-policy-doc-3.13.1-283.34.fc27.noarch.rpm
https://kojipkgs.fedoraproject.org//packages/selinux-policy/3.13.1/283.34.fc27/noarch/selinux-policy-3.13.1-283.34.fc27.noarch.rpm
Wer meiner Anweisung gefolgt ist, und in die dnf.conf eine Sperre fĂŒr das Paket eingetragen hat, muĂ diese Sperre jetzt natĂŒrlich wieder entfernen, bevor er das Update durchfĂŒhren kann.
Manuelles DNF Update
Der Befehl „dnf update ./selinux-policy-*“ ist unser Freund:
[root]# dnf update ./selinux-policy-* Letzte PrĂŒfung auf abgelaufene Metadaten: vor 0:24:25 am Di 10 Jul 2018 09:59:33 CEST. AbhĂ€ngigkeiten sind aufgelöst. ================================================================================================================================================================================================================================================================================ Paket Arch Version Paketquelle GröĂe ================================================================================================================================================================================================================================================================================ Aktualisieren: selinux-policy noarch 3.13.1-283.34.fc27 @commandline 541 k selinux-policy-devel noarch 3.13.1-283.34.fc27 @commandline 1.4 M selinux-policy-doc noarch 3.13.1-283.34.fc27 @commandline 2.7 M selinux-policy-targeted noarch 3.13.1-283.34.fc27 @commandline 10 M TransaktionsĂŒbersicht ================================================================================================================================================================================================================================================================================ Aktualisieren 4 Pakete GesamtgröĂe: 15 M Ist dies in Ordnung? [j/N]:j Pakete werden heruntergeladen: TransaktionsĂŒberprĂŒfung wird ausgefĂŒhrt TransaktionsprĂŒfung war erfolgreich. Transaktion wird getestet Transaktionstest war erfolgreich. Transaktion wird ausgefĂŒhrt Vorbereitung lĂ€uft : 1/1 Aktualisieren : selinux-policy-3.13.1-283.34.fc27.noarch 1/8 AusgefĂŒhrtes Scriptlet: selinux-policy-3.13.1-283.34.fc27.noarch 1/8 AusgefĂŒhrtes Scriptlet: selinux-policy-targeted-3.13.1-283.34.fc27.noarch 2/8 Aktualisieren : selinux-policy-targeted-3.13.1-283.34.fc27.noarch 2/8 AusgefĂŒhrtes Scriptlet: selinux-policy-targeted-3.13.1-283.34.fc27.noarch 2/8 Aktualisieren : selinux-policy-doc-3.13.1-283.34.fc27.noarch 3/8 Aktualisieren : selinux-policy-devel-3.13.1-283.34.fc27.noarch 4/8 AusgefĂŒhrtes Scriptlet: selinux-policy-devel-3.13.1-283.34.fc27.noarch 4/8 AufrĂ€umen : selinux-policy-devel-3.13.1-283.14.fc27.noarch 5/8 AufrĂ€umen : selinux-policy-doc-3.13.1-283.14.fc27.noarch 6/8 AufrĂ€umen : selinux-policy-targeted-3.13.1-283.14.fc27.noarch 7/8 AusgefĂŒhrtes Scriptlet: selinux-policy-targeted-3.13.1-283.14.fc27.noarch 7/8 AufrĂ€umen : selinux-policy-3.13.1-283.14.fc27.noarch 8/8 AusgefĂŒhrtes Scriptlet: selinux-policy-3.13.1-283.14.fc27.noarch 8/8 Running as unit: run-ra699effd01cd4ceba2ad927e7889ce3b.service Running as unit: run-r27b6453c4a5e4d2ab971a1766a434a30.service ĂberprĂŒfung lĂ€uft : selinux-policy-3.13.1-283.34.fc27.noarch 1/8 ĂberprĂŒfung lĂ€uft : selinux-policy-targeted-3.13.1-283.34.fc27.noarch 2/8 ĂberprĂŒfung lĂ€uft : selinux-policy-doc-3.13.1-283.34.fc27.noarch 3/8 ĂberprĂŒfung lĂ€uft : selinux-policy-devel-3.13.1-283.34.fc27.noarch 4/8 ĂberprĂŒfung lĂ€uft : selinux-policy-targeted-3.13.1-283.14.fc27.noarch 5/8 ĂberprĂŒfung lĂ€uft : selinux-policy-3.13.1-283.14.fc27.noarch 6/8 ĂberprĂŒfung lĂ€uft : selinux-policy-devel-3.13.1-283.14.fc27.noarch 7/8 ĂberprĂŒfung lĂ€uft : selinux-policy-doc-3.13.1-283.14.fc27.noarch 8/8 Aktualisiert: selinux-policy.noarch 3.13.1-283.34.fc27 selinux-policy-devel.noarch 3.13.1-283.34.fc27 selinux-policy-doc.noarch 3.13.1-283.34.fc27 selinux-policy-targeted.noarch 3.13.1-283.34.fc27 Fertig.
Nicht vergessen die dnf.conf wieder mit einer Sperre zu versehen :
# cat /etc/dnf/dnf.conf
[main]
gpgcheck=1
installonly_limit=3
clean_requirements_on_remove=True
exclude=selinux-pol*
Damit wĂ€ren wir jetzt auf dem Stand, vor dem defekten Paket und bekommen erstmal keine Updates mehr fĂŒr die selinux-policies.
Daher schauen wir doch mal in ein solches Paket rein. Jetzt ist selinux-policy kein sehr nĂŒtzliches Beispiel, es setzt nĂ€mlich lediglich die System-Konfiguration und andere Metainfos. Viel spannender ist das selinux-policy-targeted Paket, daĂ die eigentlichen Regeln enthĂ€lt. U.a. finden wir dies File darin:
/usr/share/selinux/targeted/default/active/modules/100/gnome/cil
Wenn man sich das jetzt mit less ansieht, sieht man nichts, da es bzip2 komprimiert ist. Daher brauchen wir jetzt das hier:
bzless /usr/share/selinux/targeted/default/active/modules/100/gnome/cil
u.A. findet man dann dort die Beschreibungen welche Dateien welche SEL-Contexte haben sollen:
(Die Liste ist nicht vollstĂ€ndig und nur fĂŒr die eine Gnome Klasse)
…
(filecon „/var/run/user/[^/]*/\.orc(/.*)?“ any (system_u object_r gstreamer_home_t ((s0) (s0))))
(filecon „/var/run/user/[^/]*/dconf(/.*)?“ any (system_u object_r config_home_t ((s0) (s0))))
(filecon „/var/run/user/[^/]*/keyring.*“ any (system_u object_r gkeyringd_tmp_t ((s0) (s0))))
(filecon „/root/\.cache(/.*)?“ any (system_u object_r cache_home_t ((s0) (s0))))
(filecon „/root/\.color/icc(/.*)?“ any (system_u object_r icc_data_home_t ((s0) (s0))))
(filecon „/root/\.config(/.*)?“ any (system_u object_r config_home_t ((s0) (s0))))
(filecon „/root/\.kde(/.*)?“ any (system_u object_r config_home_t ((s0) (s0))))
(filecon „/root/\.gconf(d)?(/.*)?“ any (system_u object_r gconf_home_t ((s0) (s0))))
(filecon „/root/\.dbus(/.*)?“ any (system_u object_r dbus_home_t ((s0) (s0))))
(filecon „/root/\.gnome2(/.*)?“ any (system_u object_r gnome_home_t ((s0) (s0))))
(filecon „/root/\.gnome2/keyrings(/.*)?“ any (system_u object_r gkeyringd_gnome_home_t ((s0) (s0))))
(filecon „/root/\.gstreamer-.*“ any (system_u object_r gstreamer_home_t ((s0) (s0))))
(filecon „/root/\.cache/gstreamer-.*“ any (system_u object_r gstreamer_home_t ((s0) (s0))))
(filecon „/root/\.local.*“ any (system_u object_r gconf_home_t ((s0) (s0))))
(filecon „/root/\.local/share(/.*)?“ any (system_u object_r data_home_t ((s0) (s0))))
(filecon „/root/\.local/share/icc(/.*)?“ any (system_u object_r icc_data_home_t ((s0) (s0))))
(filecon „/root/\.Xdefaults“ any (system_u object_r config_home_t ((s0) (s0))))
(filecon „/root/\.xine(/.*)?“ any (system_u object_r config_home_t ((s0) (s0))))
(filecon „/etc/gconf(/.*)?“ any (system_u object_r gconf_etc_t ((s0) (s0))))
(filecon „/tmp/gconfd-USER/.*“ file (system_u object_r gconf_tmp_t ((s0) (s0))))
(filecon „/usr/share/config(/.*)?“ any (system_u object_r config_usr_t ((s0) (s0))))
(filecon „/usr/bin/gnome-keyring-daemon“ file (system_u object_r gkeyringd_exec_t ((s0) (s0))))
(filecon „/usr/bin/mate-keyring-daemon“ file (system_u object_r gkeyringd_exec_t ((s0) (s0))))
(filecon „/usr/libexec/gconf-defaults-mechanism“ file (system_u object_r gconfdefaultsm_exec_t ((s0) (s0))))
(filecon „/usr/libexec/gnome-system-monitor-mechanism“ file (system_u object_r gnomesystemmm_exec_t ((s0) (s0))))
(filecon „/usr/libexec/kde(3|4)/ksysguardprocesslist_helper“ file (system_u object_r gnomesystemmm_exec_t ((s0) (s0))))
…
und in der findet sich dann kein Hinweis auf den gdm-greeter oder die gnome-session .. Womit es undefiniert ist.
Ich hab versucht da durchzusteigen, aber das ist echt komplex das Zeugs đ Vielleicht will ja mal einer ein Diagnosetool dafĂŒr bauen, da berichte ich dann gerne drĂŒber.