На нашем файловом сервере у нас есть каталог, скажем, S:\ , который распределяется как \\server\share . Этот общий ресурс монтируется (отображается) нашим сервером приложений, как, скажем, M:\ = \\server\share Мы используем определенного пользователя Windows, batchUser , для запуска пакетных процессов в качестве сервера приложений. Эти процессы создают \ изменяют \ и т.д. файлы в этом каталоге (или его подкаталогах), и поэтому этот ID пользователя имеет соответствующие права на запись.

На сервере находится дерево каталогов, содержащее, помимо прочего, каталоги S:\rootDir1\subDir и S:\rootDir2 . Некоторые из наших процессов пишут в этот каталог. Несколько наших процессов должны читать из этого каталога, но любой ценой нужно запретить запись в этот каталог. Кроме того, эти процессы, доступные только для чтения, также должны работать под тем же идентификатором пользователя.

По различным другим причинам процессы только для чтения получают доступ к этому subDir через соединение, которое установлено на файловом сервере. То есть на файловом сервере существует узел S:\rootDir2\subDir => S:\rootDir1\subDir . Таким образом, на нашем сервере приложений приложения видят две директории, M:\rootDir1\subDir и M:\rootDir2\subDir .

Мы должны убедиться, что процессы RO НЕ изменяют и не записывают в M:\rootDir2\subdir каким-либо образом. Есть ли способ сделать соединение на файловом сервере «доступным только для чтения»?

Одна из проблем заключается в том, что нам нужно сохранить структуру дерева каталогов для процессов RO. То есть процессы RO должны видеть дерево каталогов M:\rootDir2 виде, в котором оно у нас есть, и иметь возможность записи во все другие каталоги этого дерева, за исключением соединения M:\rootDir2\subdir .

Наконец, это должно быть сделано с соединениями (которые обрабатываются на стороне файлового сервера), а не с символическими ссылками, которые обрабатываются на стороне сервера приложений. (Это является обязательным требованием из-за других проблем, таких как доступ к каталогам через разные интерфейсные карты, т.е. из разных сетей.)

1 ответ1

0

В dokan (https://en.wikipedia.org/wiki/Dokan_Library) есть пример приложения под названием "зеркало", которое вы можете использовать.

https://github.com/dokan-dev/dokany/wiki/Use-Mirror-example

Он имеет флаг "/w", который позволяет монтировать каталог только для чтения.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .