IIS7 Доступ к сетевому ресурсу
Я запускаю IIS 7 в Windows Server 2008 R2 с PHP 5.4. Один из моих PHP-скриптов пытается получить доступ к файлу на защищенном сетевом ресурсе, используя UNC-путь. Как изменить учетную запись службы IIS на учетную запись, у которой есть разрешение на доступ к ресурсу? Это действительно легко сделать на HTTP-сервере Apache (вы просто меняете его), но неясно, как это сделать с IIS. Что я могу сделать?
Update:
Мне удалось заставить все работать с помощью опции "Подключиться как" в "Основные настройки" на моем веб-сайте, а затем указать учетную запись, имеющую доступ к сетевому ресурсу. Похоже, что моя проблема связана с этим вопросом:
https://serverfault.com/info/366234/iis-identities-application-pool-vs-connect-as-in-basic-settings
Ответы
Ответ 1
Для IIS 7, работающего в Windows Server 2008 R2... В IIS Manager
выберите Application Pool
, в котором работает ваш веб-сайт.
Нажмите "Дополнительные настройки". Будет запись для Identity
(она находится в разделе Process Model
). Нажмите на нее, введите учетные данные для своей учетной записи, у которой есть разрешение на доступ к ресурсу.
UPDATE
Вы должны убедиться, что если вы используете учетную запись домена Active Directory, вы правильно указали это под Identity
для запущенного пула приложений. Например, MYDOMAIN\myAccount
.
После внесения этого изменения вам нужно будет сделать следующее:
- Остановить веб-сайт.
- Переустановите пул приложений.
- Запустите веб-сайт.
ОБНОВЛЕНИЕ II
Из обсуждения комментариев на этом ответе @HydroPowerDeveloper смог получить PHP script, чтобы иметь возможность доступа к сетевому ресурсу через UNC-путь, используя WebSite → Основные настройки → "Подключить как" и установить учетные данные там,
В прошлом я всегда использовал подход Identity
с помощью Application Pool
, и это позволило моему коду получить доступ к общим ресурсам сети по пути UNC.
Однако все сайты/приложения, которые я развернул на IIS
, основаны на WCF или ASPX-сайтах .NET.
Я бы предположил (но не на 100% уверен в этом, нуждался бы в исследовании/тестировании, чтобы подтвердить), что Identity
, указанный в Application Pool
, используется при выполнении .NET-кода, тогда как "Connect As" используемый PHP скрипт.
Ответ 2
Как правило, пул приложений устанавливается с минимальным количеством привилегий.
http://msdn.microsoft.com/en-us/library/ff647402.aspx
Самый простой путь - разрешить доступ к текущей учетной записи IIS.
В проводнике перейдите в общий каталог.
Щелкните правой кнопкой мыши → Свойства → Безопасность
Если вы не видите ожидаемого пользователя IIS в списке (имена групп или пользователей), отредактируйте и добавьте пользователя по мере необходимости.
Я использовал "NETWORK SERVICE" → Проверить имена.
Подробные инструкции находятся на этом сайте.
Таким образом, система все еще ограничена, мы ТОЛЬКО предоставляем доступ к конкретным каталогам, нам не нужно создавать новых пользователей, нам не нужно перерабатывать пул приложений, и нам не нужно для выполнения любого отличного кода олицетворения.