Настройка параметров 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 с фильтрацией запросов .