2009-08-21 10 views
-1

So habe ich eine Samba-Freigabe auf Server A. Ich habe diese Freigabe auf zwei andere Server, B und C gemountet. Die Idee ist, dass B und C temporäre Dateien in a schreiben müssen einzelner Speicherort, sodass mehrere Hintergrundverarbeitungsjobs (die auch auf B und C ausgeführt werden) Zugriff auf den gleichen Dateipool haben.Samba, CIFS und Löschen von Dateien

Wenn die Hintergrundprozesse abgeschlossen sind, löschen sie die Datei, an der sie gearbeitet haben. Wenn ich eine Verzeichnisauflistung der Freigabe mache, nachdem eine Datei gelöscht worden ist, sind die ursprünglichen Dateinamen jetzt entlang der Linien von cifs79, cifs78 usw. Sie nehmen den gleichen Raum wie die ursprüngliche Akte auf, also nehme ich an, dass sie sind Originale, nur umbenannt.

Das Problem ist, dass diese Dateien nicht verschwinden, wenn ich Samba nicht neu starte (was ich nicht vorhabe). Fehle ich ein einfacher Config-Parameter, der Dateien sofort löscht?

Ich habe meine Aktien mit diesem Befehl:

mount -t cifs //10.251.251.251/uploads ./uploads -o username=samba_user,noexec 

Die Dateien in die Aktie gehen, wie -rw------- und bleiben auf diese Weise, nachdem sie Namen ändern.

Hier ist die vollständige smb.conf Datei: http://gist.github.com/172474 und das Ergebnis smbstatus des Laufens: http://gist.github.com/172478


Weitere Informationen:

Wenn ich eine Datei manuell aus dem Feld erstellen, das der Anteil montiert hat, kann ich erstellen, bearbeiten, löschen kein Problem. Wenn ich eine IRB (Interactive Ruby) -Sitzung starte, kann ich mit Ruby Dateien erstellen/löschen, kein Problem. Es scheint die App selbst zu sein, die die Datei mit seltsamen Berechtigungen erstellt. Obwohl die App und meine IRB-Sitzung als derselbe Benutzer ausgeführt werden, sollten sie die gleichen Berechtigungen haben, um was auch immer zu tun.

Danke für jede Hilfe!

+0

Das gehört auf serverfault, und ich habe gewählt, um es dorthin zu verschieben, aber smbstatus überprüfen. Ich würde wetten, dass Ihre Programme die Datei nicht schließen konnten. – derobert

+0

Hier ist die Ausgabe von smbstatus: http://gist.github.com/172478 Die R/W-Spalte sagt RDONLY, aber in meiner Konfig habe ich 'nur lesen = Nein 'und der Benutzer, der (Casting) besitzt verbindet Gemeinsames Verzeichnis auf dem Samba-Server ... –

Antwort

0

Haben Sie Zugriff auf die vollständige Konfiguration für den Samba-Server? Ich weiß, dass es ein gängiges Idiom ist, Samba so zu konfigurieren, dass es etwas anderes tut, als eine Datei auf einem Befehl vom Server zu löschen, um die Funktionalität "Papierkorb/Papierkorb" im Netzwerk zu implementieren. Das Umbenennen der Dateien im ursprünglichen Verzeichnis ist etwas ungewöhnlich, aber es ist immer noch möglich.

+0

Ja, sicher. Hier ist es: http://gist.github.com/172474 –

0

Die R/W Spalte sagt RDONLY aber in meiner Config habe ich gelesen, nur

keine

=, dass die Kunden bedeutet nicht, sind nicht erlaubt zu fopen (Datei, "r"), dh offene Dateien schreibgeschützt, auch wenn sie sie schreiben dürfen.

Sieht so aus, als müsste Samba Dateien behalten, die B löscht, weil A immer noch ein Oplock auf ihnen hat. Der Oplock sollte nach nicht zu langer Zeit ablaufen, danach wird Samba die umbenannte Datei wahrscheinlich löschen.

Dies ist sehr ähnlich zu dem, was tut NFS die Semantik von fd = open/create Tempakte löschen Datei Verwendung temporäre Datei zu implementieren (da Sie es noch nicht geschlossen haben) Nähe fd

Sie Erhalten Sie .nfs ... Dateien in Ihren Verzeichnissen.

0

Grundlegend ich denke, es ist ein Problem der Berechtigungen, die Konfigurationsdatei scheint in Ordnung. Haben Sie versucht, sich die/var/log/samba/* logs anzuschauen?

Über Ihre smb.conf:

[global] 
force create mode = 0644 
force directory mode = 0744 

0744 ist nicht eine gemeinsame Modus für „force directory mode“, wahrscheinlich ein Tippfehler, in der Regel, wenn Sie Leseberechtigungen geben Sie Flag geben wollen, um Ordner die Verwenden Sie 755 oder 750 oder 700. Diese Option bewirkt, dass in allen Ordnern mindestens diese Bits gesetzt sind. "force create mode" ist in Ordnung.

[uploads] 
create mask = 0655 
directory mask = 755 

Da Sie es mit noexec Montage, denke ich, dass ein korrekter Wert für Ihre „create mask“ 666 oder 644 und für „Verzeichnis Maske“ wäre wäre 755.

ich an den SSH würde Server und etwas ähnliches auch laufen:

Verwandte Themen