Irei explicar o funcionamento e configurações do Distributed File System (DFS) e do ABE (Access-Based Enumeration) separadamente e as vantagens de realizar a integração entre ambos.
Distributed File System – Namespace
Vamos imaginar o seguinte Cenário:
Você é o administrador de rede responsável pela administração dos diretórios compartilhados (Shares) disponibilizados para os usuários em sua rede. Cada usuário possui direito de acesso a vários diretórios compartilhados. Abaixo citarei como exemplo uma estrutura normalmente utilizada para criação e administração de diretórios compartilhados.
Estrutura de diretórios Compartilhados
- Diretório de acesso exclusivo do usuário(Home Directory)
- Diretório de acesso á todos os usuários de seu Departamento(Departamental)
- Diretório de acesso á todos os usuários da empresa(Publico)
- Diretório para compartilhamento de arquivos referentes a um certo assunto ou projeto(Específico)
Quando o usuário executa um novo logon na rede cada diretório que ele possui direito de acesso é mapeado com uma letra atribuindo-se um nova unidade de rede. Este mapeamento pode ser realizado manualmente ou por um Script de logon.(Irei explorar mais o tema de Script de Logon em um próximo artigo).
Desta maneira é criada a seguinte estrutura de mapeamento para cada usuário.
Problemas encontrados neste Cenário
O cenário descrito acima funciona bem em pequenas redes, com poucos diretórios compartilhados, disponibilizados em um ou mais servidores. Em grandes redes onde o número de diretórios compartilhados é grande, o uso de uma unidade de rede para acessar cada pasta compartilhada pode tornar-se de difícil implementação ou ate mesmo impossível, quando existirem mais diretórios compartilhados do que o numero de letras disponíveis no nosso alfabeto.
Em grandes ou pequenas redes a solução de utilizar uma unidade de rede para cada diretório compartilhado não é a melhor solução, pois é extremamente difícil administrar de acordo com a visão do administrador de rede e difícil de utilizar de acordo com a visão do usuário.
Cenário Proposto com o uso do Recurso DFS Namespace
Inicialmente vamos entender o que é o DFS Namespace:
- O DFS Namespaces é uma das funções do DFS que permite que sejam agrupados os diretórios compartilhados localizados em diferentes servidores, possibilitando que estes sejam apresentados como um árvore virtual de diretórios.
- Os usuários podem navegar por esses namespaces virtuais sem a necessidade de um controle sobre os nomes dos servidores físicos ou diretórios compartilhados que armazenam os dados.
- Em uma rede que possui configurado o acesso a diretórios compartilhados através do DFS Namespace, podemos reduzir as unidades de rede mapeadas (do exemplo acima) de 4 ou mais para somente uma.
- Abaixo irei descrever os passos necessários para a instalação e configuração do DFS Namespace.
1 – Instalação
O DFS é um serviço nativo do Windows 2003 Server, para acessa-lo basta clicar no menu Start/Programs/Administrative Tools/Distributed File System.
2 – Configuração
Clique com o botão direito do mouse na opção Distributed File System e selecione New Root
Na tela de Boas-Vindas, clique no botão Next. Seram exibidos duas opções:
- Domain Root – Utilizado para replicação dos diretórios da sua árvore virtual DFS e integração com o Active Directory.
- Stand-Alone Root – Utilizado para criar uma árvore virtual de diretórios.
Como no nosso caso somente iremos criar a árvore virtual de diretórios (não abordarei replicação neste artigo) vamos selecionar a opção Stand-Alone
Escolha o nome do servidor que você irá utilizar para criação da sua árvore virtual de diretórios.
Preencha o campo Root Name com o nome da sua árvore virtual DFS. Através do Root Name é que os usuários irão acessar os seus arquivos, de acordo com o endereço de rede formado pelos valores \\ServerName\RootName\. Se desejar pode preencher o campo Comments, porém não é obrigatório.
Clique no botão Browser e selecione um diretório para hospedar a estrutura da sua árvore de diretórios virtuais DFS. Iremos utilizar um diretório chamado Arquivos (C:\Arquivos). Este diretório será de extrema importância para a integração com ABE.
A configuração do DFS namespaces está completa.
Antes de prosseguir vamos criar uma estrutura de diretórios para configurarmos os diretórios Virtuais DFS.
- Crie um diretório chamado Users em C:\.
- Crie um subdiretório dentro do diretório Users (C:\Users) chamado Financeiro.
- Por ultimo compartilhe o subdiretório financeiro (C:\Users\Financeiro) como Financeiro.
Teste o acesso ao diretório Financeiro (\\NomedoServidor\Financeiro).
Agora iremos criar um diretório Virtual DFS para o nosso Diretório Financeiro.
Clique com botão direito do mouse no Root DFS que foi criado (no nosso exemplo Arquivos) e selecione a opção New Link
No campo Link Name você deve preencher com o nome do diretório virtual que você deseja que os usuários visualizem quando forem acessar a sua árvore Virtual de diretórios DFS.
Notem que o nosso diretório se chama Financeiro e iremos preencher o campo Link name com Departamento Financeiro.
o campo Path to Target(Shared Folder) você deve preencher com o caminho UNC para o diretório que você deseja publicar na árvore de diretórios Virtuais DFS, por isso que compartilhamos o nosso diretório financeiro (\\NomedoServidor\Financeiro).
Caso deseje, você pode preencher o campo Comments com informações adicionais, porém não é um campo obrigatório.
A criação de um diretório virtual DFS está completa.
Até este ponto foi fácil, certo? Agora iremos entender o funcionamento e configuração do Access Based Enumeration (ABE)
Access Based Enumeration – ABE
O que é o ABE ?
Para aqueles que já trabalharam com Novell, lembram-se muito bem que os usuário somente visualizavam os diretórios que eles tinham permissão de acesso dentro de um diretório compartilhado.Os demais arquivos ficavam ocultos.
Até pouco tempo atrás este tipo de configuração era impossível em um ambiente de rede Microsoft, os usuários mesmo sem ter acesso aos diretórios podiam visualiza-los e se tentassem abri-los simplesmente recebiam a mensagem de Acesso Negado.
Bem, eu disse até pouco tempo atrás, por que é exatamente isso que o ABE faz, impede que os usuário visualizem os diretórios que não possuem permissão. Aposto que muitos estão se perguntado como isso é possível, certo?
Bem deixe-me explicar: quando você acessa um diretório compartilhado em um servidor, é como se você solicitasse ao Servidor Windows Por favor enumere os arquivos contidos neste diretório. Enquanto você fica distraido com aquela lanterninha no rodapé da página, o Windows esta executando a enumeração de todos os arquivos contidos naquele diretório compartilhado. (Lembraram do comando DIR do MS-DOS ?)
Como resposta o Servidor Windows depois de alguns segundos permite á você visualizar todos os arquivos contidos no diretório compartilhado.
O ABE modifica o método que o serviço de enumeração trabalha, alterando a resposta do Servidor Windows para:
Irei enumerar somente os arquivos que você possui permissão de acesso.
As permissões de acesso devem ser no minimo uma das quatro abaixo:
- List Folder/Read Data
- Read Attributes
- Read Extended Attributes
- Read Permissions
Instalação do ABE
O ABE somente funciona com os Sistemas Operacionais Windows 2003 SP1 (ou superior) e Windows 2003 R2.
Após efetuar o download clique duas vezes no arquivo ABEUI.MSI e instale normalmente.
Configuração do ABE
O ABE somente pode ser habilitado em diretórios compartilhados. Vamos utilizar o diretório Compartilhado que criamos anteriormente com o nome de financeiro (C:\Users\Financeiro). Configure as permissões de acesso do compartilhamento como AUTHENTICATED USERS, FULL CONTROL. Não se esqueça de remover as permissões de acesso do usuário EVERYONE.
Você poderá notar o surgimento de uma nova aba de configuração de nome Access-Based Enumeration. Selecione esta aba de configuração e selecione a opção Enable Access-Based Enumeration on this shared folder.
A partir deste momento gostaria de convida-los a utilizar somente a linha de comando.
Digo isto, pois iremos utilizar algumas ferramentas para criar scripts e facilitar a implantação e administração não só do ABE como também do DFS Namespaces.
Vamos criar dois usuário para realizarmos os testes de funcionamento do ABE.
Abra uma janela do MS-DOS e digite os seguintes comandos:
net user Jose jose123 /add
net user Carolina Carolina123 /add
Agora vamos criar dois subdiretórios dentro do diretório Financeiro (C:\Users\Financeiro).
md c:\Users\Financeiro\Jose
md c:\Users\Financeiro\Carolina
Após criar os diretório iremos conceder as permissões de acesso NTFS. Para isto usaremos uma ferramenta chamada Xcacls. (download do Xcacls)
Salve o arquivo Xcacls.exe dentro do diretório C:\Windows\System32\. Agora vamos configurar as permissões de acesso NTFS dos diretórios Jose e Carolina utilizando o Xcacls.
echo y xcacls c:\users\Financeiro\Jose /g administrators:f Jose:f
echo y xcacls c:\users\Financeiro\Carolina /g administrators:f Carolina:f
Lembre-se que são estas as permissões que o serviço de enumeração irá analisar quando estiver enumerando o conteudo do diretório compartilhado Financeiro. De acordo com as configurações que realizamos nas permissões de acesso NTFS dos diretórios Jose e Carolina, a tabela de visualização deste diretórios ficaria da seguinte maneira.
Diretórios | Usuarios que podem visualizar | Usuarios que não podem visualizar |
Jose | Administrators e Jose | Carolina |
Carolina | Administrators e Carolina | Jose |
Vamos verificar se o ABE esta funcionando corretamente, utilizando a ferramenta RunAs.
runas /noprofile /user:jose cmd /k color 1f
Você deve preencher com a senha do usuário Jose que criamos anteriormente (Jose123). Após isto vamos solicitar ao servidor windows que enumere os arquivos contidos no diretório compartilhado financeiro.
dir \\nomedoservidor\financeiro
Se tudo estiver funcionando corretamente o único diretório enumerado para o usuário Jose deve ser o diretório Jose, ficando oculto o diretório Carolina. Caso você utilize a conta de administrator poderá visualizar os dois diretórios.
Integração entre Distributed File System (DFS) e Access-Based Enumeration (ABE)
Agora que já compreendemos o funcionamento e as configurações do DFS e do ABE chegou o momento de integrá-los. Esta integração é importante, pois de outra forma, quando o usuário for acessar a sua árvore de diretórios virtuais DFS irá visualizar todos os diretórios contidos na mesma, inclusive os diretórios que ele não possui permissão de acesso.
Agora iremos criar toda a estrutura de diretório, diretórios virtuais,compartilhamentos, conceder permissões e utilizar o ABE através da linha de comando. Vamos lá…
01 – Vamos criar dois novos subdiretórios dentro do diretório Users (c:\Users). Um diretório terá o nome de Logística e o outro diretório receberá o nome de Almoxarifado.
md c:\users\Logística
md c:\users\Almoxarifado
02 – Agora Vamos compartilhar estes dois diretórios:
net share Logísticac:\Users\Logística /grant:authenticated users,full
/remark:Logística share
net share Almoxarifadoc:\Users\Almoxarifado /grant:authenticated users,full
/remark:Almoxarifado share
03 – Agora vamos editar as permissões de acesso NTFS com a ferramenta Xcacls e utilizando os usuários Jose e Carolina
echo y xcacls c:\users\Logistica /g administrators:f Jose:f
echo y xcacls c:\users\Almoxarifado /g administrators:f Carolina:f
04 – Agora vamos habilitar o ABE nos diretórios compartilhados Almoxarifado e Logistica
abecmd /enable Almoxarifado
abecmd /enable Logistica
05 – Agora vamos adicionar os recém criados e configurados diretórios Almoxarifado e Logistica a árvore de diretórios virtuais DFS chamada Arquivos (\\NomedoServidor\Arquivos) que criamos anteriormente.
dfscmd /map \\NomedoServidor\Arquivos\Departamento Logística \\NomedoServidor\Logística
dfscmd /map \\NomedoServidor\Arquivos\Departamento Almoxarifado \\NomedoServidor\Almoxarifado
Note que primeiro criamos um diretório virtual dentro do diretório Arquivos(Onde esta hospedado o DFS-Namespaces que criamos anteriormente) e depois vinculamos a um diretório compartilhado.
06 – Agora iremos habilitar o ABE no diretório Arquivos que hospeda a árvore de diretórios virtuais DFS.
abecmd /enable Arquivos
07 – Agora um dos passos mais importantes, iremos editar as permissões dos diretórios virtuais que estão dentro do diretório Arquivos(C:\Arquivos).
echo y xcacls c:\Arquivos\Departamento Logística /g administrators:f Jose:f
echo y xcacls c:\Arquivos\Departamento Almoxarifado /g administrators:f Carolina:f
Pronto!
Quando o usuário Jose acessar a nossa árvore de diretórios virtuais DFS (\\NomedoServidor\Arquivos) irá visualizar o diretório virtual Departamento Logística e o diretório virtual que criamos anteriormente Departamento Financeiro.
Você pode realizar um teste através da sessão RunAs do usuário Jose que utilizamos anteriormente.
dir \\NomedoServidor\Arquivos
Considerações Gerais:
Acima demonstramos como é possível personalizar a exibição de uma árvore virtual de diretórios DFS mediante as permissões de acesso de cada usuário.
Para administradores mais experientes na utilização de linhas de comandos e criação de scripts gostaria de recomendar o estudo das ferramentas e métodos abaixo. Com eles é possível a automatização dos processos demonstrados acima, ajudando assim na administração da sua árvore de diretórios virtuais.
- MS-DOS:
- Sleep.exe
- RMTShare.exe
- Xcacls.exe
- Vbscript WMI (Windows Management Instrumentation):
- Método GetObject
- Método Win32_Process
Um grande abraço e ate a próxima.