Share via


Como Configurar o WebDAV Usando AppCmd

por Robert McMurray

Introdução

A Microsoft lançou um novo módulo de extensão WebDAV que foi completamente reescrito para os Serviços de Informações da Internet 7.0 (IIS 7.0) no Windows Server® 2008. Esse novo módulo de extensão WebDAV incorporou muitos recursos novos que permitem aos autores da Web publicar conteúdo melhor do que antes e oferece aos administradores da Web mais opções de segurança e configuração. A Microsoft lançou uma atualização para o módulo de extensão WebDAV para Windows Server® 2008 que fornece suporte a bloqueios compartilhados e exclusivos para evitar atualizações perdidas devido a substituições.

Este documento orientará você sobre o uso do novo utilitário AppCmd.exe no IIS 7.0 para definir as configurações do WebDAV em um script de linha de comando ou em lote.

Pré-requisitos

Os seguintes itens são necessários para concluir os procedimentos nessa seção:

  • O IIS 7.0 precisa ser instalado no servidor e o seguinte precisa ser configurado:

    • O site padrão que é criado pela instalação do IIS 7.0 ainda deve existir.
  • O novo módulo da extensão WebDAV deve estar instalado. Para obter informações sobre a instalação do novo módulo WebDAV, consulte o seguinte documento:

Observação

Você precisa ter certeza de seguir as etapas neste documento usando uma permissões administrativas completas. Isso é feito da melhor forma seguindo um deste dois métodos:

  • Faça logon no computador usando a conta local de "administrador".
  • Se você estiver conectado usando uma conta com permissões administrativas que não seja a conta de “administrador” local, abra o Gerenciador do IIS e todas as sessões de prompt de comando usando a opção “Executar como Administrador”.

A condição acima é necessária porque o componente de segurança UAC (Controle de Conta de Usuário) no Windows Server 2008 impedirá o acesso administrativo às configurações do IIS 7.0. Para saber mais sobre o UAC, confira a seguinte documentação:

Observação

As configurações de Filtragem de Solicitação padrão podem bloquear vários tipos de arquivo na criação do WebDAV como padrão. Quando você configura o WebDAV usando a interface do usuário do Gerenciador do IIS, as configurações de filtragem de solicitação são atualizadas automaticamente para desbloquear a criação do WebDAV. No entanto, se você optar por configurar o WebDAV de qualquer maneira que não seja usando a interface do usuário do Gerenciador do IIS, consulte o passo a passo Como configurar o WebDAV com filtragem de solicitação.

Conceitos básicos do AppCmd

AppCmd.exe é uma nova ferramenta de linha de comando para administrar o IIS 7.0. De muitas maneiras, pense nele como um substituto para o script adsutil.vbs de versões anteriores do IIS. O AppCmd.exe oferece suporte a uma ampla gama de opções de comando para vários objetos, tornando-o facilmente programável em arquivos em lote para configurar uma infinidade de configurações do IIS. (Observação: o utilitário AppCmd.exe está localizado no %WinDir%\System32\InetSrv folder.)

A sintaxe geral para AppCmd.exe é:

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

O AppCmd.exe também fornece suporte de ajuda de linha de comando abrangente, que pode ser acessado usando um dos seguintes métodos:

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

A lista de comandos depende do objeto, e os seguintes objetos são aceitos:

Objeto Descrição
SITE Administração de sites virtuais
APP Administração de aplicativos
VDIR Administração de diretórios virtuais
APPPOOL Administração de pools de aplicativos
CONFIG Administração de seções de configuração geral
WP Administração de processos de trabalho
REQUEST Administração de solicitações HTTP
MODULE Administração de módulos do servidor
BACKUP Administração de backups de configuração do servidor
RASTREAMENTO Trabalhando com logs de rastreamento de solicitação com falha

Por exemplo, você pode listar quais sites estão configurados no servidor usando o objeto SITE com a seguinte sintaxe:

AppCmd list site

Da mesma forma, você pode listar quais pools de aplicativos estão configurados em seu servidor usando o objeto APPPOOL com a seguinte sintaxe:

AppCmd list apppool

O AppCmd também pode ser usado para definir os valores para várias definições de configuração usando o objeto SITE, e você pode usar o seguinte comando para listar as configurações disponíveis para seu site padrão usando a seguinte sintaxe:

AppCmd set site "Default Web Site" /?

Para listar as definições de configuração de um caminho específico, use o objeto CONFIG como no exemplo a seguir:

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

O objeto CONFIG também pode ser usado para definir definições de configuração, conforme mostrado no exemplo a seguir:

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

Você também pode controlar onde o AppCmd gravará as configurações especificadas usando o parâmetro de linha de comando “/commit:”. Por exemplo, mais adiante neste documento, examinaremos o seguinte comando que habilita o WebDAV em seu site padrão:

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

Observação

Esse comando habilita o WebDAV para o Site Padrão e grava essa configuração no arquivo ApplicationHost.config.

O AppCmd é um utilitário extremamente poderoso e, na realidade, é muito assunto para falar em um tempo tão curto, então para obter mais informações sobre como se familiarizar com AppCmd.exe, consulte o seguinte artigo no site da IIS.NET:

Dito isso, passamos para a configuração do WebDAV em seu servidor.

Introdução ao WebDAV

O WebDAV instala uma extensão para o esquema padrão para configurações do IIS, que é o que faz o AppCmd funcionar com o WebDAV sem modificações especiais. O novo módulo WebDAV armazena todas as suas configurações configuráveis no arquivo ApplicationHost.config e usa as seguintes seções:

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

As configurações de “criação” só são configuráveis na raiz de um site, enquanto as configurações de “authoringRules” podem ser definidas por URL. Para ver quais configurações foram definidas para cada uma dessas seções para um determinado caminho, você pode usar o AppCmd como visto nos exemplos a seguir:

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

Como habilitar ou desabilitar o WebDAV para um site

Compreensivelmente, o comando mais básico e útil para WebDAV é habilitar ou desabilitar WebDAV para um site. A sintaxe para habilitar o WebDAV em um site segue o seguinte exemplo:

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

Neste exemplo, definimos o atributo “enabled” como “true” para a seção “criação” do WebDAV no Site Padrão e forçamos essa alteração a ser gravada no arquivo ApplicationHost.config. Por outro lado, você pode desabilitar o WebDAV definindo esse mesmo valor como “false”, conforme mostrado no exemplo a seguir:

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

Exigindo SSL para criação de WebDAV para um site

Para proteger as informações que você pode estar transferindo, o WebDAV pode ser configurado para exigir SSL para todas as operações. Isso é feito definindo o atributo “requireSsl” como “true” para a seção “criação” do WebDAV usando uma sintaxe como a seguinte:

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

Essa funcionalidade pode ser desabilitada definindo o atributo “requireSsl” como “false” usando uma sintaxe como a seguinte:

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

Permitindo acesso a arquivos ocultos para um site

Por motivos de segurança, você pode suprimir se os arquivos marcados como ocultos no servidor serão retornados nas listagens de arquivos. Para fazer isso, defina o atributo “allowHiddenFiles” como “true” no elemento “fileSystem” na seção “authoring” usando uma sintaxe como a seguinte:

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

Para desativar a listagem de arquivos ocultos, defina o atributo “allowHiddenFiles” como “false” usando uma sintaxe como a seguinte:

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

Definição de configurações de compatibilidade WebDAV para um site

Para ser compatível com versões anteriores do WebDAV para IIS, alguns recursos opcionais são expostos por meio de configurações de compatibilidade. Atualmente, a lista de opções é a seguinte:

Configuração de compatibilidade Descrição
Nenhum Especifica que nenhum recurso de compatibilidade deve ser suportado.
MsAuthorVia Especifica que o cabeçalho “MS-Author-Via” deve ser retornado. (Observação: várias das ferramentas de criação na Web da Microsoft usam esse cabeçalho.)
MultiProp Especifica que várias instruções <prop> devem ser permitidas em solicitações de cliente.
CompactXml Define se o XML retornado pelo módulo WebDAV terminará cada linha com uma sequência CRLF.
IsHidden Especifica que a propriedade IsHidden pseudo-live deve ser aceita.
IsCollection Especifica que a propriedade IsCollection pseudo-live deve ser aceita.

Para definir qualquer um desses recursos, você precisará definir o valor do atributo “compatFlags” na seção “criação” usando uma sintaxe como a seguinte:

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

Observe que as configurações de compatibilidade são especificadas como um conjunto de sinalizadores separados por vírgula.

Trabalhando com Regras de Criação WebDAV

O novo módulo WebDAV faz uso de regras de criação, que permitem configurar a maneira como o WebDAV responde à solicitação de criação dos clientes. Por exemplo, seu site pode ter acesso anônimo habilitado para usuários da Internet, mas seu acesso de criação na Web deve ser restrito a um determinado conjunto de usuários. Usando regras de criação, você pode configurar quais usuários têm acesso às várias partes do conteúdo do seu site.

Configuração de padrões de regra de criação

Como especificar se arquivos não mapeados por MIME são permitidos

Por motivos de segurança, o IIS não permite acesso a arquivos que não estão listados no mapa MIME por padrão. Com isso em mente, os autores da Web talvez precisem trabalhar com determinados tipos de arquivo em um servidor que não estão listados no mapa MIME. (Por exemplo: incluir arquivos, arquivos de dados etc.) Para habilitar o acesso a arquivos mapeados não MIME, você precisa definir o atributo “allowNonMimeMapFiles” como “true” na seção “authoringRules”. O exemplo de sintaxe a seguir ilustra como isso é feito:

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

Essa funcionalidade pode ser desabilitada definindo o atributo “allowNonMimeMapFiles” como “false” usando a sintaxe da seguinte maneira:

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

Como especificar o tipo MIME padrão

Ao trabalhar com tipos de arquivo que não estão na lista MIME, o IIS ainda precisa retornar um tipo MIME aos clientes. Por padrão, isso é definido como “application/octet-stream”, o que significa que o arquivo deve ser tratado como um arquivo binário bruto, independentemente do tipo de conteúdo. Para definir o tipo MIME padrão para arquivos não mapeados por MIME como um tipo de arquivo de texto, você pode usar a seguinte sintaxe:

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

Para redefinir o tipo MIME padrão, use a seguinte sintaxe:

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

Gerenciamento de Regras de Criação

As regras de criação são mantidas em uma coleção e cada regra pode conter os seguintes atributos:

Atributo Descrição
path Especifica o tipo de conteúdo da regra. (Veja abaixo)
users Especifica o nome de usuário da regra. (Veja abaixo)
funções Especifica um grupo/função para a regra.
access Especifica o tipo de acesso para a regra. (Veja abaixo)

Observações:

  • O atributo “path” é usado para especificar o tipo de conteúdo para a regra de criação. Isso pode ser para tipos de conteúdo específicos como “*.aspx”, “*.htm”, etc., ou você pode usar “*” para indicar que a regra de criação é para todo o conteúdo.

  • Os atributos “roles” e “users” devem ser declarados exclusivos entre si. Ou seja, uma regra de autoria deve ser para “usuários” ou "funções”, mas não para ambos.

  • Os seguintes valores especiais para o atributo “users” são definidos:

    Valor Descrição
    * Todos os usuários
    ? Usuários anônimos

    Observação

    Usuários anônimos não podem ler/gravar conteúdo; essa configuração é usada para restringir os tipos de arquivo para consultas de propriedade anônimas.

  • Os seguintes valores são definidos para os tipos de acesso:

    Valor Descrição
    Nenhuma Especifica que o acesso não é permitido para o tipo de conteúdo
    Leitura Especifica o acesso de leitura para o tipo de conteúdo
    Gravar Especifica o acesso de gravação para o tipo de conteúdo
    Origem Especifica o acesso ao código-fonte do tipo de conteúdo

Adicionando uma regra de criação

Para adicionar uma regra de criação para um caminho, você pode usar a sintaxe como os exemplos a seguir:

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

Edição de uma regra de criação

Depois que uma regra de criação for adicionada, você poderá editá-la usando uma sintaxe como a seguinte:

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

Remoção de uma regra de criação

Você pode remover uma regra de criação simplesmente especificando o nome do usuário ou da função usando uma sintaxe como a seguinte:

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

Observação

Se houver mais de uma regra de criação para esse usuário, o comando acima removerá apenas a primeira regra de criação na lista e você precisará repetir o comando para remover as regras subsequentes para esse usuário.

Ou você pode especificar o nome do usuário ou da função e o tipo de conteúdo, como no exemplo a seguir:

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

Resumo

Este documento mostrou como fazer o seguinte:

Mais informações

Para obter informações adicionais sobre como usar o WebDAV, consulte os seguintes artigos:

Observação

Como mencionado anteriormente, as configurações de Filtragem de Solicitação padrão podem bloquear vários tipos de arquivo na criação do WebDAV. Se não modificar suas configurações de Filtragem de Solicitação, você poderá ver vários erros ao tentar publicar arquivos bloqueados. Por exemplo, se tentar carregar ou baixar um arquivo web.config, você verá erros no cliente WebDAV. Para obter mais informações sobre como definir suas configurações de Filtragem de Solicitações, consulte o passo a passo Como configurar o WebDAV com Filtragem de Solicitações.