Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Visão geral
O elemento <anonymousAuthentication>
especifica as configurações de acesso anônimo. Essa forma de autenticação permite acesso a um site FTP sem uma conta de usuário no servidor ou domínio e, geralmente, é usada para sites FTP públicos.
Os usuários anônimos normalmente fazem logon usando um nome de usuário de ftp ou anonymous, e a maioria dos usuários usará seu endereço de email como senha, embora isso não seja necessário.
Compatibilidade
Versão | Observações |
---|---|
IIS 10.0 | O elemento <anonymousAuthentication> não foi modificado no IIS 10.0. |
IIS 8.5 | O elemento <anonymousAuthentication> não foi modificado no IIS 8.5. |
IIS 8.0 | O elemento <anonymousAuthentication> não foi modificado no IIS 8.0. |
IIS 7.5 | O elemento <anonymousAuthentication> do elemento <authentication> é fornecido como um recurso do IIS 7.5. |
IIS 7.0 | O elemento <anonymousAuthentication> do elemento <authentication> foi introduzido no FTP 7.0, que era um download separado para o IIS 7.0. |
IIS 6,0 | O elemento <ftpServer> e seus elementos filho substituem as configurações de FTP do IIS 6.0 que estavam localizadas no caminho de metabase LM/MSFTPSVC. |
Observação
Os serviços FTP 7.0 e FTP 7.5 eram fornecidos fora de banda para o IIS 7.0, o que exigia o download e a instalação de módulos do seguinte URL:
Com o Windows 7 e o Windows Server 2008 R2, o serviço FTP 7.5 é fornecido como um recurso para o IIS 7.5 e, portanto, o download do serviço FTP não é mais necessário.
Instalação
Para dar suporte à publicação FTP para seu servidor Web, você deve instalar o serviço FTP. Para fazer isso, execute as etapas a seguir.
Windows Server 2012 R2 ou Windows Server 2012
Na barra de tarefas, clique em Gerenciador do Servidor.
No Gerenciador do Servidor, clique no menu Gerenciar e clique em Adicionar Funções e Recursos.
No assistente Adicionar Funções e Recursos, clique em Avançar. Selecione o tipo de instalação e clique em Avançar. Selecione o servidor de destino e clique em Avançar.
Na página Funções de servidor, expanda Servidor Web (IIS) e, em seguida, selecione Servidor FTP.
Selecione Avançar e, em seguida, na página Selecionar recursos, selecione Avançar novamente.
Na página Confirmar seleções de instalação, clique em Instalar.
Na página Resultados , clique em Fechar.
Windows 8 ou Windows 8.1
Na tela Iniciar, mova o ponteiro até o canto inferior esquerdo, clique com o botão direito do mouse no botão Iniciar e clique em Painel de Controle.
Em Painel de Controle, clique em Programas e Recursos e clique em Ativar ou desativar recursos do Windows.
Expanda Serviços de Informações da Internet e selecione Servidor FTP.
Clique em OK.
Clique em Fechar.
Windows Server 2008 R2
Na barra de tarefas, clique em Iniciar, vá para Ferramentas Administrativas e clique em Gerenciador do Servidor.
No painel de hierarquia do Gerenciador do Servidor, expanda Funções e clique em Servidor Web (IIS).
No painel Servidor Web (IIS), role até a seção Serviços de Função e clique em Adicionar Serviços de Função.
Na página Selecionar Serviços de Função do Assistente para Adicionar Serviços de Função, expanda Servidor FTP.
Selecione Serviço FTP.
Clique em Avançar.
Na página Confirmar Seleções de Instalação, clique em Instalar.
Na página Resultados , clique em Fechar.
Windows 7
Na barra de tarefas, clique em Iniciar e, depois, em Painel de Controle.
Em Painel de Controle, clique em Programas e Recursos e clique em Ativar ou desativar Recursos do Windows.
Expanda Serviços de Informações da Internet e, em seguida, Servidor FTP.
Selecione Serviço FTP.
Clique em OK.
Windows Server 2008 ou Windows Vista
Baixe o pacote de instalação do seguinte URL:
Siga as instruções no seguinte passo a passo para instalar o serviço FTP:
Instruções
Como habilitar ou desabilitar a autenticação anônima para um site FTP
Abra o Gerenciador dos Serviços de Informações da Internet (IIS):
Caso você esteja usando o Windows Server 2012 ou o Windows Server 2012 R2:
- Na barra de tarefas, clique em Gerenciador do Servidor, em Ferramentas e em Gerenciador dos Serviços de Informações da Internet (IIS).
Se você estiver usando o Windows 8 ou Windows 8.1:
- Mantenha pressionada a tecla Windows, pressione a letra X e clique em Painel de Controle.
- Clique em Ferramentas Administrativas e clique duas vezes em Gerenciador dos Serviços de Informações da Internet (IIS).
Caso você esteja usando o Windows Server 2008 ou o Windows Server 2008 R2:
- Na barra de tarefas, clique em Iniciar, vá para Ferramentas Administrativas e clique em Gerenciador dos Serviços de Informações da Internet (IIS).
Se você estiver usando o Windows Vista ou Windows 7:
- Na barra de tarefas, clique em Iniciar e, depois, em Painel de Controle.
- Clique duas vezes em Ferramentas Administrativas e clique duas vezes em Gerenciador dos Serviços de Informações da Internet (IIS).
No painel Conexões, expanda o nome do servidor, expanda o nó Sites e selecione o nome do site.
No painel Página Inicial do site, clique duas vezes no recurso Autenticação FTP.
Na página Autenticação FTP, selecione Autenticação anônima.
No painel Ações, selecione Habilitar para habilitar a autenticação anônima ou selecione Desabilitar para desabilitar a autenticação anônima.
Como usar o Assistente de Site FTP para criar um site FTP com acesso de leitura anônimo
Abra o Gerenciador dos Serviços de Informações da Internet (IIS):
Caso você esteja usando o Windows Server 2012 ou o Windows Server 2012 R2:
- Na barra de tarefas, clique em Gerenciador do Servidor, em Ferramentas e em Gerenciador dos Serviços de Informações da Internet (IIS).
Se você estiver usando o Windows 8 ou Windows 8.1:
- Mantenha pressionada a tecla Windows, pressione a letra X e clique em Painel de Controle.
- Clique em Ferramentas Administrativas e clique duas vezes em Gerenciador dos Serviços de Informações da Internet (IIS).
Caso você esteja usando o Windows Server 2008 ou o Windows Server 2008 R2:
- Na barra de tarefas, clique em Iniciar, vá para Ferramentas Administrativas e clique em Gerenciador dos Serviços de Informações da Internet (IIS).
Se você estiver usando o Windows Vista ou Windows 7:
- Na barra de tarefas, clique em Iniciar e, depois, em Painel de Controle.
- Clique duas vezes em Ferramentas Administrativas e clique duas vezes em Gerenciador dos Serviços de Informações da Internet (IIS).
No painel Conexões, clique no nó Sites na árvore.
Clique com o botão direito do mouse no nó Sites na árvore e clique em Adicionar Site FTP ou clique em Adicionar Site FTP no painel Ações.
Quando o assistente Adicionar site FTP for exibido:
Insira "Meu Novo Site FTP" na caixa Nome do site FTP.
Para a caixa Caminho físico, você pode usar uma das seguintes opções para especificar seu diretório de conteúdo:
- Clique no botão de reticências (...) e navegue até a pasta que contém o conteúdo do site FTP.
- Digite o caminho para a pasta de conteúdo na caixa. Observe que, se optar por digitar o caminho, você poderá usar variáveis de ambiente nos caminhos. Por exemplo, você pode usar "%SystemDrive%\inetpub\ftproot" para o diretório de conteúdo.
Na segunda página do assistente Adicionar Site FTP:
Escolha um endereço IP para seu site FTP na lista suspensa Endereço IP ou aceite a seleção padrão de "Todos os não atribuídos".
Insira a porta TCP/IP para o site FTP na caixa Porta. Por padrão, sites e clientes FTP usam a porta 21. (Observação: para especificar FTPS implícito, você precisa usar a porta 990.)
Para usar um nome de host virtual FTP, selecione a caixa para Habilitar Nomes do Host Virtual e, em seguida, insira o nome do host virtual na caixa Host Virtual.
Para as opções de SSL, escolha uma das seguintes opções:
- Selecione Nenhuma SSL para desabilitar as opções de SSL.
- Selecione Permitir SSL para permitir que os clientes FTP usem FTP sobre SSL como opção ao se conectarem ao servidor FTP.
- Selecione Exigir SSL para permitir que os clientes FTP sempre usem FTP sobre SSL ao se conectarem ao servidor FTP.
- Se você escolher Permitir SSL ou Exigir SSL, escolha um certificado no menu suspenso Certificado SSL.
Na próxima página do assistente:
Configuração
O elemento <anonymousAuthentication>
é configurado no nível do site.
Atributos
Atributo | Descrição | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
defaultLogonDomain |
Atributo de cadeia de caracteres opcional. Especifica o domínio padrão para pesquisas de conta de usuário anônimo. O valor padrão é NT AUTHORITY . |
||||||||||
enabled |
Atributo Boolean opcional. Especifica se a autenticação anônima está habilitada. O valor padrão é false . |
||||||||||
logonMethod |
Atributo de enumeração opcional. Especifica o tipo de logon para o usuário anônimo, conforme interpretado pela API do Win32 LogonUser.
ClearText . |
||||||||||
password |
Atributo de cadeia de caracteres opcional. Especifica a senha da conta de usuário anônimo. Nenhum valor padrão. |
||||||||||
userName |
Atributo de cadeia de caracteres opcional. Especifica o nome de usuário para a conta de usuário anônimo. O valor padrão é IUSR . |
Elementos filho
Nenhum.
Exemplo de configuração
O exemplo a seguir ilustra vários conjuntos de configuração no elemento <ftpServer>
para um site FTP. Mais especificamente, as configurações <site>
neste exemplo demonstram como:
- Crie um site FTP e adicione a associação para o protocolo FTP na porta 21.
- Configure as opções de SSL do FTP para permitir acesso seguro no controle e no canal de dados usando um certificado.
- Desabilite a autenticação Anônima e habilite autenticação Básica para FTP.
- Negar acesso ao comando SYST do FTP.
- Especifique o formato de listagem do diretório UNIX.
- Configure as opções de registro em log.
- Especifique uma mensagem de boas-vindas personalizada e habilite mensagens de erro detalhadas locais.
- Especifique que os usuários iniciarão em um diretório base que se baseie em seu nome de logon, mas somente se esse diretório existir.
<site name="ftp.example.com" id="5">
<application path="/">
<virtualDirectory path="/" physicalPath="c:\inetpub\www.example.com" />
</application>
<bindings>
<binding protocol="ftp" bindingInformation="*:21:" />
</bindings>
<ftpServer>
<security>
<ssl controlChannelPolicy="SslAllow"
dataChannelPolicy="SslAllow"
serverCertHash="57686f6120447564652c2049495320526f636b73" />
<authentication>
<basicAuthentication enabled="true" />
<anonymousAuthentication enabled="false" />
</authentication>
<commandFiltering maxCommandLine="4096" allowUnlisted="true">
<add command="SYST" allowed="false" />
</commandFiltering>
</security>
<directoryBrowse showFlags="StyleUnix" />
<logFile logExtFileFlags="Date, Time, ClientIP, UserName, ServerIP, Method, UriStem, FtpStatus, Win32Status, ServerPort, FtpSubStatus, Session, FullPath, Info" />
<messages expandVariables="true"
greetingMessage="Welcome %UserName%!"
allowLocalDetailedErrors="true" />
<userIsolation mode="StartInUsersDirectory" />
</ftpServer>
</site>
Exemplo de código
Os exemplos a seguir habilitam a autenticação anônima para um site FTP com o atributo password
definido como "PW" e o atributo userName
definido como "AUSR".
AppCmd.exe
appcmd.exe set config -section:system.applicationHost/sites /[name='ftp.example.com'].ftpServer.security.authentication.anonymousAuthentication.enabled:"TRUE" /commit:apphost
appcmd.exe set config -section:system.applicationHost/sites /[name='ftp.example.com'].ftpServer.security.authentication.anonymousAuthentication.password:"PW" /commit:apphost
appcmd.exe set config -section:system.applicationHost/sites /[name='ftp.example.com'].ftpServer.security.authentication.anonymousAuthentication.userName:"AUSR" /commit:apphost
Observação
Defina o parâmetro commit para apphost
quando usar AppCmd.exe para definir essas configurações. Isso confirma as definições de configuração para a seção de local apropriado no arquivo ApplicationHost.config.
C#
using System;
using System.Text;
using Microsoft.Web.Administration;
internal static class Sample
{
private static void Main()
{
using (ServerManager serverManager = new ServerManager())
{
Configuration config = serverManager.GetApplicationHostConfiguration();
ConfigurationSection sitesSection = config.GetSection("system.applicationHost/sites");
ConfigurationElementCollection sitesCollection = sitesSection.GetCollection();
ConfigurationElement siteElement = FindElement(sitesCollection, "site", "name", @"ftp.example.com");
if (siteElement == null) throw new InvalidOperationException("Element not found!");
ConfigurationElement ftpServerElement = siteElement.GetChildElement("ftpServer");
ConfigurationElement securityElement = ftpServerElement.GetChildElement("security");
ConfigurationElement authenticationElement = securityElement.GetChildElement("authentication");
ConfigurationElement anonymousAuthenticationElement = authenticationElement.GetChildElement("anonymousAuthentication");
anonymousAuthenticationElement["enabled"] = true;
anonymousAuthenticationElement["password"] = "PW";
anonymousAuthenticationElement["userName"] = "AUSR";
serverManager.CommitChanges();
}
}
private static ConfigurationElement FindElement(ConfigurationElementCollection collection, string elementTagName, params string[] keyValues)
{
foreach (ConfigurationElement element in collection)
{
if (String.Equals(element.ElementTagName, elementTagName, StringComparison.OrdinalIgnoreCase))
{
bool matches = true;
for (int i = 0; i < keyValues.Length; i += 2)
{
object o = element.GetAttributeValue(keyValues[i]);
string value = null;
if (o != null)
{
value = o.ToString();
}
if (!String.Equals(value, keyValues[i + 1], StringComparison.OrdinalIgnoreCase))
{
matches = false;
break;
}
}
if (matches)
{
return element;
}
}
}
return null;
}
}
VB.NET
Imports System
Imports System.Text
Imports Microsoft.Web.Administration
Module Sample
Sub Main()
Dim serverManager As ServerManager = New ServerManager
Dim config As Configuration = serverManager.GetApplicationHostConfiguration
Dim sitesSection As ConfigurationSection = config.GetSection("system.applicationHost/sites")
Dim sitesCollection As ConfigurationElementCollection = sitesSection.GetCollection
Dim siteElement As ConfigurationElement = FindElement(sitesCollection, "site", "name", "ftp.example.com")
If (siteElement Is Nothing) Then
Throw New InvalidOperationException("Element not found!")
End If
Dim ftpServerElement As ConfigurationElement = siteElement.GetChildElement("ftpServer")
Dim securityElement As ConfigurationElement = ftpServerElement.GetChildElement("security")
Dim authenticationElement As ConfigurationElement = securityElement.GetChildElement("authentication")
Dim anonymousAuthenticationElement As ConfigurationElement = authenticationElement.GetChildElement("anonymousAuthentication")
anonymousAuthenticationElement("enabled") = True
anonymousAuthenticationElement("password") = "PW"
anonymousAuthenticationElement("userName") = "AUSR"
serverManager.CommitChanges()
End Sub
Private Function FindElement(ByVal collection As ConfigurationElementCollection, ByVal elementTagName As String, ByVal ParamArray keyValues() As String) As ConfigurationElement
For Each element As ConfigurationElement In collection
If String.Equals(element.ElementTagName, elementTagName, StringComparison.OrdinalIgnoreCase) Then
Dim matches As Boolean = True
Dim i As Integer
For i = 0 To keyValues.Length - 1 Step 2
Dim o As Object = element.GetAttributeValue(keyValues(i))
Dim value As String = Nothing
If (Not (o) Is Nothing) Then
value = o.ToString
End If
If Not String.Equals(value, keyValues((i + 1)), StringComparison.OrdinalIgnoreCase) Then
matches = False
Exit For
End If
Next
If matches Then
Return element
End If
End If
Next
Return Nothing
End Function
End Module
JavaScript
var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var sitesSection = adminManager.GetAdminSection("system.applicationHost/sites", "MACHINE/WEBROOT/APPHOST");
var sitesCollection = sitesSection.Collection;
var siteElementPos = FindElement(sitesCollection, "site", ["name", "ftp.example.com"]);
if (siteElementPos == -1) throw "Element not found!";
var siteElement = sitesCollection.Item(siteElementPos);
var ftpServerElement = siteElement.ChildElements.Item("ftpServer");
var securityElement = ftpServerElement.ChildElements.Item("security");
var authenticationElement = securityElement.ChildElements.Item("authentication");
var anonymousAuthenticationElement = authenticationElement.ChildElements.Item("anonymousAuthentication");
anonymousAuthenticationElement.Properties.Item("enabled").Value = true;
anonymousAuthenticationElement.Properties.Item("password").Value = "PW";
anonymousAuthenticationElement.Properties.Item("userName").Value = "AUSR";
adminManager.CommitChanges();
function FindElement(collection, elementTagName, valuesToMatch) {
for (var i = 0; i < collection.Count; i++) {
var element = collection.Item(i);
if (element.Name == elementTagName) {
var matches = true;
for (var iVal = 0; iVal < valuesToMatch.length; iVal += 2) {
var property = element.GetPropertyByName(valuesToMatch[iVal]);
var value = property.Value;
if (value != null) {
value = value.toString();
}
if (value != valuesToMatch[iVal + 1]) {
matches = false;
break;
}
}
if (matches) {
return i;
}
}
}
return -1;
}
VBScript
Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set sitesSection = adminManager.GetAdminSection("system.applicationHost/sites", "MACHINE/WEBROOT/APPHOST")
Set sitesCollection = sitesSection.Collection
siteElementPos = FindElement(sitesCollection, "site", Array("name", "ftp.example.com"))
If siteElementPos = -1 Then
WScript.Echo "Element not found!"
WScript.Quit
End If
Set siteElement = sitesCollection.Item(siteElementPos)
Set ftpServerElement = siteElement.ChildElements.Item("ftpServer")
Set securityElement = ftpServerElement.ChildElements.Item("security")
Set authenticationElement = securityElement.ChildElements.Item("authentication")
Set anonymousAuthenticationElement = authenticationElement.ChildElements.Item("anonymousAuthentication")
anonymousAuthenticationElement.Properties.Item("enabled").Value = True
anonymousAuthenticationElement.Properties.Item("password").Value = "PW"
anonymousAuthenticationElement.Properties.Item("userName").Value = "AUSR"
adminManager.CommitChanges()
Function FindElement(collection, elementTagName, valuesToMatch)
For i = 0 To CInt(collection.Count) - 1
Set element = collection.Item(i)
If element.Name = elementTagName Then
matches = True
For iVal = 0 To UBound(valuesToMatch) Step 2
Set property = element.GetPropertyByName(valuesToMatch(iVal))
value = property.Value
If Not IsNull(value) Then
value = CStr(value)
End If
If Not value = CStr(valuesToMatch(iVal + 1)) Then
matches = False
Exit For
End If
Next
If matches Then
Exit For
End If
End If
Next
If matches Then
FindElement = i
Else
FindElement = -1
End If
End Function