Как установить разрешения для папки с .NET? - PullRequest
1 голос
/ 15 февраля 2010

Можно ли использовать небольшую страницу .NET для установки прав доступа к папкам для некоторых папок на сервере, на котором она находится? Какой код или объекты можно использовать для этого? Я на Windows Server 2003.

По сути, я хочу открыть страницу с помощью GET или POST, запустить ее, проверить и / или обновить разрешения для папки.

Ответы [ 2 ]

6 голосов
/ 15 февраля 2010

Есть несколько возможных способов подойти к этому.

Одним из них является использование класса FileIOPermissions , который позволяет указывать разрешения для файлов и папок.

Другой вариант заключается в использовании класса DirectorySecurity в пространстве имен System.Security.AccessControl и, в частности, SetAccessControl Метод этого класса.

Этот второй метод должен предоставить вам гораздо больше детализации и контроля над настройкой разрешений, поскольку пространство имен System.Security.AccessControl позволяет программно создавать или изменять списки дискреционного контроля доступа (DACL) и списки управления доступом системы. (SACL) для ряда защищенных ресурсов, таких как файлы, папки и т. Д.

Независимо от того, какой метод вы выбрали для установки разрешения, вам нужно помнить об учетной записи, под которой работает код, управляемый ASP.NET. Вы говорите, что используете Windows Server 2003, поэтому, вероятно, вы используете IIS версии 6.0 . По умолчанию IIS 6.0 запускает весь код пользователя под учетной записью « Сетевая служба », которая является учетной записью с низким уровнем привилегий и будет иметь ограниченные разрешения вне процессов IIS и иерархии веб-сайта. Вы можете прочитать статью MSDN, «Как: использовать учетную запись сетевой службы для доступа к ресурсам в ASP.NET» , касающуюся доступа к ресурсам на стороне сервера и того, какой именно доступ вы будете иметь под этой учетной записью.

В зависимости от точного характера того, что вы хотите сделать, вам также может понадобиться Олицетворение ASP.NET , чтобы ваш серверный код мог запускаться в контексте другой учетной записи. См. Статью MSDN « Как: использовать олицетворение и делегирование в ASP.NET 2.0 » для получения дополнительной информации об этом.

2 голосов
/ 15 февраля 2010

Для этого можно использовать класс FileIOPermission . Просто убедитесь, что у пользователя, под которым работает веб-сайт, есть разрешение на все настройки безопасности.

...