Update-Probleme beheben

Durch einen Fehler im selinux-policy-3.12.1-116.fc20 Paket kommt es bei der Installation oder dem Update von Paketen, die so genannte Scriptlets nutzen, zu einer Fehlermeldung und dem Abbruch der Installation/des Updates.

Die Fehlermeldung lautet

warning: %post(libkcompactdisc-4.12.1-1.fc20.x86_64) scriptlet failed, exit status 127
Non-fatal POSTIN scriptlet failure in rpm package libkcompactdisc-4.12.1-1.fc20.x86_64

wobei der Name des betroffenen Paketes natürlich variiert.

Um das Problem zu beheben, sind zuerst folgende Schritte nötig, um die korrigierte SELinux Policy zu installieren:

su -
setenforce 0
yum clean expire-cache
yum update selinux-policy
setenforce 1
Zur Erklärung: zuerst wird SELinux temporär deaktiviert, damit das Update fehlerfrei installiert werden kann. Anschließend wird zuerst der Cache von yum geleert und als nächstes das Update für die SELinux Policy installiert. Zum Schluss wird SELinux wieder reaktiviert.

Anschließend sollte man sicherheitshalber mittels

package-cleanup --dupes

nach doppelt installierten Paketen suchen und falls welche gefunden werden, sollten diese Dopplungen anschließend unbedingt mittels

package-cleanup --cleandupes

bereinigt werden, um möglichen Problemen bei zukünftigen Updates von vornherein aus dem Weg zu gehen. Andernfalls kann es passieren, das zukünftige Updates aufgrund der doppelten Pakete ebenfalls fehlschlagen.

Fedora 19: SELinux Fehlermeldung beim Start von LightDM

Wer LightDM unter Fedora 19 nutzt, wird sicher schon mit der Meldung

SELinux is preventing /usr/sbin/lightdm from ‚create‘ accesses on the file .dmrc.T5D7TW

Bekanntschaft gemacht haben. Wobei der Teil T5D7TW ein zufälliger Wert ist, der sich bei jedem Systemstart ändert.

Um die Meldung los zu werden sollte man zuerst sicherstellen, das man die aktuellste SELinux Policy verwendet:

su -c'yum update selinux-policy\*'

Sofern man die aktuellste Version der SELinux Policy verwendet, muss nur noch folgender Befehl ausgeführt werden:

su -c'setsebool -P xdm_write_home 1'

Danach sollte die SELinux Fehlermeldung zukünftig nicht mehr auftauchen.

SELinux Update für LightDM im Anmarsch

Für die SELinux Probleme mit LightDM wird es demnächst ein Update der SELinux-Policy geben.

Falls man die hier beschriebenen SELinux-Anpassungen bereits vorgenommen hat, sollte man vor der Installation des SELinux-Policy Updates folgendes Kommando ausführen, um Probleme bei der Update Installation zu vermeiden:

su -c'semanage fcontext -d -t xdm_var_run_t "/var/run/lightdm(/.*)?"'

Falls man dieses Kommando nicht ausführt, kann das Update der Policy höchstwahrscheinlich nicht erfolgreich installiert werden und wird mit einer Fehlermeldung abgebrochen.

LightDM einrichten

Der schlanke Displaymanager LightDM, der zwischenzeitlich bei Ubuntu den GDM als Standard-Displaymanager abgelöst hat, ist in Kürze über das Updates-testing Repository auch für Fedora verfügbar und können dann via

su -c'yum install lightdm lightdm-gobject lightdm-gtk'

installiert werden. Wer KDE nutzt, kann lightdm-kde anstelle von lightdm-gtk installieren.

Wer nicht so lange warten mag, kann sich die entsprechenden Pakete auch aus Koji herunterladen und installieren.

Nach der Installation sind jedoch noch folgende Schritte notwendig, um LightDM nutzen zu können:

su -
systemctl enable accounts-daemon.service
chcon -t xdm_exec_t /usr/sbin/lightdm
chcon -t xdm_exec_t /usr/sbin/lightdm-*-greeter
chcon -R -t xserver_log_t /var/log/lightdm
chcon -R -t xdm_var_lib_t /var/lib/lightdm
chcon -R -t xdm_var_lib_t /var/cache/lightdm

Nach einem Neustart müssen noch folgende Kommandos ausgeführt werden:

semanage fcontext -a -t xdm_var_run_t "/var/run/lightdm(/.*)?"
restorecon -R -v /var/run/lightdm
chcon -R -t xdm_etc_t /etc/lightdm

Ein kleiner Vorgeschmack auf LightDM:

© Frank Murphy

Nichts desto trotz übernehmen wir keine Verantwortung, falls das eigene System durch diese Anleitung unbrauchbar gemacht werden sollte. Das Befolgen dieser Anleitung geschieht somit auf eigene Gefahr!

DropBox Client unter Fedora 17 „reanimieren“

Wer sein System auf die Beta von Fedora 17 aktualisiert hat, wird feststellen, das sich der DropBox Client nicht mehr startet und eine SELinux Fehlermeldung erscheint.

Um den Client zu „reanimieren“, muss lediglich die allow_execstack Option von SELinux (re)aktiviert werden. Dies geschieht am einfachsten über folgendes Kommando

su -c'setsebool -P allow_execstack 1'

Nachdem man das root Kennwort eingegeben hat, wird die Option (re)aktiviert, was jedoch einen kurzen Moment dauern kann. Anschließend lässt sich der DropBox Client wie gewohnt starten.

Chromium unter Fedora 16 nutzen

Tom „Spot“ Callaway stellt in seinem persönlichen Repository zwar Chromium Builds für Fedora 16 bereit, jedoch erhält man beim Start im Terminal folgende Fehlermeldung

execv failed: Permission denied

Um das Problem zu lösen, muss der SELinux Kontext für die Chromium Sandbox korrigiert werden. Das geschieht über folgenden Befehl

su -c'chcon -t textrel_shlib_t /usr/lib/chromium-browser/chrome-sandbox'

Anschließend lässt sich Chromium wieder ganz normal starten.

Firefox in einer SELinux Sandbox ausführen

Die Sandbox von SELinux ist eine sehr nette Sache, um z.B. Webseiten in einer gesicherten Umgebung zu öffnen und zu verhindern, das der Rest des System durch Malware o.ä. in Mitleidenschaft gezogen wird.

Um beispielsweise Firefox in solch einer Sandbox auszuführen, kann man folgendes Kommando verwenden:

sandbox -t sandbox_web_t -X firefox

Dadurch wird Firefox mit einem „nackten“ Profil, d.h. ohne Erweiterungen etc. in einer Sandbox ausgeführt. Durch den Parameter „-t sandbox_web_t“ wird der Sandbox mitgeteilt, das sie den Zugriff auf das Internet erlauben soll.

Möchte man in der Sandbox ein vorhandenes Profil verwenden, ist dafür folgender Befehl notwendig

sandbox -X -t sandbox_web_t -i /home/<username>/.mozilla/extensions / 
-i /home/<username>/.mozilla/plugins /
-i /home/<username>/.mozilla/firefox/<Profilname>/ 
-i /home/<username>/.mozilla/firefox/profiles.ini firefox

Wobei es zu empfehlen ist, sich für die Sandbox ein separates Profil anzulegen.

(via)