Дамп веб-развертывания dirPath не работает с делегированием и пользователем без прав администратора

Я пытаюсь запустить следующую команду веб-развертывания:

msdeploy.exe -verb:dump -source:dirPath="C:\Deploy",wmsvc=localhost,username=<user>,password=<pass>

Я попытался запустить это с двумя пользователями, Джоном и Мэри. Джон является членом группы администраторов на коробке, а Мэри — нет; команда работает для Джона, но терпит неудачу с ошибкой 401 для Мэри.

У меня настроено следующее:

  • Мэри имеет полный доступ к C:\Deploy через ACL (как и группа администраторов).
  • И Джону, и Мэри был предоставлен доступ к C:\Deploy dirPath в IIS с использованием функции делегирования (см. ниже).

Моя запись в файлеadmin.config:

<rule enabled="true" providers="dirPath" actions="*" path=".*" pathType="RegularExpression">
    <runAs identityType="SpecificUser" userName="AnAdministrator" password="..." />
    <permissions>
        <user name="PC\John" isRole="false" accessType="Allow" />
        <user name="PC\Mary" isRole="false" accessType="Allow" />
    </permissions>
</rule>

Когда я добавляю Мэри в группу администраторов, команда работает. Но весь смысл делегирования заключается в том, чтобы иметь возможность запускать команды развертывания без прав администратора. Я могу запускать другие команды (например, -verb:dump -source:appHostConfig="Веб-сайт по умолчанию"), которые подходят для Мэри - просто dirPath не работает.

WMSvc.log, похоже, не содержит ошибок для неудачной команды, хотя я вижу успешные. Я вижу 401 для запроса HEAD в трассировке неудачных запросов, но не знаю, почему это происходит...

Любые указатели приветствуются.


person zcrar70    schedule 02.02.2011    source источник
comment
Теперь мне интересно, ограничено ли делегирование сайтами, к которым у пользователей есть доступ - я могу использовать contentPath=Default Web Site в вышеописанном сценарии, но я не могу использовать dirPath=C:\deploy (даже несмотря на то, что ACL Идентичен в обоих случаях — я даже пытался дать всем полный доступ к C:\Deploy.) Если это правильно, это будет раздражать, потому что это ограничит ряд сценариев развертывания.   -  person zcrar70    schedule 03.02.2011


Ответы (2)


zcrar70, вы правы: делегирование начинается только тогда, когда пользователь получает доступ к области сайта. В вашем примере, если вы предоставили PC\Mary доступ к сайту (через разрешения диспетчера IIS), то это просто сработало бы.

Можете ли вы объяснить свой сценарий немного подробнее? Вы пытаетесь дать пользователю без прав администратора разрешение на запуск определенных провайдеров на ВСЕХ сайтах?

person Bilal and Olga    schedule 08.02.2011
comment
Спасибо за ответ. В этом случае dirPath, который я пытался сбросить, на самом деле не является частью сайта. В конечном итоге я пытался сделать следующее: * загрузить на сервер пакет, содержащий новую версию файлов, составляющих сайт (а также другие файлы, необходимые для развертывания, например, скрипты миграции БД, COM-компоненты и т. д.); * укажите существующий сайт IIS на новые файлы. Я хотел запустить это через пользователя, у которого нет полного доступа администратора к серверу, в (сомнительных?) целях безопасности. Невозможность загрузки в папку за пределами сайта IIS исключает этот сценарий. - person zcrar70; 09.02.2011

Ваше удостоверение RunAs «Администратор» должно иметь разрешения на доступ к c:\Deploy, так как и Мэри, и Джон будут олицетворяться (если исходное удостоверение не работает, а не Джон) как этот пользователь. ACL C:\Deploy для пользователя AnAdministrator и повторите попытку.

Вы также можете использовать ссылку ServerValidator, чтобы проверить, готова ли ваша среда к делегированному развертыванию.

person kateroh    schedule 02.02.2011
comment
Спасибо за ответ - у пользователя AnAdministrator есть разрешения на C:\Deploy - как упоминалось выше, команда отлично работает для Джона (который также выдает себя за того же пользователя AnAdministrator). Я попробую ServerValidator, как только смогу получить он скачал... - person zcrar70; 02.02.2011
comment
Я только что запустил ServerValidator, и, похоже, он не проходит тест Check Web Deploy Delegation Rules — судя по журналу, он не работает, если не находит правила делегирования почти для всех провайдеров, тогда как я настроил только dirPath, contentPath и приложениеHostConfig. Тем не менее, кажется, он достаточно доволен теми, которые я настроил (они отображаются зеленым в журнале). - person zcrar70; 03.02.2011
comment
Я попрошу кого-нибудь из команды WebDeploy взглянуть на это. - person kateroh; 08.02.2011