Windows Freigabe als Write mit Read-Only realisieren?
Hallo,
sorry für diese Frage, aber es ist doch schon Freitag oder
Kann man einer nativen Windows-Freigabe eines Windows Servers (egal welche Version) es so realisieren, dass man Dateien schreiben und lesen kann, aber alle lösch und Änderungszugriffe nur virtuell ausgeführt werden?
Also quasi "SMB immutable" oder Schattenkopie in "Sofort bei Aktion" und nicht Zeitgesteuert?
Genauer
Datei test1.txt schreiben
/aktuell/test1.txt
Datei test1.txt lesen
/aktuell/test1.txt
Datei test1.txt überschreiben/ändern mit neuem Inhalt
/aktuell/test1.txt (neuer Inhalt)
/archiv/240301121448_test1.txt (alter Inhalt)
Datei test1.txt löschen
/archiv/240301121448_test1.txt (alter Inhalt1)
/archiv/240301121555_test1.txt (alter Inhalt2)
Oder mit Linux Simba.
Es muss kein AD oder ähnliches unterstützen. Einfach eine aktuelle SMB-Freigabe.
Danke
Stefan
sorry für diese Frage, aber es ist doch schon Freitag oder
Kann man einer nativen Windows-Freigabe eines Windows Servers (egal welche Version) es so realisieren, dass man Dateien schreiben und lesen kann, aber alle lösch und Änderungszugriffe nur virtuell ausgeführt werden?
Also quasi "SMB immutable" oder Schattenkopie in "Sofort bei Aktion" und nicht Zeitgesteuert?
Genauer
Datei test1.txt schreiben
/aktuell/test1.txt
Datei test1.txt lesen
/aktuell/test1.txt
Datei test1.txt überschreiben/ändern mit neuem Inhalt
/aktuell/test1.txt (neuer Inhalt)
/archiv/240301121448_test1.txt (alter Inhalt)
Datei test1.txt löschen
/archiv/240301121448_test1.txt (alter Inhalt1)
/archiv/240301121555_test1.txt (alter Inhalt2)
Oder mit Linux Simba.
Es muss kein AD oder ähnliches unterstützen. Einfach eine aktuelle SMB-Freigabe.
Danke
Stefan
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 93113346824
Url: https://administrator.de/contentid/93113346824
Ausgedruckt am: 24.11.2024 um 18:11 Uhr
9 Kommentare
Neuester Kommentar
Der Unified Write Filter (UWF) kann sowas.
Um Dateisystemoperationen abzufangen musst du schon früh in der Pipeline des FS eingreifen denn die anderen Events wie Filesystemwatcher etc. greifen erst wenn die Datei schon verändert wurde also zu spät um die vorhandene Datei weg zusichern .
Eigenen Dateisystem-Filter schreiben wäre hier möglich, die greifen vor der eigentlichen Dateioperation.
https://learn.microsoft.com/de-de/windows-hardware/drivers/ifs/filter-ma ...
Ungetestetes Beispiel für so einen Filter
Eigenen Dateisystem-Filter schreiben wäre hier möglich, die greifen vor der eigentlichen Dateioperation.
https://learn.microsoft.com/de-de/windows-hardware/drivers/ifs/filter-ma ...
Ungetestetes Beispiel für so einen Filter
#include <fltKernel.h>
#include <dontuse.h>
#include <suppress.h>
#define BACKUP_DIRECTORY L"\\Backup"
PFLT_FILTER gFilterHandle;
NTSTATUS CreateBackupDirectory(_In_ PFLT_INSTANCE Instance)
{
NTSTATUS status;
UNICODE_STRING backupDirectory;
OBJECT_ATTRIBUTES objAttr;
RtlInitUnicodeString(&backupDirectory, BACKUP_DIRECTORY);
InitializeObjectAttributes(&objAttr, &backupDirectory, OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE, NULL, NULL);
status = FltCreateDirectory(Instance, NULL, &objAttr);
if (status == STATUS_OBJECT_NAME_COLLISION)
{
status = STATUS_SUCCESS; // Backup directory already exists, no need to create
}
return status;
}
FLT_PREOP_CALLBACK_STATUS
PreOperationCallback(
_Inout_ PFLT_CALLBACK_DATA Data,
_In_ PCFLT_RELATED_OBJECTS FltObjects,
_Flt_CompletionContext_Outptr_ PVOID *CompletionContext
)
{
UNREFERENCED_PARAMETER(FltObjects);
UNREFERENCED_PARAMETER(CompletionContext);
NTSTATUS status;
if (Data->Iopb->MajorFunction == IRP_MJ_WRITE || Data->Iopb->MajorFunction == IRP_MJ_SET_INFORMATION)
{
PFILE_OBJECT fileObject = FltObjects->FileObject;
PFLT_FILE_NAME_INFORMATION fileNameInfo;
status = FltGetFileNameInformation(Data, FLT_FILE_NAME_NORMALIZED | FLT_FILE_NAME_QUERY_DEFAULT, &fileNameInfo);
if (NT_SUCCESS(status))
{
if (fileNameInfo->Name.Length > 0)
{
// Construct backup file path with timestamp
UNICODE_STRING backupFileName;
WCHAR backupFilePath[MAX_PATH];
SYSTEMTIME systemTime;
GetLocalTime(&systemTime);
swprintf_s(backupFilePath, MAX_PATH, L"%ws\\%04d-%02d-%02d_%02d-%02d-%02d_%ws", BACKUP_DIRECTORY,
systemTime.wYear, systemTime.wMonth, systemTime.wDay,
systemTime.wHour, systemTime.wMinute, systemTime.wSecond, fileNameInfo->Name.Buffer);
RtlInitUnicodeString(&backupFileName, backupFilePath);
// Copy file to backup directory
status = FltCopyFile(FltObjects->Instance, fileObject, NULL, backupFileName.Buffer, TRUE, NULL, NULL);
}
FltReleaseFileNameInformation(fileNameInfo);
}
}
return FLT_PREOP_SUCCESS_NO_CALLBACK;
}
FLT_POSTOP_CALLBACK_STATUS
PostOperationCallback(
_Inout_ PFLT_CALLBACK_DATA Data,
_In_ PCFLT_RELATED_OBJECTS FltObjects,
_In_ PVOID CompletionContext,
_In_ FLT_POST_OPERATION_FLAGS Flags
)
{
UNREFERENCED_PARAMETER(Data);
UNREFERENCED_PARAMETER(FltObjects);
UNREFERENCED_PARAMETER(CompletionContext);
UNREFERENCED_PARAMETER(Flags);
return FLT_POSTOP_FINISHED_PROCESSING;
}
NTSTATUS
DriverEntry(
_In_ PDRIVER_OBJECT DriverObject,
_In_ PUNICODE_STRING RegistryPath
)
{
UNREFERENCED_PARAMETER(RegistryPath);
NTSTATUS status;
// Register the filter with the filesystem
status = FltRegisterFilter(DriverObject, &FilterRegistration, &gFilterHandle);
if (!NT_SUCCESS(status))
{
return status;
}
// Start filtering I/O operations
status = FltStartFiltering(gFilterHandle);
if (!NT_SUCCESS(status))
{
FltUnregisterFilter(gFilterHandle);
return status;
}
// Create the backup directory
status = CreateBackupDirectory(NULL);
if (!NT_SUCCESS(status))
{
FltUnregisterFilter(gFilterHandle);
return status;
}
return STATUS_SUCCESS;
}
NTSTATUS
FilterUnload(
_In_ FLT_FILTER_UNLOAD_FLAGS Flags
)
{
UNREFERENCED_PARAMETER(Flags);
FltUnregisterFilter(gFilterHandle);
return STATUS_SUCCESS;
}
Gelöschte Dateien ist eig. simpel. Kenne es mehr von ERP Systemen. Es wird nur ein Flag DEL o.ä. gesetzt. Die Inhalten bleiben unberührt.
Bei DMS entspräche das ja eher Workflow mit Freigeben. AD ist ja egal. Die Grupppen und User werden hineingezogen und logisch im System verknüpft. Oder es gibt eine Extra AD Gruppe, die wiederum die User beinhaltet und vom System interpretiert wird. Z.B. Watchguard VPN Gruppe, wo nur AD User herangezogen werden, die in der Gruppe stehen.
Löschen ist eine Sache. Aus den Verkehr kann man Dokumente ja auch anders ziehen! Stichwort: Dokumente lenken.
QM-Systeme können sowas auch. Leider sind wir hier an einen Punkt, wo man etliche DMS reinkippen kann. Docuware hat sowas ja aucht mit drin.
Rein virtuell wäre es eher die Richtung der Lenkung von Dokumenten.
Leider nie so ganz zum Laufen gebracht. Aber angeblich kann es auch alles: https://www.limbas.com/de/
Gab ja auch mal sowas wie Access als PHP. Kleine Frameworks. Drupal ist auch eines. Symfony....
Letzteres mal reingeschmissen, da du ja am Ende auf Linux kamst.
Mich juckt immer noch Limbas. Aber kenne keinen der damit arbeitet. Aber mit so einen Famework kann man auch viele Sauereien machen.
Zu DMS: Entweder billig gemachte und kostenlose Workflows, oder man zahlt pro Workflow Geld. Da verdienen sich ja alle eine goldenen Nase.
https://pydio.com/en
Aber ist halt auch was anderes. Zumindset eine Software drüber, die die Sachen regelt. Th. kann man ja dann sagen das bei DEL nur Flag und Hide gemacht werden soll, statt die zu löschen.
Aber ich setzte vor Jahren den kosten ajaxplorer ein. Kann sein das Pydio nun mehr kann!
https://pydio.com/en/automate/use-cases/intelligent-file-management
Rumgesponne: Virtuell, Browser fähig... da wäre Pydio ein Blick wert. Habs nur überflogen grad.
Bei DMS entspräche das ja eher Workflow mit Freigeben. AD ist ja egal. Die Grupppen und User werden hineingezogen und logisch im System verknüpft. Oder es gibt eine Extra AD Gruppe, die wiederum die User beinhaltet und vom System interpretiert wird. Z.B. Watchguard VPN Gruppe, wo nur AD User herangezogen werden, die in der Gruppe stehen.
Löschen ist eine Sache. Aus den Verkehr kann man Dokumente ja auch anders ziehen! Stichwort: Dokumente lenken.
QM-Systeme können sowas auch. Leider sind wir hier an einen Punkt, wo man etliche DMS reinkippen kann. Docuware hat sowas ja aucht mit drin.
Rein virtuell wäre es eher die Richtung der Lenkung von Dokumenten.
Leider nie so ganz zum Laufen gebracht. Aber angeblich kann es auch alles: https://www.limbas.com/de/
Gab ja auch mal sowas wie Access als PHP. Kleine Frameworks. Drupal ist auch eines. Symfony....
Letzteres mal reingeschmissen, da du ja am Ende auf Linux kamst.
Mich juckt immer noch Limbas. Aber kenne keinen der damit arbeitet. Aber mit so einen Famework kann man auch viele Sauereien machen.
Zu DMS: Entweder billig gemachte und kostenlose Workflows, oder man zahlt pro Workflow Geld. Da verdienen sich ja alle eine goldenen Nase.
https://pydio.com/en
Aber ist halt auch was anderes. Zumindset eine Software drüber, die die Sachen regelt. Th. kann man ja dann sagen das bei DEL nur Flag und Hide gemacht werden soll, statt die zu löschen.
Aber ich setzte vor Jahren den kosten ajaxplorer ein. Kann sein das Pydio nun mehr kann!
https://pydio.com/en/automate/use-cases/intelligent-file-management
Rumgesponne: Virtuell, Browser fähig... da wäre Pydio ein Blick wert. Habs nur überflogen grad.