Как разграничить права доступа к файлам при использовании IIS?
Может кто знает подскажет.
Есть IIS.
Есть N количество html файлов.
Хотелось бы ограничить к ним доступ - например, один сотрудник имеет доступ только к определенному файлу, другой - к другому.
Пробовать играться с NTFS правами - всё неудачно. Добавлял пользователя на чтение\запись, но если убираю группу Users или II_IUSR из доступа к файлам, то доступ пропадает у всех.
Каким образом могу разграничить права?
NewDevLab, Windows Auth включена. Папка с файлами, к которым я хочу ограничтьть доступ per-user лежит сразу в корне сайта, не в wwwroot. Возможно мне нужно ее переложить в другое место?
NewDevLab, вот так это выглядит у меня. Сайт на asp.net core. Это просто startup.cs, который при входе в IIS перерасывает залогиненного пользователя сразу на нужный html файл по username.
На папке с файлами есть права на группу Users. Также они унаследованы файлами. Если я уберу из доступа эту группу, и добавлю нужного пользователя на файл - доступ нет ни у кого, в том числе и у нужного юзера.
trlhrn, я бы сначала добился, чтобы IIS только с NTLM и обработчиком статических файлов правильно отдавал файлы. с отключенным asp.net и без всякого aspnetcore. т.е. корень сайта - папка с файлами.
с aspnetcore надо смотреть, видит ли он ntlm аутентификацию уже в себе и олицетворяет ли ее при доступе к файлам.
опять же, как отдается этот файл. встроенным миддлваре для статики или чтение / запись в response самостоятельно.
еще может зависеть от модели размещения In/out process. в доках про модель размещения вроде было упоминания об ограничениях способов аутентификации.
Вот это что выведет @Context.User.Identity.AuthenticationType
trlhrn, если есть просто статические файлы и нужно разграничить доступ к ним по учетным записям Windows, то тут программировать ничего не надо. корень сайта - папка файловой системы с этими файлами и всё.
NewDevLab, похоже что да, так работает как нужно с NTFS правами. ASP.net был сделан для того, чтобы при входе на сайт пользователя сразу редиректило на аллоцированный ему файл по username. Т.е. юзер идут на https://qwe.site.com и его по его логину редиректит на нужный файл. Можно это сделать без ASP.net?
trlhrn, ну не asp.net, а asp.net core всё-таки.
если с его помощью (указав wwwroot на папку с файлами), такого же поведения не удаётся добиться, то
можно сделать на одном сайте:
- корневое приложение - это редиректор на asp.net core,
- виртуальное приложение - в папке users, например, где корень приложения - папка с файлами. и оно безо всякого asp, только статика и NTLM аутентификация.
NewDevLab, спасибо. Сделал этим методом "- корневое приложение - это редиректор на asp.net core,
- виртуальное приложение - в папке users, например, где корень приложения - папка с файлами. и оно безо всякого asp, только статика и NTLM аутентификация."
Похоже, что все ОК теперь.
Смотрите результирующие права, по идее вам все должно показать из оснастки iis если конечно все настраивается из файловое системы. Так же посмотрите в журнал системы . Там могут быть ошибки.