Назад | Перейти на главную страницу

Доступ к сетевому диску IIS 7 с учетными данными

У меня есть сервер IIS 7 с запущенным на нем приложением PHP. Это приложение должно иметь возможность подключаться к сетевому диску, для которого требуются имя пользователя и пароль. Этот диск подключается при входе в систему для пользователей с net use \\server /user:. Пользователь не вошел в систему. Как я могу подключить этот диск для использования в приложении?

Я попытался изменить пул приложений для своего пользователя, но мне все еще отказывают. Я пробовал запускать командный файл, используя его как систему. Я пробовал создать виртуальный каталог, но мне не понравилось требуемое имя пользователя. Имя пользователя содержит \ и. Пользователь также не является пользователем, распознаваемым Windows. У меня нет контроля над сетевым диском, только доступ к нему.

У меня была аналогичная проблема, когда мне нужен доступ к общему сетевому ресурсу, и я решил ее, выполнив следующие действия:

1) Создайте учетную запись с тем же именем пользователя и паролем на сервере переднего плана и на файловом сервере. Убедитесь, что срок действия пароля не истек или его необходимо изменить.

2) Создайте сетевой ресурс и дайте новой учетной записи права чтения / записи. Я также проверил, что могу подключиться с внешних серверов, используя новую учетную запись, чтобы убедиться, что на пути нет брандмауэров.

3) На сервере переднего плана я включил учетную запись в группу IIS_IUSRS, которая косвенно дает ему права «Вход в систему в качестве пакетного задания».

4) Выполните следующую команду, чтобы предоставить права учетной записи.

aspnet_regiis -ga <your_app_pool_user>

Узнать больше: Как: создать учетную запись службы для приложения ASP.NET 2.0 (MSDN)

5) Перезапустите WAS и IIS, чтобы убедиться, что изменения в членстве в группе учетных записей сохранятся, если вы попытаетесь использовать учетную запись.

C:> net stop was /y
C:> net start w3svc

6) Создайте пул приложений и установите идентификацию в дополнительных настройках.

Это та часть, где я застрял в IIS 8 в Windows Server 2012 с сообщениями об ошибках при попытке установить личность.

Из диспетчера IIS я получил следующее диалоговое окно с ошибкой: «При выполнении этой операции произошла ошибка. Подробности: значение не попадает в ожидаемый диапазон».

Пытаясь установить идентификатор пула приложений из командной строки, я получаю аналогичную ошибку:

C:> appcmd set config /section:applicationPools 
     /[name='test-pool'].processModel.identityType:SpecificUser 
     /[name='test-pool'].processModel.userName:MyAccountName 
     /[name='test-pool'].processModel.password:P@ssw0rd

ERROR ( hresult:80070057, message:Failed to commit configuration changes.
  The parameter is incorrect.
 )

Когда я удаляю последний параметр, пароль, команде удастся изменить тип удостоверения и установить имя пользователя, но я так и не понял, почему я не смог установить пароль, поэтому я ответил на редактирование своего applicationHost.config файл напрямую. К сожалению, пароль оказывается открытым текстом.

<configuration>
   ...
    <system.applicationHost>
        <applicationPools>
            ...
            <add name="test-pool" managedRuntimeVersion="v4.0">
                <processModel identityType="SpecificUser" 
                  userName="MyAccountName" password="P@ssw0rd" />
            </add>
            ...
        </applicationPools>
        ...
    </system.applicationHost>
    ...
</configuration>

7) Наконец, я настроил свое веб-приложение на использование пула приложений, и оно могло без проблем получить доступ к общему сетевому ресурсу.

Я бы подключил сетевой диск с использованием альтернативных учетных данных, а затем подключил бы приложение PHP к соответствующей букве диска. Имейте в виду, что если Windows не имеет доступа к диску, то и PHP нет, поскольку PHP не поддерживает аутентификацию Windows.