Место преступления - WinSrv2008 с IIS7.
Мой пользователь пула приложений IIS пытается создать папку, но не может. Как мне узнать, какой это пользователь?
Скажем, я мало знаю о IIS7 и Aspnet, но мне нужно отслеживать все, что происходит, с помощью инструментов.
Так что я зажигаю Sysinternals / ProcessMonitor чтобы узнать, что происходит.
Я обнаружил, что доступ к папке запрещен, как я и подозревал. Но какой пользователь? Я добавляю столбец User к выходным данным или ProcessMonitor, и он говорит IIS Apppool \ Defaultapppool в столицах. Ну ... это не пользователь это? Если я перейду к IIS и его пулам приложений, расширенным настройкам, модели процесса и идентификатору, я могу увидеть подсказки о том, какой это пользователь, но это только потому, что я знаю IIS. Что, если бы это был Apache или LightHttpd или что-то еще? Как мне увидеть пользователя, которому нужно дать соответствующие права?
Фактически, IIS AppPool \ DefaultAppPool ЯВЛЯЕТСЯ пользователем, и вы можете добавить разрешения «Изменить» для родительской папки, чтобы позволить ей создавать подпапки и т. Д. - прочтите http://www.iis.net/learn/manage/configuring-security/application-pool-identities для получения дополнительной информации.
По умолчанию IIS 7+ использует IUSR
учетная запись пользователя и IIS_IUSRS
групповой аккаунт для разрешений. Вам нужно либо A) использовать именованную учетную запись, либо B) дать разрешение на IUSR
пользователь или IIS_IUSRS
группа. На сайте Microsoft IIS есть отличная вводная информация о встроенных учетных записях.
Вариант А, вероятно, лучший подход. Вы можете сделать это, войдя в диспетчер IIS, выбрав пулы приложений, затем щелкнув правой кнопкой мыши пул приложений, который вы хотите изменить, и выберите «Дополнительные настройки».
В расширенных настройках в области «Модель процесса» появляется опция «Идентификация». Затем щелкните поле рядом с этой записью и щелкните появившиеся эллипсы. Появившееся меню позволит вам установить индивидуальную учетную запись для пула приложений.
Вы уже используете правильный инструмент (ProcessMonitor), просто имя учетной записи выглядит немного забавно.
«IIS Apppool \ DefaultAppPool» действительно является действующей учетной записью пользователя Windows, хотя и особенной. У него нет пароля, и вы не можете использовать его для входа в систему. Он даже не указан ни в одном из встроенных инструментов для перечисления учетных записей пользователей.
Однако вы можете назначать для него разрешения, вам просто нужно ввести полное имя в графическом интерфейсе или в icacls.exe. Поскольку вы нигде не видите его в списке, я обычно добавляю эти типы пользователей в группу, а затем назначаю группе разрешения.
net localgroup groupName "IIS AppPool\Defaultapppool" /ADD
Каждый пул приложений IIS, для которого для свойства идентификации установлено значение ApplicationPoolIdentity (значение по умолчанию в IIS8), имеет одну из этих специальных учетных записей.
Основная причина иметь эти учетные записи - иметь возможность устанавливать разрешения для каждого пула приложений без необходимости управлять множеством учетных записей пользователей и вместо того, чтобы использовать одну и ту же учетную запись пользователя для всех пулов приложений.
Подобно «IIS AppPool *», «NT SERVICE *» представляет собой учетные записи пользователей для запуска служб Windows без необходимости управлять ими, но вы все равно можете назначать разрешения этим пользователям.
Я бы предложил включить аудит «объектного доступа» и проверить журнал аудита.
Можно включить через групповую политику
http://www.techotopia.com/index.php/Auditing_Windows_Server_2008_File_and_Folder_Access
или вручную