SELinux – Samba Share korrekt labeln
Zur Navigation springen
Zur Suche springen
Ziel
- Ein Samba-Share außerhalb von /var korrekt für SELinux freigeben
- Beispielpfad: /srv/samba/share
- Ohne korrektes Label blockiert SELinux den Zugriff – auch wenn Unix-Rechte stimmen
Problem
- Samba läuft im SELinux-Kontext smbd_t
- smbd_t darf nur auf bestimmte Typen zugreifen
- Ein neues Verzeichnis unter /srv bekommt meist default_t
- Zugriff wird dann von SELinux verweigert (AVC Denial)
Lösung – Kontext dauerhaft definieren
Kontext-Regel anlegen
- semanage fcontext -a -t samba_share_t "/srv/samba(/.*)?"
- Fügt eine persistente Regel in die SELinux-Datenbank ein
- -a → hinzufügen
- -t samba_share_t → erlaubt Samba-Zugriff
- "/srv/samba(/.*)?" → Verzeichnis inkl. aller Unterverzeichnisse und Dateien
- Ändert noch keine bestehenden Labels, sondern nur die Regelbasis
Labels anwenden
- restorecon -Rv /srv/samba
- Setzt die SELinux-Labels anhand der gespeicherten Regel neu
- -R → rekursiv
- -v → zeigt Änderungen
- Jetzt erhalten alle Dateien unter /srv/samba den Typ samba_share_t
Kontrolle
- ls -ldZ /srv/samba
- Erwartete Ausgabe enthält:
object_r:samba_share_t:s0
- Steht dort default_t oder var_t → Zugriff wird blockiert
Technischer Hintergrund
- SELinux nutzt Type Enforcement
- smbd läuft im Kontext smbd_t
- smbd_t darf auf Objekte vom Typ samba_share_t zugreifen
- Falscher Typ führt zu AVC Denials in:
/var/log/audit/audit.log
Typische Fehlannahme
- chmod oder chown alleine reichen nicht
- Bei aktiviertem SELinux entscheidet das Label, nicht nur die Dateirechte
Optional – Diagnose bei Problemen
- ausearch -m avc -ts recent
- audit2why < /var/log/audit/audit.log
- audit2allow -w -a
Fazit
- Neue Samba-Verzeichnisse außerhalb von Standardpfaden müssen gelabelt werden
- semanage definiert die Regel
- restorecon setzt sie technisch um
- Kontrolle immer mit ls -Z durchführen