PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Samba - Datei sperren wenn schon geöffnet


Pirx
2012-09-05, 15:45:41
Hi!
Habe hier einen Samba-Server mit Opensuse 11.1. mit Windows 7 und -XP - Clients.

Ist es möglich, eine Freigabe so einzustellen, daß eine Datei, auch eine kleine Textdatei, nur ein einziges Mal geöffnet werden kann und alle anderen User dann, wenn schon ein anderer User die Datei geöffnet hat (auch wenn bloss mit dem Editor, der scheinbar gar nichts mit locking am Hut hat) entweder eine Warnung, oder Fehlermeldung bekommen?

drdope
2012-09-05, 16:30:10
Hab leider keine Antwort, nur eine Gegenfrage -> funktioniert das unter Windows/SMB?

Tesseract
2012-09-05, 17:23:36
geöffnete dateien bekommen doch sowieso einen lock und können dann zwar geöffnet, aber nicht geschrieben werden oder verwechsel ich da was?

drdope
2012-09-05, 17:32:31
geöffnete dateien bekommen doch sowieso einen lock und können dann zwar geöffnet, aber nicht geschrieben werden oder verwechsel ich da was?

Afaik ist das so, ich hab Pirx Frage eher so interpretiert, ob es eine Lösung für folgendes Prob gibt:
User A öffnet Datei X; User B öffnet Datei X; beide editieren Datei X; User A speichert Datei X; speichert nun User B danach seine Version von Datei X kann er problemlos und ohne es zu merken den Edit von User A überschreiben....

Was Pirx imho sucht ist ein CVS auf Dateisystem bzw. Freigabeebene.

Pirx
2012-09-05, 19:24:02
geöffnete dateien bekommen doch sowieso einen lock und können dann zwar geöffnet, aber nicht geschrieben werden oder verwechsel ich da was?
Ja, genau, die geöffnete Datei soll sich aber nicht nochmal öffnen/lesen lassen.

Es müsste z.B. "einfach" in der "Datei wo die ganzen locks drinstehen" (weiß gerade nicht, wie die heißt) deny_all oder deny_read statt deny_write stehen.


Mit dem Windows Editor können auch z.B. 10 verschiedene User eine Datei öffnen und drin rumpfuschen und jeder kann zu jeder Zeit schreiben, weil der diese Filesystem-Locks wohl gar nicht benutzt. Und das tun scheinbar auch andere größere (ältere) Applikationen nicht.

Ich habe jetzt kein direktes Problem damit, wollte nur mal fragen, ob es nicht doch eine Möglichkeit gibt. Es sieht aber nicht so aus.

Lokadamus
2012-09-05, 20:25:10
mmm...

Ich bin mir nicht sicher, ob es das ist, was gesucht wird.
http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/locking.html
http://lug.krems.cc/docu/samba/ch05_05.html

PatkIllA
2012-09-05, 20:25:34
Die Anwendung kann sich das beim öffnen aussuchen. Da muss nur das entsprechende Flag beim öffnen gesetzt werden und nicht noch extra gelocked werden.

http://msdn.microsoft.com/en-us/library/windows/desktop/aa363858%28v=vs.85%29.aspx

Lokadamus
2012-09-05, 20:45:39
Die Anwendung kann sich das beim öffnen aussuchen.mmm...

So weit ich es verstehe, soll sich der Client es aber nicht aussuchen.
Es soll standardmäßig gesetzt sein.
Aus dem oberen Link in meinem Beitrag:
By default, Samba only makes locking calls when explicitly asked to by a client, but if you set strict locking = yes, it will make lock checking calls on every read and write call.
Hört sich passend an, aber ich weiß nicht, ob es das ist und ob es auch pro Freigabe gesetzt werden kann. Und es soll resourcenfressend sein, was auch dagegen spricht.

PatkIllA
2012-09-05, 20:52:30
Es gibt aber auch genug Anwendungen, die die Datei gar nicht geöffnet lassen.
Ich hab das gerade mal probiert und weder Visual Studio noch Notepad++ und auch nicht der Standardeditor lassen die Datei geöffnet. Die ersten beiden haben allerdings eine Überwachung um festzustellen, falls jemand anders die Datei verändert hat.

Lokadamus
2012-09-15, 11:01:47
mmm...

Artikel über SMB3.0 und das Handling von Dateien in der neuen Version.
http://www.heise.de/netze/artikel/Version-2-2-des-SMB-Protokolls-1703492.html

nalye
2012-09-18, 22:58:00
Alternativ baust Du Dir ein kleines Loggingscript, welches den entsprechenden Dateinamen dann auf chmod 600 oder so setzt, eventuell noch ein chown hinterher. Wäre gefühlt nur ein kleiner Bash-10-Zeiler...

Birdman
2012-10-26, 23:26:19
Alternativ baust Du Dir ein kleines Loggingscript, welches den entsprechenden Dateinamen dann auf chmod 600 oder so setzt, eventuell noch ein chown hinterher. Wäre gefühlt nur ein kleiner Bash-10-Zeiler...
Dann kann der Originalöffner aber diese Datei auch nicht mehr abspeichern.