Хорошо. Здесь мы пытаемся настроить классический сайт ASP на IIS 7.5 в Windows Server 2008 R2. В корне сайта есть папка с именем dbc, и в ней есть файл, который используется для чтения и записи определенной информации во время обработки каждой страницы.
Проблема в том, что если я предоставляю разрешения на запись IUSR и разрешения на запись IIS_IUSRS или разрешения записи DefaultAppPool, я получаю «Доступ к пути E: .. \ websiteroot \ dbc \ filename.txt 'запрещен»
Но если я предоставлю ВСЕМ доступ на запись в эту папку dbc, то я не получу никакой ошибки, все кажется идеальным.
Дополнительная информация: веб-сайт работает в режиме классического конвейера, анонимная аутентификация включена (возможно, включена только аутентификация). И я попробовал анонимную аутентификацию с использованием учетной записи IUSR, а также идентификации пула приложений. В моем случае ApplicationPoolIdentity является идентификатором для аутентификации веб-сайта. Мы используем COM + для файлового ввода-вывода. И классический ASP Server.CreateObject для создания объекта из него. COM + работает как сетевая служба.
Мысли? Я не хочу давать разрешение на запись ВСЕМ. Я что-то пропустил?
Решено: вот что я сделал
Мой сайт с именем CipherDemo работал под AppPoolIdentity в IIS 7.5, который может быть расположен Identity IIS AppPool \ CipherDemo. Я использовал ICACLS, чтобы дать разрешения RW для этой папки.
и COM +, который фактически выполнял файловый ввод-вывод, выполнялся под идентификатором сетевой службы. Когда я использовал Process Monitor для отслеживания ошибки «Отказано в доступе», оказалось, что у сетевой службы есть только разрешение на чтение для этой папки.
Я использовал ICACLS "имя_фолдера" / grant: r "NT AUTHORITY \ NETWORKSERVICE" :( OI) (CI) RXW / T для предоставления доступа на запись в эту папку.
И решил это.
У меня было намерение, что, поскольку веб-сайт работает как CipherDemo Identity, это будет учетная запись, которая будет использоваться для доступа к файлу через COM +. Но стыдно узнать, что COM + все еще будет работать на своих собственных границах идентичности.
источник
Вы можете добавить учетную запись через NTFS GUI, введя ее напрямую. Название в формате
IIS APPPOOL\<<app pool name>>
, напримерIIS APPPOOL\DefaultAppPool
. (см. эту статью поддержки Microsoft )Альтернативное решение: я использовал учетную запись «Сетевая служба» в качестве пользователя пула приложений, предоставляющего ей разрешение на запись.
источник
Если вы хотите предоставить только разрешение на запись WRITE конкретному пользователю, вам также следует изменить «Идентификатор анонимного пользователя» сайта на «Конкретный пользователь», а не «Идентификатор пула приложений».
источник