Я использую IIS7 (Windows Server 2008 x64), и у меня есть настройка веб-сайта с использованием анонимной аутентификации. Анонимный пользовательский идентификатор настроен как IUSR. Приложение записывает файлы в папку, и я даю разрешения RW группе IIS_IUSRS для этой папки. Это не работает. Я должен явно предоставить IUSR RW perms, чтобы приложение могло записывать в папку.
Насколько я понимаю, идентификатор пула приложений автоматически добавляется в группу IIS_IUSRS. Я предположил, что IUSR (или любой анонимный пользовательский идентификатор) также был подразумеваемым членом группы IIS_IUSRS. Похоже, что это не так.
Во время устранения неполадок я использую Process Monitor для просмотра доступа к папке и определил, что сетевая служба (идентификатор пула приложений) олицетворяет IUSR (это то, что я ожидал), но предоставление разрешений RW группе IIS_IUSRS не позволило IUSR получить доступ к доступ к файлу запрещен).
Может ли кто-нибудь объяснить, является ли IUSR членом группы IIS_IUSRS или нет?
Я просмотрел следующую документацию и не нашел однозначного ответа:
Общие сведения о встроенных учетных записях пользователей и групп в IIS 7
Это потому, что это две разные вещи. IIS_IUSRS - это группа для Учетные записи рабочих процессов IIS. Это означает удостоверение, под которым работает сам пул приложений. IUSR - это анонимный идентификатор пользователя. Это означает личность, которую IIS считает пользователем, обращающимся к сайту.
Теперь, даже если вы этого не сказали, позвольте мне угадаю - это классическое приложение asp? (В противном случае, если это .Net, вы должны использовать олицетворение). В любом случае происходит то, что к ресурсам обращаются как к олицетворенной личности, то есть анонимному пользователю в вашем случае, то есть IUSR. Вот почему вы должны предоставить ему права. В .Net, если вы отключите олицетворение, вы обнаружите, что IIS_IUSRS вступит в игру, как вы ожидаете. В классическом ASP (и для статических файлов) у вас нет выбора, олицетворение всегда «включено»; поэтому всегда используется идентификатор пользователя, а не пула. Так как IIS_IUSRS предназначен для удостоверений пула, он не используется.
Изменить после того, как OP добавил дополнительную информацию:
IUSR и IIS_IUSRS легко спутать из-за их названий. Чтобы увидеть, что они разные, нужно помнить, что IIS_IUSRS является заменой IIS_WPG в IIS6, который был группой рабочих процессов. В эти группы вы добавляете учетные записи, под которыми вы хотите запускать свои пулы, а не анонимные идентификаторы, анонимные привилегии должны быть более ограниченными. например. иногда вам может потребоваться использовать учетную запись домена для запуска пула для делегирования Kerberos другим сетевым ресурсам. Затем вы должны добавить эту учетную запись службы в эту группу.
Когда олицетворение включено, пул / процесс выдает себя за пользователя, потому что ему было приказано. В случае анонимной аутентификации (ваш случай) этим пользователем является IUSR. В случае аутентификации Windows это будет идентификатор пользователя в Windows \ домене. По этой же причине вы получаете снижение производительности при олицетворении, потому что процесс должен переключиться на другой идентификатор для доступа к ресурсам.
Если вы используете .NET и анонимную аутентификацию, тогда я не понимаю, зачем вам включать олицетворение. В случае, если вы не используете или не нуждаетесь в олицетворении, вы должны знать о некоторых дополнительных хитростях в случае IIS7: вы можете полностью уйти из своего IUSR и положить конец путанице. Я думаю, вам это понравится, и это мой предпочтительный метод. Все, что вам нужно сделать, это сказать это повторно использовать идентификатор пула как анонимный идентификатор.
Поэтому после этого вам останется иметь дело только с группой IIS_IUSRS. Но не запутайтесь, это еще не значит, что это одно и то же! Идентификатор процесса может заменить IUSR, но не наоборот!
Еще несколько уловок IIS7, о которых следует помнить: если вы посмотрите на IIS_IUSRS, он может быть пустым. Это потому, что ваши идентификаторы виртуального пула автоматически добавляются к нему при запуске пула, поэтому вам не нужно беспокоиться об этих вещах.
Эта таблица должна помочь лучше прояснить, как определяется идентификатор выполнения потока:
Ресурсы с анонимным доступом под олицетворением, доступ к которым осуществляется как Enabled Enabled IUSR_computer in IIS5/6 or, IUSR in IIS7 or, If you changed the anon user account in IIS, whatever you set there Enabled Disabled MYDOM\MyName Disabled Enabled NT Authority\Network Service (pool identity) Disabled Disabled NT Authority\Network Service (pool identity)