Max-Ulrich Farber schrieb:
Wie Samba mit den Rechten umgeht, hängt stark davon ab, wie die Freigaben auf dem Client eingebunden sind. Geschieht dies über cifs, werden standardmäßig die Linux-Extensions aktiviert. Ist der Client ein Windows-Rechner oder werden dort die Freigaben in einem Linux-System mittels gvfs eingebunden, sind die Linux-Extensions nicht aktiv, und das Verhalten ist völlig anders. Man kann auf dem Server die Linux-Extensions auch generell deaktivieren.
Nebenbei: create mode = 0777
impliziert das Execute-Bit (x); möchte man dies nicht, ist create mode = 0666
richtig. Doch diese Befehle wirken nur, wenn die Linux-Extensions nicht aktiv sind.
Das ist werder die Ursache, warum die Bits gesetzt werden (weil mit diesem Befehl gar keine Bits gesetzt, sondern nur gelöscht werden können), noch ist es möglich, sie damit loszuwerden.
In der smb.conf steht jetzt:
inherit permissions = yes
inherit acls = yes
create mask = 0660
directory mask = 0770
force create mode = 0000
force directory mode = 0000
map archive = no
map system = no
map hidden = no
Die ACLs setze so:
setfacl --set u::rwx,g::-,o::-,g:gruppe:rwx .
setfacl -d --set u::rwx,g::-,o::-,g:gruppe:rwx .
Ergebnis: Direkt in Unix angelegte Dateien (nicht durch Samba) haben keine x-Bits, nur Verzeichnisse haben sie. So soll es sein, so steht das in der Beschreibung der ACLs. Wenn jedoch Dateien von Windows aus via Samba angelegt werden, dann haben diese das x-Bit bei User und in der ACL-Maske.
Wenn ich die x-Rechte in der Default-ACL weg lasse, sind diese Bits bei Dateien weg, aber dann sind sie bei Verzeichnissen auch weg, d.h. die Verzeichnisse sind praktisch unbenutzbar.
Es scheint, da läuft etwas schief und man muss mit den überflüssigen Execute-Rechten leben.
Wenn man das schon muss, dann kann man map archive auf yes setzen, dann funktioniert das Archiv-Bit von Windows bzw. DOS. Die Dateien sollten auf einem Dateisystem sein, das mit der Option noexec gemountet wird.
Gruß,
Klaus