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.