Поделиться через


Настройка параметров WebDAV с помощью AppCmd

Роберт Мак-Мюррей

Введение

Корпорация Майкрософт выпустила новый модуль расширения WebDAV, который был полностью переписан для служб IIS 7.0 (IIS 7.0) в Windows Server® 2008. Этот новый модуль расширения WebDAV включает множество новых функций, которые позволяют веб-авторам публиковать содержимое лучше, чем раньше, и предлагает веб-администраторам дополнительные возможности безопасности и конфигурации. Корпорация Майкрософт выпустила обновление модуля расширения WebDAV для Windows Server® 2008, которое обеспечивает поддержку общих и монопольных блокировок для предотвращения потери обновлений из-за перезаписи.

В этом документе описано, как использовать новую служебную программу AppCmd.exe в IIS 7.0 для настройки параметров WebDAV из командной строки или пакетного скрипта.

Предварительные требования

Для выполнения процедур, описанных в этой статье, требуются следующие элементы:

  • На сервере должны быть установлены службы IIS 7.0, и необходимо настроить следующее:

    • Веб-сайт по умолчанию, созданный установкой IIS 7.0, должен по-прежнему существовать.
  • Необходимо установить новый модуль расширения WebDAV. Сведения об установке нового модуля WebDAV см. в следующем документе:

Примечание

Необходимо убедиться, что вы выполните действия, описанные в этом документе, используя полные административные разрешения. Лучше всего сделать это одним из двух перечисленных ниже способов:

  • Войдите на компьютер с помощью локальной учетной записи администратора.
  • Если вы вошли с помощью учетной записи с правами администратора, которая не является локальной учетной записью администратора, откройте диспетчер IIS и все сеансы командной строки с помощью параметра "Запуск от имени администратора".

Указанное выше условие является обязательным, так как компонент безопасности контроля учетных записей (UAC) в Windows Server 2008 будет препятствовать административному доступу к параметрам конфигурации IIS 7.0. Дополнительные сведения о контроле учетных записей см. в следующей документации:

Примечание

Параметры фильтрации запросов могут блокировать несколько типов файлов при разработке WebDAV по умолчанию. При настройке WebDAV с помощью пользовательского интерфейса диспетчера IIS параметры фильтрации запросов автоматически обновляются, чтобы разблокировать разработку WebDAV. Однако если вы решили настроить WebDAV каким-либо способом, кроме использования пользовательского интерфейса диспетчера IIS, см. пошаговое руководство Настройка WebDAV с фильтрацией запросов .

Основные понятия AppCmd

AppCmd.exe — это новое средство командной строки для администрирования IIS 7.0. Во многих отношениях его можно рассматривать как замену скрипту adsutil.vbs из предыдущих версий IIS. AppCmd.exe поддерживает широкий спектр параметров команд для различных объектов, что позволяет легко создавать скрипты в пакетных файлах для настройки множества параметров IIS. (Примечание. Служебная программа AppCmd.exe находится в %WinDir%\System32\InetSrv folder.)

Общий синтаксис для AppCmd.exe:

AppCmd (command) (object-type) <identifier> </parameter1:value1 ...>

AppCmd.exe также предоставляет расширенную поддержку справки командной строки, доступ к которой можно получить с помощью одного из следующих методов:

AppCmd /?
AppCmd (object) /?
AppCmd (command) (object) /?

Список команд зависит от объекта , и поддерживаются следующие объекты:

Объект Описание
САЙТА Администрирование виртуальных сайтов
APP Администрирование приложений
VDIR Администрирование виртуальных каталогов
APPPOOL Администрирование пулов приложений
CONFIG Администрирование разделов общей конфигурации
WP Администрирование рабочих процессов
REQUEST Администрирование HTTP-запросов
MODULE Администрирование серверных модулей
BACKUP Администрирование резервных копий конфигурации сервера
TRACE Работа с журналами трассировки неудачных запросов

Например, можно указать, какие веб-сайты настроены на сервере, используя объект SITE со следующим синтаксисом:

AppCmd list site

Аналогичным образом можно указать, какие пулы приложений настроены на сервере, используя объект APPPOOL со следующим синтаксисом:

AppCmd list apppool

AppCmd также можно использовать для задания значений для различных параметров конфигурации с помощью объекта SITE. Для перечисления доступных параметров веб-сайта по умолчанию можно использовать следующую команду:

AppCmd set site "Default Web Site" /?

Чтобы получить список параметров конфигурации для определенного пути, используйте объект CONFIG, как показано в следующем примере:

AppCmd list config "Default Web Site/" /section:system.webServer/security/authentication/windowsAuthentication

Объект CONFIG также можно использовать для задания параметров конфигурации, как показано в следующем примере:

AppCmd set config "Default Web Site/" /section:system.webServer/security/authentication/windowsAuthentication /enabled:true

Вы также можете управлять тем, где AppCmd будет записывать заданные параметры, с помощью параметра командной строки /commit:. Например, далее в этом документе мы рассмотрим следующую команду, которая включает WebDAV на веб-сайте по умолчанию:

AppCmd set config "Default Web Site/" /section:system.webServer/webdav/authoring /enabled:true /commit:apphost

Примечание

Эта команда включает WebDAV для веб-сайта по умолчанию и записывает этот параметр в файл ApplicationHost.config.

AppCmd является чрезвычайно мощной утилитой, и, говоря реалистично, есть слишком много, чтобы охватить в таком коротком пространстве, поэтому дополнительные сведения о знакомстве с AppCmd.exe, пожалуйста, см. в следующей статье на веб-сайте IIS.NET:

В этом случае мы переходим к настройке WebDAV на сервере.

начало работы с помощью WebDAV

WebDAV устанавливает расширение схемы по умолчанию для параметров IIS, что позволяет AppCmd работать с WebDAV без каких-либо специальных изменений. Новый модуль WebDAV сохраняет все настраиваемые параметры в ApplicationHost.config файле и использует следующие разделы:

  • system.webServer/webdav/authoring
  • system.webServer/webdav/authoringRules

Параметры "разработки" можно настроить только в корне веб-сайта, тогда как параметры authoringRules можно настроить для каждого URL-адреса. Чтобы узнать, какие параметры были настроены для каждого из этих разделов для заданного пути, можно использовать AppCmd, как показано в следующих примерах:

AppCmd list config "Default Web Site/" /section:system.webServer/webdav/authoring
AppCmd list config "Default Web Site/" /section:system.webServer/webdav/authoringRules

Включение или отключение WebDAV для веб-сайта

Понятно, что самая простая и полезная команда для WebDAV — включение или отключение WebDAV для сайта. Синтаксис для включения WebDAV для веб-сайта выглядит следующим образом:

AppCmd set config "Default Web Site/" /section:system.webServer/webdav/authoring /enabled:true /commit:apphost

В этом примере мы задаем для атрибута enabled значение true для раздела WebDAV "разработка" на веб-сайте по умолчанию и принудительно записываем это изменение в файл ApplicationHost.config. И наоборот, можно отключить WebDAV, задав для этого же значения значение false, как показано в следующем примере:

AppCmd set config "Default Web Site/" /section:system.webServer/webdav/authoring /enabled:false /commit:apphost

Требование SSL для разработки WebDAV для веб-сайта

Чтобы защитить передаваемые данные, можно настроить WebDAV на требование SSL для всех операций. Это можно сделать, задав атрибуту requireSsl значение true для раздела WebDAV "разработка", используя следующий синтаксис:

AppCmd set config "Default Web Site/" /section:system.webServer/webdav/authoring /requireSsl:true /commit:apphost

Эту функцию можно отключить, задав атрибуту requireSsl значение false, используя следующий синтаксис:

AppCmd set config "Default Web Site/" /section:system.webServer/webdav/authoring /requireSsl:false /commit:apphost

Разрешение доступа к скрытым файлам для веб-сайта

В целях безопасности можно запретить возврат файлов, помеченных как скрытые на сервере, в списках файлов. Для этого задайте для атрибута allowHiddenFiles значение true в элементе fileSystem в разделе "разработка", используя следующий синтаксис:

AppCmd set config "Default Web Site/" /section:system.webServer/webdav/authoring /fileSystem.allowHiddenFiles:true /commit:apphost

Чтобы отключить перечисление скрытых файлов, задайте для атрибута allowHiddenFiles значение false с помощью следующего синтаксиса:

AppCmd set config "Default Web Site/" /section:system.webServer/webdav/authoring /fileSystem.allowHiddenFiles:false /commit:apphost

Настройка параметров совместимости WebDAV для веб-сайта

Чтобы обеспечить совместимость с предыдущими версиями WebDAV для IIS, некоторые дополнительные функции предоставляются с помощью параметров совместимости. В настоящее время список параметров выглядит следующим образом:

Параметр совместимости Описание
Нет Указывает, что не должны поддерживаться функции совместимости.
MsAuthorVia Указывает, что должен быть возвращен заголовок "MS-Author-Via". (Примечание. Некоторые средства веб-разработки Майкрософт используют этот заголовок.)
MultiProp Указывает, что в клиентских запросах должно быть разрешено несколько <инструкций prop> .
CompactXml Определяет, будет ли XML,возвращаемый модулем WebDAV, завершать каждую строку последовательностью CRLF.
IsHidden Указывает, что должно поддерживаться псевдо-динамическое свойство IsHidden.
IsCollection Указывает, что должно поддерживаться псевдо-динамическое свойство IsCollection.

Чтобы задать любую из этих функций, необходимо задать значение атрибута compatFlags в разделе "разработка", используя следующий синтаксис:

AppCmd set config "Default Web Site/" /section:system.webServer/webdav/authoring /compatFlags:"MsAuthorVia,CompactXml" /commit:apphost

Обратите внимание, что параметры совместимости указаны в виде набора флагов, разделенных запятыми.

Работа с правилами разработки WebDAV

Новый модуль WebDAV использует правила разработки, которые позволяют настроить способ ответа WebDAV на запросы на разработку от клиентов. Например, на веб-сайте может быть включен анонимный доступ для пользователей Интернета, но доступ к веб-разработке должен быть ограничен определенным набором пользователей. С помощью правил разработки можно настроить, какие пользователи имеют доступ к различным частям содержимого веб-сайта.

Настройка значений по умолчанию для правил разработки

Указание того, разрешены ли файлы, не сопоставленные с MIME

По соображениям безопасности СЛУЖБЫ IIS не разрешают доступ к файлам, которые не указаны в схеме MIME по умолчанию. Учитывая это, веб-авторам может потребоваться работать с определенными типами файлов на сервере, который не указан в схеме MIME. (Например, включить файлы, файлы данных и т. д.) Чтобы разрешить доступ к файлам, не сопоставленным с MIME, необходимо задать для атрибута allowNonMimeMapFiles значение true в разделе authoringRules. В следующем примере синтаксиса показано, как это делается:

AppCmd set config "Default Web Site/" /section:system.webServer/webdav/authoringRules /allowNonMimeMapFiles:true /commit:apphost

Эту функцию можно отключить, задав для атрибута allowNonMimeMapFiles значение false с помощью следующего синтаксиса:

AppCmd set config "Default Web Site/" /section:system.webServer/webdav/authoringRules /allowNonMimeMapFiles:false /commit:apphost

Указание типа MIME по умолчанию

При работе с типами файлов, которых нет в списке MIME, службам IIS по-прежнему необходимо возвращать тип MIME клиентам. По умолчанию для этого параметра задано значение application/octet-stream, что означает, что файл должен рассматриваться как необработанный двоичный файл независимо от типа контента. Чтобы задать тип MIME по умолчанию для файлов, не сопоставленных с MIME, тип текстовых файлов, можно использовать следующий синтаксис:

AppCmd set config "Default Web Site/" /section:system.webServer/webdav/authoringRules /defaultMimeType:"text/plain" /commit:apphost

Чтобы сбросить тип MIME по умолчанию, используйте следующий синтаксис:

AppCmd set config "Default Web Site/" /section:system.webServer/webdav/authoringRules /defaultMimeType:"application/octet-stream" /commit:apphost

Управление правилами разработки

Правила разработки хранятся в коллекции, и каждое правило может содержать следующие атрибуты:

attribute Описание
path Указывает тип контента для правила. (См. ниже.)
users Указывает имя пользователя для правила. (См. ниже.)
Роли Указывает группу или роль для правила.
access Указывает тип доступа для правила. (См. ниже.)

Примечания

  • Атрибут path используется для указания типа контента для правила разработки. Это может быть для определенных типов контента, например "*.aspx", "*.htm" и т. д., или можно использовать "*", чтобы указать, что правило разработки предназначено для всего содержимого.

  • Атрибуты "роли" и "пользователи" должны объявляться эксклюзивными друг для друга. Это значит, что правило разработки должно быть для "пользователей" или "ролей", но не для обоих.

  • Для атрибута users определены следующие специальные значения:

    Значение Описание
    * все пользователи
    ? Анонимные пользователи

    Примечание

    Анонимные пользователи не могут читать и записывать содержимое; Этот параметр используется для ограничения типов файлов для анонимных запросов свойств.

  • Для типов доступа определяются следующие значения:

    Значение Описание
    None Указывает, что доступ запрещен для типа контента.
    Чтение Указывает доступ на чтение для типа контента.
    запись Указывает доступ на запись для типа контента.
    Источник Указывает доступ к исходному коду для типа контента.

Добавление правила разработки

Чтобы добавить правило разработки для пути, можно использовать синтаксис, как в следующих примерах:

AppCmd set config "Default Web Site/" /section:system.webServer/webdav/authoringRules /+[users='administrator',path='*',access='Read,Write,Source'] /commit:apphost
AppCmd set config "Default Web Site/mypath" /section:system.webServer/webdav/authoringRules /+[roles='Authors',path='*.aspx',access='Read,Write,Source'] /commit:apphost

Изменение правила разработки

После добавления правила разработки его можно изменить с помощью следующего синтаксиса:

AppCmd set config "Default Web Site/" /section:system.webServer/webdav/authoringRules /[users='administrator',path='*'].access:"None" /commit:apphost

Удаление правила разработки

Вы можете удалить правило разработки, просто указав имя пользователя или роли с помощью следующего синтаксиса:

AppCmd set config "Default Web Site/" /section:system.webServer/webdav/authoringRules /-[users='administrator'] /commit:apphost

Примечание

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

Кроме того, можно указать имя пользователя или роли и тип контента, как показано в следующем примере:

AppCmd set config "Default Web Site/" /section:system.webServer/webdav/authoringRules /-[users='administrator',path='*'] /commit:apphost

Итоги

В этом документе показано, как сделать следующее:

Дополнительные сведения

Дополнительные сведения об использовании WebDAV см. в следующих статьях:

Примечание

Как упоминалось ранее, параметры фильтрации запросов по умолчанию могут блокировать разработку WebDAV нескольких типов файлов. Если вы не измените параметры фильтрации запросов, при попытке опубликовать заблокированные файлы могут возникнуть различные ошибки. Например, при попытке отправить или скачать web.config файл вы увидите ошибки в клиенте WebDAV. Дополнительные сведения о настройке параметров фильтрации запросов см. в пошаговом руководстве Настройка WebDAV с фильтрацией запросов .