SELinux (fedora 10): CUPS zulassen

Hallo!

Ich bin seit ein paar Sekunden "dabei" und schreibe gerade meinen ersten Post. Deswegen nochmal ein ganz offizielles "Hallo" an Alle!

So, und damit zu meinem Problem: ich habe hier ein (nahezu frisch installiertes) fedora 10 (Gnome, 64-Bit). Nun wollte ich via CUPS (localhost, Port 631) einen Netzwerkdrucker hinzufügen. Nachdem ich mir die passende Treiberdatei bei der LinuxFoundation besorgt und installiert habe, konnte ich diesen auch einwandfrei einrichten. Doch immer wenn ich drucken will, meldet sich SELinux mit folgender Fehlermeldung (Zusammenfassung):

Code:
SELinux hindert cupsd (cupsd_t) "execute_no_trans" am Zugriff auf /opt/OpenPrinting-Gutenprint/cups/lib/filter/rastertogutenprint.5.2 (lib_t).

Ich habe danach unter System -> Administration -> Firewall -> Vertraute Dienste ein Haken bei "Netzwerk-Printing Client" und "Netzwerk-Printing Server gesetzt". Allerdings ohne Erfolg. Und selbst wenn ich SELinux über den Button deaktiviere, kommt die gleiche Fehlermeldung bei jedem Druckversuch (auch nach einem Neustart des Systems).

Deswegen meine Frage, ob ich da überhaupt an den richtigen Einstellungen drehe. Es gibt unter System - > Administration ja auch noch den Eintrag "SELinux Management". Allerdings verstehe ich die dortigen Möglichkeiten nicht.
Und da eine Firewall ja eigentlich nicht schaden kann, währe natürlich die Lösung, dass einfach CUPS drucken darf, ich die Firewall aber nicht komplett deaktivieren muss, optimal.

Vielen Dank im Voraus!

---
Edit 1: gelöst
 
Der Fehlermeldung nach würde ich erstmal tippen, dass die Datei nicht zum cupsd_t-Kontext-Typ gehört. Also wirst du sie hinzufügen müssen:

Code:
chcon -t cupsd_t /opt/OpenPrinting-Gutenprint/cups/lib/filter/rastertogutenprint.5.2
 
Wenn ich das
Original von bitmuncher
Code:
chcon -t cupsd_t /opt/OpenPrinting-Gutenprint/cups/lib/filter/rastertogutenprint.5.2
(als su) ausführen will, meldet sich die Konsole mit
Code:
chcon: konnte Kontext von ?/opt/OpenPrinting-Gutenprint/cups/lib/filter/rastertogutenprint.5.2? nicht in ?system_u:object_r:cupsd_t:s0? ändern: Keine Berechtigung
und SELinux mit der bekannten Fehlermeldung.
 
Was sagt denn 'ls -lZ /opt/OpenPrinting-Gutenprint/cups/lib/filter/'? Und was gibt dir 'whoami' aus, bevor du den Befehl absetzt?
 
Original von bitmuncher
Was sagt denn 'ls -lZ /opt/OpenPrinting-Gutenprint/cups/lib/filter/'?
Code:
-rwxr-xr-x  root root system_u:object_r:lib_t:s0       commandtocanon
-rwxr-xr-x  root root system_u:object_r:lib_t:s0       commandtoepson
-rwxr-xr-x  root root system_u:object_r:lib_t:s0       rastertogutenprint.5.2

Original von bitmuncher
Und was gibt dir 'whoami' aus, bevor du den Befehl absetzt?
Code:
root

Sorry, wie ich gerade gesehen habe, unterscheidet sich die Fehlermeldung von SELinux doch beim Ausführen des Befehls von bitmuncher. K.A. warum mir das nicht aufgefallen ist... X(
Auf jeden Fall lautet Sie in dem Bezug:
Code:
SELinux hindert chcon (unconfined_t) "relabelto" am Zugriff auf ./rastertogutenprint.5.2 (cupsd_t).

Danke soweit schon mal für die Hilfe!

---
Edit 1: "Sorry, wie ich [...]" mit Fehlermeldung ergänzt
Edit 2: vergessenes "Edit 1" ergänzt
 
Sorry, 'ls -laZ meinte ich. Der Security-Kontext und die Rechte des beinhaltenden Ordners (also ./) sind natürlich relevant, wenn dein User in diesem Ordner den Security-Kontext für Dateien nicht ändern kann. Und der wird nur mit '-a' von ls angezeigt. Hat der Ordner /opt/OpenPrinting-Gutenprint/cups/lib/filter/ das eXecutable-Flag und gehört root? Ist cupsd_t im Kontext system_u für Zugriffe berechtigt? Sonst musst du erst den cupsd-Benutzer zum Eigentümer der Datei machen.

Und ausserdem... Benötigst du SELinux zwingend? Wenn es sich um einen Desktop-Rechner handelt, solltest du der Einfachheit halber SE-Linux kernelseitig deaktivieren, sonst hast du das Problem bei jeder Installation, die nicht aus den Originalpaketen erfolgt. Einfach als Kernel-Parameter 'selinux=0' übergeben. Nach jeder Installation erstmal SELinux-Policies anpassen zu müssen ist ziemlich nervig.
 
Original von bitmuncher
Sorry, 'ls -laZ meinte ich. Der Security-Kontext und die Rechte des beinhaltenden Ordners (also ./) sind natürlich relevant, wenn dein User in diesem Ordner den Security-Kontext für Dateien nicht ändern kann. Und der wird nur mit '-a' von ls angezeigt.
Ok, jetzt weiß ich auch was ich da mache. =) Die Ausgabe lautet dann:
Code:
drwxr-xr-x  root root system_u:object_r:lib_t:s0       .
drwxr-xr-x  root root system_u:object_r:lib_t:s0       ..
-rwxr-xr-x  root root system_u:object_r:lib_t:s0       commandtocanon
-rwxr-xr-x  root root system_u:object_r:lib_t:s0       commandtoepson
-rwxr-xr-x  root root system_u:object_r:lib_t:s0       rastertogutenprint.5.2

Original von bitmuncher
Hat der Ordner /opt/OpenPrinting-Gutenprint/cups/lib/filter/ das eXecutable-Flag und gehört root? Ist cupsd_t im Kontext system_u für Zugriffe berechtigt? Sonst musst du erst den cupsd-Benutzer zum Eigentümer der Datei machen.
Sorry, aber ich weiß weder wie ich das überprüfen kann, noch wie ich dann evtl. handeln muss. Kann das jemand nochmal genauer erklären?

Original von bitmuncher
Und ausserdem... Benötigst du SELinux zwingend?
K. A. Ich dachte sie zu haben wär' nicht schlecht (außerdem war sie standardmäßig aktiviert). Aber eigentlich hatte ich unter Debian/openSUSE ja auch keine...

Original von bitmuncher
Wenn es sich um einen Desktop-Rechner handelt, solltest du der Einfachheit halber SE-Linux kernelseitig deaktivieren, sonst hast du das Problem bei jeder Installation, die nicht aus den Originalpaketen erfolgt. Einfach als Kernel-Parameter 'selinux=0' übergeben. Nach jeder Installation erstmal SELinux-Policies anpassen zu müssen ist ziemlich nervig.
Deaktivieren über die GUI hat anscheinend nicht funktioniert (BUG?). Wie kann ich denn den Kernel-Paramater übergeben? Über grub beim Systemstart bzw. über die menu.lst?
 
Du kannst den Kernel-Parameter einfach mittels Grub übergeben. Dazu die menu.lst anpassen und 'selinux=0' an die Kernel-Zeile anfügen.

Sinn macht die Nutzung von SELinux nur dann, wenn du eine erweiterte Sicherheit benötigst und Zugriffsrechte feiner granulieren musst. Das ist auf Desktops zumeist eher hinderlich, auf Servern aber äußerst nützlich.
 
Ok, mit dem Paramater "selinux=0" in der menu.lst wird SELinux dann auch wirklich deaktiviert. Und solange mich jetzt keiner fragt, wie ich es denn verantworten kann, Linux ohne SELinux zu starten, lass' ich es einfach bei der Lösung. :)

Und obwohl die Ursache jetzt noch nicht 100%ig geklärt/beseitigt ist, ist das Problem für mich erstmal gelöst. Ich hake den Thread jetzt also einfach mal ab.
Danke nochmals für die Hife!
 
Zurück
Oben