
Ich gebe einige Ordner auf Ubuntu 18.04 frei, sodass von Windows-Clients aus Lese- und Schreibzugriff darauf möglich ist.
Dateistruktur:
myshare/
dir1/
somefile1.txt
somefile2.txt
dir2/
dir3/
Der Samba-Client verfügt über Lese-/Schreib-/Erstellungs-/Löschberechtigungen für die darin enthaltenen Dateien dir1
.
Ich wurde durch einen unbeabsichtigten Benutzerunfall getroffen: Ein Benutzer würdelöschenam dir1
, und alle darin enthaltenen Dateien dir1
wurden gelöscht.
Ich konnte keine Berechtigungseinstellungen anwenden, die dies verhindern könnten. Es scheint alles darauf hinauszulaufen, wie Samba-Clients das Löschen einer Ordnerstruktur implementieren. Sie tun dies, indem sie den Ordnerinhalt auflisten und dann eine Dateilöschung nach der anderen ausführen, rekursiv von der tiefsten Ebene des Verzeichnisbaums aus.
Fazit: Serverseitig habe ich keine Möglichkeit zwischen der erlaubten Löschung einzelner Dateien und der ungewollten, vollständigen, rekursiven Ordnerlöschung zu unterscheiden.
Übersehe ich etwas?
Ich habe über zwei Tricks nachgedacht, bin aber auf keine Lösung gekommen:
Kann ich eine Datei darin platzieren
dir1
, die den Samba-Client dazu veranlasst, den Batch-Löschvorgang abzubrechen? Ich hatte einige Erfolge mit dem Platzieren einernicht löschbare Dateiindir1
, aber der Erfolg scheint zufällig.Mir ist aufgefallen, dass
dir1
das oben genannte Risiko wegfällt, wenn ich die Stammfreigabe erstelle. Wenn der Benutzer dann auf Löschen drückt,dir1
wird der Vorgang verweigert, was perfekt ist. Aberdir1
,dir2
usw.dir3
als separate Freigaben zu haben, ist nicht gut skalierbar. Ich möchte, dass der Benutzer nur einen Zugriffspunkt hat/myshare
. Aber gibt es eine Möglichkeit,dir1
es wie eine Freigabe zu verhalten (so dass ein Client es durchsuchen, aber nicht löschen kann) und trotzdem darin angezeigt zu werden/myshare
?
Eine Lösung, die nur mit Windows-Datei-Explorer-Clients funktioniert, wäre akzeptabel.