Artigo: 555205 - Última revisão: quinta-feira, 7 de Outubro de 2004 - Revisão: 1.0

FTP o isolamento de utilizadores utilizando o Active Directory utilizando Visual C#

Author: Bart De Smet MVP
Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
Expandir tudo | Reduzir tudo

Abstracto

O IIS 6.0 contém uma nova funcionalidade denominada o isolamento de utilizadores que impede os utilizadores de navegar para pasta raiz de outro utilizador de FTP. Sem o isolamento de utilizadores é possível a um utilizador para iniciar sessão a um local de FTP e ir para pasta de outro utilizador, utilizando o CD.. comando nas ferramentas de FTP. Apesar do utilizador não ser capaz de escrever na pasta do utilizador outros (pelo menos, quando a segurança está definida cima Direita), o utilizador poderão impedir a ler o conteúdo da pasta de outro utilizador.
 
3 MODI diferentes são suportadas:
Não isolamento, que faz com que aos utilizadores consigam atravessar a pastas de outros utilizadores.
O isolamento-baseia pastas. Neste caso, uma pasta raiz de FTP está configurada e cada utilizador possui uma subpasta dedicado, sandboxed.
O isolamento-baseado no Active Directory. Com esta opção, as definições de FTP do utilizador são armazenadas como atributos do objecto de utilizador correspondente no Active Directory. Uma parte grandes da flexibilidade é possível utilizar esta opção.
 
Este artigo foca o isolamento de utilizadores de FTP utilizando o Active Directory e parte do princípio de que tem conhecimento básico do Active Directory e se tiver configurado um domínio do Active Directory na sua empresa.

Criar o novo local de FTP com o isolamento de utilizadores do Active Directory

1. Vá para o gestor (IIS) utilizando Iniciar, Executar, inetmgr, OK.
Navegue para o computador correcto na estrutura de árvore 2..
3. Clique com o botão direito do clique na pasta Locais de FTP e clique novo, Siteà FTP
Em 4. Clique em Seguinte (Next) e forneça um nome para o novo local de FTP. Clique em ' seguinte ' novamente.
5. Especifique o endereço IP e definições para o novo local de FTP da porta. Para mais informações sobre este procedimento, consulte Para os ficheiros a ajuda do IIS. Clique em ' seguinte ' para continuar.
6. Agora escolha a opção Última: " Isolar utilizadores através do Active Directory " e clique em Seguinte (Next).
7. Fornecer as credenciais utilizador para a conta do domínio que irá ser utilizada para obter as definições do Active Directory enquanto o serviço FTP é execução para poder ler os atributos do utilizador. Como procedimento recomendado de segurança, utilização de privilégios Baixa uma conta. Da caixa de texto de domínio, forneça o nome de domínio base, não o nome de domínio totalmente qualificado. NOTA: Se a palavra-passe da conta utilizada é alterado, as definições de FTP irá necessitar de ser actualizado para reflectir as alterações. Clique em Seguinte (Next)..
8. Confirme a palavra-passe e clique em OK.
9. Configurar as permissões nas pastas FTP. Se pretender que os utilizadores para ter a possibilidade de enviar ficheiros para as respectivas pastas, tirar ambas as opções de leitura e escrita. Clique em Seguinte (Next)..
10. Clique em ' concluir ' para concluir a configuração do site de FTP.

O isolamento de utilizadores utilizando o Active Directory de FTP explicado

O isolamento de utilizadores o Active Directory baseado em é a opção recomendada para hospedar fornecedores e empresas que tenham para manter uma grande quantidade de pastas de utilizador de FTP. Basicamente, a pasta raiz do utilizador é determinada após autenticação pela consultar os atributos msIIS-FTPRoot e msIIS-FTPDir do objecto de utilizador no Active Directory. A concatenação dos valores msIIS-FTPRoot e msIIS-FTPDir resulta no caminho a pasta raiz do utilizador.
 
Um exemplo procura da seguinte forma:
    msIIS-FTPRoot = D:\FTP utilizadores
    msIIS-FTPDir = \JohnSmith
Isto irá resultar em " Users\JohnSmith D:\FTP " como a pasta raiz para o utilizador. Repare que é também possível que especificar um caminho UNC como o valor msIIS-FTPRoot para ligar a outro servidor, ex.: um servidor de ficheiros nos servidores de rede local.
 
Esta flexibilidade permite-lhe alterar a pasta de raiz do utilizador em qualquer altura sem ter de sensível ao tacto a configuração do servidor de FTP, apenas, alterando o atributo msIIS-FTPRoot no Active Directory para o utilizador em questão. Uma vez que a manipulação do Active Directory é bastante simples utilizando várias tecnologias (VBScript,.NET Framework) é possível fazer a alterar as definições para vários utilizadores de uma forma rápida. Como resultado, é relativamente simples mover as pastas FTP dos utilizadores para outra localização, apenas por actualizar o respectivo atributo msIIS-FTPRoot no Active Directory.
 
Observações:
1. As informações que são obtidas a partir do Active Directory estão a ser colocadas na cache pelo serviço FTP durante 10 minutos. É possível alterar este valor predefinido utilizando a entrada de registo DsCacheRefreshSecs. Tenha cuidado quando optar por fazê-lo uma vez que alterações de registo podem causar danos ao seu sistema.
2. Se estiver a utilizar uma implementação do Windows 2000 Server-baseado no Active Directory na sua rede, irá necessitar expandir o esquema com os atributos para o objecto do utilizador msIIS-FTPRoot e msIIS-FTPDir. Extensões de esquema não pode ser anulada, por isso, tenha cuidado quando se pretende fazê-lo e consulte o administrador do domínio para os direitos necessários.
3. O utilizador tem de ter direitos sobre a pasta especificada de forma a poder tenha acesso a ela. Se o utilizador não tiver os direitos necessários ou o caminho é inválido, o acesso será negado. Se tiver problemas com este procedimento, verifique a segurança no nível das partilhas (se estiver a utilizar um caminho UNC-para a definição msIIS-FTPRoot) e no nível do sistema de ficheiros NTFS (ACL, Access Control List).

Permitir que um utilizador para o acesso FTP pelo script

Para configurar uma pasta raiz para um utilizador utilizando script, siga o procedimento seguinte:
1. Abrir uma janela da linha de comandos.
2. Utilizar o script iisftp.vbs /SetADProp /? Para mostrar as informações de sintaxe do script iisftp.vbs.
3. Determinar a pasta raiz do utilizador e dividi-lo numa pasta de raiz e uma pasta do utilizador. Normalmente, a pasta de utilizador é apenas um aspecto semelhante \JohnSmith, enquanto a pasta raiz é o caminho para uma pasta local ou caminho de UNC, Universal Naming CONVENTION que contém as pastas dos utilizadores. Vai ser utilizando o exemplo seguinte:
    Pasta raiz: \\fileserver\ftproot
    pasta de utilizador: \JohnSmith
4. Aplicar as definições para o utilizador executando os seguintes comandos:
    o script iisftp.vbs /SetADProp \\fileserver\ftproot JoãoSilva FTPRoot
    o script iisftp.vbs /SetADProp \JohnSmith JoãoSilva FTPDir
 
IMPORTANTE: Não esquecer os \ à frente do valor FTPDir. A concatenação do valor da pasta de raiz e valor da pasta de utilizador têm de resultar num caminho válido.
 
Se tiver configurado um utilizador ao fazê-lo, verifique se lhe pode sessão à pasta do utilizador com o FTP. Para poder até pode utilizar o Ftp.exe comando da linha de comandos ou um browser ou aplicação cliente de FTP.

Permitir que um utilizador para o acesso FTP utilizando C#

É possível activar um utilizador de FTP utilizando código gerido, bem. Isto poderá ser útil quando está a escrever uma aplicação para configurar contas de utilizador e que pretende incorporar acesso FTP, bem. Se estiver a efectuar a actualização a uma série de grandes dimensões de aos utilizadores que tem uma pasta de FTP no sistema, C# poderá ser útil, bem. O código básico (numa aplicação de consola) seja da seguinte forma:
 
Com a utilização de Sistema;
Utilizar System.DirectoryServices;
Utilizar System.Reflection;
Utilizar System.Text;
 
Classe EnableFTP
{
    Pública principal void estático (args [] de cadeia)
    {
        Se args.Length (< 2)
        {
            Console.WriteLine("USAGE: {0} <user> <rootFolder> [<domain>]", Assembly.GetExecutingAssembly().GetName().Name);
            Devolver;
        }
 
        Domínio de cadeia = nulos;
        Se (args.Length == 3)
            Domínio = args [2];
        Pessoa
            Domínio = Environment.GetEnvironmentVariable("USERDNSDOMAIN");
 
        Se (domínio == nulo || domínio == String.Empty)
        {
            Console.WriteLine (" sem domínio válido encontrado. Especifique o nome de DNS domínio completo como parâmetro 3 º. ");
            Devolver;
        }
 
        Cadeia DC = GetDC(Domain);
        Cadeia LDAP = String.Format("LDAP://{0}/{1}",domain,DC);
 
        Cadeia de início de sessão = args [0];
        Cadeia rootFolder = args [1];
 
        Cadeia de consulta = ", login) String.Format("(&(samAccountName={0})(objectClass=user));
        Res SearchResult = nulos;
        Tente
        {
            Raiz DirectoryEntry = novo DirectoryEntry(LDAP);
            DirectorySearcher src = novo DirectorySearcher (raiz, consulta);
            res = SRC.FindOne();
        }
        catch (Excepção)
        {
            Console.WriteLine("Cannot Connect to Domain {0}", domain);
            Devolver;
        }
 
        Se (res! = nulo)
        {
            Cadeia usrFolder = \\ " " + de início de sessão;
            Utilizador DirectoryEntry = Res.GetDirectoryEntry();
            Value User.Properties [" msIIS-FTPRoot "] = rootFolder;
            Value User.Properties [" msIIS-FTPDir "] = usrFolder;
            USER.CommitChanges();
            Console.WriteLine("FTP Home Directory for {0}: {1}{2}", Login,rootFolder,usrFolder);
        }
        Pessoa
            Console.WriteLine (" utilizador { 0 } não encontrado. ", de início de sessão);
    }

    Cadeia de caracteres privada GetDC(String domain) estática
    {
        SB StringBuilder = novo StringBuilder(Domain);
        SB.REPLACE(".",",DC=");
        SB.INSERT(0,"DC=");
        Devolver SB.ToString();
    }
}
 
NOTA: Se tentar compilar isto no Visual Studio.NET 2003, irá necessitar adicionar uma referência à assemblagem System.DirectoryServices.dll no explorador de solução.
 
A utilização do comando é bastante simples, por exemplo: " Utilizadores D:\FTP " JoãoSilva EnableFTP.exe
 
Neste exemplo pode ser expandido se pretender permitir que todos os utilizadores de uma unidade organizacional por exemplo. Utilizando a classe DirectorySearcher é possível que obter todos os objectos de utilizador utilizando o "(objectClass=user) " consultar e por utilizando o método FindAll na instância da classe para obter os resultados. Podem encontrar mais informações sobre o Active Directory programação em C# no.NET Framework SDK (procure System.DirectoryServices).

Recursos adicionais

Internet Information Services (IIS) 6.0 Resource Kit
MSDN - System.DirectoryServices Namespace (.NET Framework Class Library)
Hosting Multiple FTP Sites with FTP User Isolation

A informação contida neste artigo aplica-se a:
  • Microsoft Internet Information Services 6.0
  • Microsoft Visual C# .NET 2003 Standard Edition
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Pedíamos-lhe o favor de preencher o formulário existente no fundo desta página caso tenha encontrado erros neste artigo e tenha possibilidade de colaborar no processo de aperfeiçoamento desta ferramenta. Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 555205  (http://support.microsoft.com/kb/555205/en-us/ )
Community Solutions ContentCOMMUNITY SOLUTIONS CONTENT DISCLAIMER
MICROSOFT CORPORATION AND/OR ITS RESPECTIVE SUPPLIERS MAKE NO REPRESENTATIONS ABOUT THE SUITABILITY, RELIABILITY, OR ACCURACY OF THE INFORMATION AND RELATED GRAPHICS CONTAINED HEREIN. ALL SUCH INFORMATION AND RELATED GRAPHICS ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT AND/OR ITS RESPECTIVE SUPPLIERS HEREBY DISCLAIM ALL WARRANTIES AND CONDITIONS WITH REGARD TO THIS INFORMATION AND RELATED GRAPHICS, INCLUDING ALL IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, WORKMANLIKE EFFORT, TITLE AND NON-INFRINGEMENT. YOU SPECIFICALLY AGREE THAT IN NO EVENT SHALL MICROSOFT AND/OR ITS SUPPLIERS BE LIABLE FOR ANY DIRECT, INDIRECT, PUNITIVE, INCIDENTAL, SPECIAL, CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF USE, DATA OR PROFITS, ARISING OUT OF OR IN ANY WAY CONNECTED WITH THE USE OF OR INABILITY TO USE THE INFORMATION AND RELATED GRAPHICS CONTAINED HEREIN, WHETHER BASED ON CONTRACT, TORT, NEGLIGENCE, STRICT LIABILITY OR OTHERWISE, EVEN IF MICROSOFT OR ANY OF ITS SUPPLIERS HAS BEEN ADVISED OF THE POSSIBILITY OF DAMAGES.