Konflikt zwischen Linux-Dateisystem-ACLs und Windows-Berechtigungen (NTFS) lösen
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).