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

IIS 8.5 IISManagerAuth Provider 530 - пользователь не может войти в систему

Я пытаюсь настроить публикацию по FTP для сайта в IIS 8.5 (Windows Server 2012 R2) с пользователем IISManagerAuth. К сожалению, я получаю ужасную ошибку 530 - Пользователь не может войти в систему. Однако она отлично работает с пользователем Windows. При дальнейшем осмотре я получил следующие сообщения:

530-User cannot log in.
Win32 error:   Access is denied. 
Error details: Filename: \\?\C:\Windows\system32\inetsrv\config\redirection.config
Error: Cannot read configuration file due to insufficient permissions

Кажется, это та же проблема, описанная здесь: IIS 7.5 в Windows 7, пользователь IIS не может войти в систему: «Не удается прочитать файл конфигурации из-за недостаточных разрешений»

Решение состоит в предоставлении разрешения на чтение для папки конфигурации и двух файлов сетевой службе:

ICACLS "%SystemDrive%\Windows\System32\inetsrv\config" /Grant "Network Service":R /T
ICACLS "%SystemDrive%\Windows\System32\inetsrv\config\administration.config" /Grant "Network Service":R
ICACLS "%SystemDrive%\Windows\System32\inetsrv\config\redirection.config" /Grant "Network Service":R

Однако, насколько мне известно, этот пользователь мертв и ушел в IIS 8 и более поздних версиях, его заменил ApplicationPoolIdentity. Все это довольно просто при настройке разрешений для физических папок сайта: IIS APPPOOL \ Poolname

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

Итак, я в значительной степени озадачен, знает ли кто-нибудь, какой пользователь используется для чтения этих файлов конфигурации для IISManagerAuth? Какому пользователю нужны здесь разрешения? Или я совершенно не так делаю и проблема совсем в другом?

Спасибо за вашу помощь!

Я понял!

Вам необходимо добавить разрешения на% SystemDrive% \ Windows \ System32 \ inetsrv \ config

Добавьте «Сетевую службу» и дайте ей разрешение на чтение для папки. Когда я это сделал, у меня возникла ошибка, связанная с подпапкой ... но это все равно сработало.

Вы правы, хотя сначала у меня не получилось.

У меня была дополнительная проблема, заключающаяся в том, что «Сетевая служба» на самом деле не называется «Сетевая служба» в неанглоязычных версиях Windows Server. Не знаю, зачем они это сделали, локализация имен пользователей системы мне кажется невероятно глупой. Но я уверен, что в то время это казалось хорошей идеей. Так что вначале у меня была правильная идея, меня просто подбросила эта формальность.

Если у кого-то возникнет такая же проблема, найдите локализованное имя пользователя или используйте идентификатор безопасности «* S-1-5-20».

Вот как следует читать приведенные выше команды, чтобы они работали в любой языковой версии Windows Server:

ICACLS "%SystemDrive%\Windows\System32\inetsrv\config" /Grant *S-1-5-20:R /T
ICACLS "%SystemDrive%\Windows\System32\inetsrv\config\administration.config" /Grant *S-1-5-20:R
ICACLS "%SystemDrive%\Windows\System32\inetsrv\config\redirection.config" /Grant *S-1-5-20:R

Для получения дополнительной информации см. Хорошо известные структуры SID