Konflikt zwischen Linux-Dateisystem-ACLs und Windows-Berechtigungen (NTFS) lösen

Aus CEPHALIX/CRANIX
Zur Navigation springen Zur Suche springen

Das Problem ist ein klassischer Konflikt zwischen Linux-Dateisystem-ACLs und der Art und Weise, wie Samba Windows-Berechtigungen (NTFS) darauf abbildet. Wenn ein Windows-Client eine Datei speichert, berechnet Samba standardmäßig eine neue "Maske" basierend auf den eingehenden Windows-Rechten. Das schränkt oft die effektiven Rechte ein, die du mühsam über `setfacl` konfiguriert hast.

Die Lösung: `smb.conf` anpassen

Du musst Samba mitteilen, dass es die Maske nicht jedes Mal neu berechnen soll, sondern die Linux-ACL-Vererbung respektieren muss.

Masken-Berechnung deaktivieren

Füge diese Zeilen zu deiner spezifischen Freigabe (Share) in der `/etc/samba/smb.conf` hinzu (oder im Bereich `[global]`, falls es für alle gelten soll):

   [deine-freigabe]
   # Linux-ACL-Maske vor Neuberechnung schützen
   map acl inherit = Yes
   store dos attributes = Yes
   
   # Wichtig: Samba daran hindern, die Maske zu "korrigieren"
   inherit acls = Yes
   inherit permissions = Yes

Die "radikale" Option (falls das obige nicht reicht)

Wenn Windows die Maske immer noch überschreibt, kannst du Samba zwingen, die Maskenberechnung komplett zu ignorieren:


   # Verhindert, dass Windows das 'mask'-Bit ändert
   acl group control = Yes

Warum das passiert: Das Problem der "effektiven Rechte"

Bei Linux-POSIX-ACLs definiert die **Maske** die maximalen Berechtigungen, die ein Benutzer oder eine Gruppe (außer dem Besitzer) haben kann.

Wenn ein Windows-Client eine Datei speichert, sendet er spezifische NTFS-Berechtigungen. Samba versucht, diese perfekt zu übersetzen. Wenn der Windows-Nutzer nicht explizit "Vollzugriff" sendet, berechnet Samba eventuell eine restriktivere Maske (z. B. `r--`). Diese "blindet" dann deine Linux-Standard-ACLs (z. B. `rwx`), was dazu führt, dass die effektiven Rechte nur noch `r--` sind.

Empfohlene Best-Practice Konfiguration

Für einen modernen Samba-Server, der mit Linux-ACLs arbeitet, sollte deine Freigabe etwa so aussehen:

Parameter Wert Warum?
vfs objects acl_xattr Speichert NTFS-ACLs in erweiterten Attributen.
map acl inherit Yes Überträgt Windows-Vererbung auf Linux-ACLs.
inherit acls Yes Stellt sicher, dass neue Dateien die Standard-ACL des Ordners erben.


Änderungen anwenden

  • Konfiguration bearbeiten:
sudo nano /etc/samba/smb.conf
  • Syntax testen:
testparm
  • Samba neu starten:
sudo systemctl restart smbd

Ein kleiner Tipp: Für bereits existierende Dateien, bei denen die Maske bereits "kaputt" ist, musst man diese einmalig auf der Linux-Seite korrigieren:

sudo setfacl -R -n -m m::rwx /pfad/zum/ordner
(Das -n verhindert, dass die Maske sofort wieder neu berechnet wird).