Есть ли способ заставить файлы, созданные через общий сетевой ресурс или в заданной папке, принадлежать определенному пользователю (т.е. существует ли собственный Windows-эквивалент Samba force user
).
Обоснование: У меня есть сервер, на котором запущено несколько экземпляров SQL Server 2008 для наших внутренних сред разработки. Каждый экземпляр работает как собственный пользователь службы, и каждый пользователь службы имеет фиксированную квоту - таким образом гарантируя, что, если один SQL Server уйдет с диском (по какой-либо причине), он не перебьет сервер.
Однако некоторым пользователям необходимо иметь возможность получать резервные копии на сервере и за его пределами, поэтому у меня есть несколько общих файловых ресурсов - по одному на каждый экземпляр, - которые указывают на соответствующий каталог. В результате файлы создаются, когда пользователь копирует резервную копию на диск в обход дисковой квоты этого экземпляра.
На данный момент я работаю над этим, заставляя пользователей аутентифицироваться как учетная запись службы SQL Server. Это не совсем идеально, но это лучший вариант, который я могу найти на данный момент.
Итак ... есть ли способ сделать это, или кто-нибудь может увидеть какое-либо другое решение, которое достигло бы аналогичного эффекта?
Та :-)
Нет. Большинство служб Microsoft используют жетоны олицетворения для доступа к любым ресурсам - это неотъемлемая часть концепции безопасности Windows / единого входа. Если вы знакомы с Samba, вы можете обойти это, подключив общий ресурс через машину Linux и повторно экспортировав его как новый общий ресурс с параметром «принудительно пользователя», установленным для учетной записи службы вашего SQL-сервера. Таким образом, вы по-прежнему сохраните интеграцию домена и его функции единого входа и получите то, что хотите.
В качестве альтернативы вы можете реализовать собственный сервис, используя FileSystemWatcher .NET-класс и изменение владельца при создании нового файла. Скорее всего, кто-то уже сделал что-то, на что можно опираться, но мне лень искать сегодня, извините.