A não ser que você tenha começado a trabalhar com computadores há pouco tempo, é praticamente impossível que você não tenha nunca nem ouvido falar do Samba. Este é um projeto iniciado em 1992 por Andrew Tridgell e hoje em dia desenvolvido por vários outros programadores em conjunto. Ele permite a você criar comopartilhamentos de rede, compartilhar impressoras, criar controladores de domínio, etc. permitindo que máquinas rodando Windows e Linux convivam no mesmo ambiente sem dores de cabeça.
O Samba é uma implementação livre do protocolo SMB/CIFS, que permite que máquinas rodando o sistema operacional Windows criem compartilhamentos de rede para que várias máquinas possam acessar arquivos e impressoras mais facilmente, além de permitir um controle mais integrado de contas de usuários e permissões. Com ele, um domínio pode ser criado e servidores e estações de trabalho com Windows podem ser integradas à rede.
Como backend para seu funcionamento, o Samba tem algumas opções: smbpasswd (o padrão e o mais simples, que não deve ser usado quando se tem vários controladores de domínio na rede) e o OpenLDAP (fazendo com que ele fique ainda mais semelhante ao Active Directory da Microsoft). Hoje, vamos ver como configurar o Ubuntu 11.10 para atuar como um controlador de domínio (DC – Domain Controller), permitindo que usuários se autentiquem e que estações e servidores ingressem no domínio. Assim você pode ter uma rede com domínio sem gastar muito com software. Embora tudo isso tenha sido feito no Ubuntu, você consegue adaptar sem problemas para qualquer distribuição atual.
Neste post vou ensinar um ambiente bem simples que não vai usar o OpenLDAP como backend para o Samba. Este fica para um próximo post! :)
Não vou entrar em detalhes sobre a instalação do Ubuntu, já que esta é bem simples. Apenas recomendo à você que pense muito bem no esquema de particionamento que você vai usar no servidor para que não se arrependa mais tarde quando seu servidor passar a ser mais requisitado e começar a precisar de mais espaço. Recomendo que você use LVM (que é o padrão do Ubuntu) e que deixe um espaço considerável para a criação dos compartilhamentos e armazenamento dos arquivos dos usuários. Aqui vou considerar que o Ubuntu já está instalado e com a rede funcionando corretamente.
Instalar o Samba é bem simples:
$ sudo apt-get install samba libpam-smbpass
Depois que tudo for instalado, atualize o sistema e aplique os patches de segurança:
$ sudo apt-get update
$ sudo apt-get upgrade
Quando ele terminar, o Samba já vai estar instalado. Todos os arquivos de configuração dele ficam em /etc/samba. O principal arquivo de configuração é o /etc/samba/smb.conf – é nele onde toda a configuração à seguir será feita.
Logo que você abrir o arquivo, vai ver que ele é bem documentado e está cheio de explicações sobre cada uma das opções suportadas pelo sistema. Esse tipo de arquivo é bastante valioso se, no futuro, você desejar tirar alguma dúvida rápida sobre a configuração do sistema ou mesmo fazer com que o serviço volte a ser executado com as configurações padrão. Por isso, recomendo que você faça uma cópia desse arquivo e configure todo o novo sistema em um novo arquivo, criado à mão.
$ sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.original
Isso vai renomear o arquivo de configuração principal do Samba para smb.conf.original, deixando bem claro que não é ele que está sendo utilizado pelo serviço. Depois, vamos criar o nosso arquivo de configuração:
$ sudo vim /etc/samba/smb.conf
A primeira coisa à fazer é definir o nome do domínio através da opção “workgroup”. Vamos configurar aqui para “TESTE”:
workgroup = TESTE
Pronto. Agora, vamos modificar a opção “security”. Esta opção é muito importante no Samba pois ela vai informar ao cliente como se autenticar. Se esta opção não for configurada corretamente, nada controlado pelo Samba vai funcionar muito bem.
Security pode ser configurada como share ou user:
Para facilitar as coisas, vamos definir “security” assim:
security = user
Agora vamos definir alguns parâmetros que irão dizer como o domínio irá funcionar. O primeiro deles é o “domain logons”. Esta opção faz com que o Samba ofereça o serviço de autenticação através da rede, efetivamente transformando-o em um DC. Configure-a assim:
domain logons = yes
A próxima opção é “logon path”, que configura o diretório no servidor onde todos os profiles dos usuários do domínio serão armazenados:
logon path = \\%N\%U\profile
%N e %U são dois marcadores especiais que serão substituídos pelo diretório do servidor WINS e pelo nome de usuário fornecido pelo cliente. Agora, vamos definir o “logon drive” que define a letra de drive que a estação cliente vai usar para mapear o diretório home do usuário, que está armazenado no servidor. Tenha certeza de que a letra que você escolher aqui estará disponível em todos os clientes da rede:
logon drive = H:
A opção “logon home” define qual será o diretório definido como o “home” do cliente. Uma boa opção é:
logon home = \\%N\%U
Você já deve ter visto que, em alguns casos, quando um usuário loga em um domínio um script é automaticamente executado no sistema mapeando unidades, executando programas, instalando impressoras, etc. No Samba este script é definido através da opção “logon script”:
logon script = script-de-logon.cmd
Claro que este script não vai ser criado pelo Samba. Depois que você terminar a configuração do servidor, analise o que será necessário executar automaticamente no cliente sempre que ele se logar e crie um script de acordo. O script deve ser colocado dentro do compartilhamento “netlogon”, que nós criaremos mais adiante. Obviamente, neste script você deve usar comandos DO WINDOWS, nunca comandos que funcionariam no SAMBA (a não ser claro que todos os seus clientes sejam Linux. Aí a história muda!). Você pode definir um script diferente para cada máquina ou usuário da sua rede.
Para que uma máquina possa ser adicionada ao domínio, uma conta deve ser criada no servidor antes que o cliente tente se registrar. O comando utilizado para isso é definido na opção “add machine script”. Para o Linux, na verdade isso é apenas mais uma conta de usuário criada com o comando useradd:
add machine script = sudo /usr/sbin/useradd -N -g maquinas -c Maquina -d /var/lib/samba -s /bin/false %u
Sempre que você for adicionar uma conta para uma máquina, não se esqueça de usar o “$” no final do nome. Por exemplo, cliente1$. Se você não criar uma conta para a sua máquina antes de tentar registrá-la no domínio vai ficar tendo erros e nunca vai conseguir registrá-la. Recomendo que, assim que terminar de configurar o servidor, já adicione contas para todas as máquinas do seu domínio. Veremos como fazer isso mais adiante.
Até aqui tudo o que fizemos foi configurar o serviço para fazer com que ele rode como um controlador de domínio. Nesta seção nós vamos criar os compartilhamentos necessários para que a sua rede funcione corretamente.
Primeiro, vamos fazer com que o servidor compartilhe todos os diretórios home (que serão mapeados no drive H:, conforme configuração anterior). Para isso, crie uma seção no final do smb.conf como a seguinte:
[homes]
comment = Diretorio home do usuario.
browseable = no
read only = no
create mask = 0700
directory mask = 0700
valid users = %S
Explicando as opções:
Pronto, agora os usuários já podem mapear o diretório pessoal deles no H:. Vamos agora definir outro compartilhamento importante para o bom funcionamento do domínio: o netlogon. A estrutura dele não muda muito da que usamos para o “homes”:
[netlogon]
comment = Network Logon Service
path = /srv/samba/netlogon
guest ok = yes
read only = yes
share modes = no
As opções diferentes são:
Ok, estes são os dois únicos diretórios *obrigatórios* em qualquer sistema. Se você quiser, pode definir quantos quiser para que sejam utilizados pelos usuários para armazenar arquivos, compartilhar dados, fazer backups, etc. Seja lá qual for a necessidade. Para definir estes diretórios você tem várias opções como invalid users (usuários que não poderão acessar os compartilhamentos), valid users (usuários que poderão acessar) e as outras que vimos nesta seção quando criamos os outros compartilhamentos. Além destas, você obviamente tem muito mais opções para melhorar ainda mais o seu servidor, basta dar uma pesquisada.
No compartilhamento netlogon que nós criamos, nós definimos o diretório /srv/samba/netlogon. Porém este diretório não existe por padrão e você vai precisar criá-lo:
$ sudo mkdir -p /srv/samba/netlogon
Pronto. Depois não se esqueça de criar o script de login dos usuários dentro deste diretório e com o nome que você configurou nos passos anteriores.
Depois, vamos reiniciar o Samba:
$ sudo restart smbd
$ sudo restart nmbd
Pronto, agora o Samba já está no ar com as nossas configurações. Vamos agora mapear os grupos e configurar todas as contas necessárias.
Para que você seja capaz de adicionar uma estação de trabalho no domínio, você precisa que qualquer grupo que exista no servidor seja mapeado para o grupo Domain Admins, padrão do Windows. Como o nome implica, neste grupo ficarão os usuários administradores de todo o domínio. Primeiro, vamos criar o grupo administradores:
$ sudo groupadd administradores
Agora, vamos mapear o grupo Windows Domain Admins para o grupo Unix administradores que acabamos de criar:
$ sudo net groupmap add ntgroup=”Domain Admins” unixgroup=administradores rid=512 type=d
Successfully added group Domain Admins to the mapping db as a domain group
Ok, não se esqueça de que o usuário que você for utilizar para adicionar as máquinas ao domínio deve pertencer ao grupo “administradores”. Para fazer isso com um usuário já existente:
$ sudo usermod -a -G administradores usuario
Para conferir se o usuário agora faz parte do grupo necessário, use o comando id:
$ sudo id nome-do-usuario
uid=1000(pedro) gid=1000(pedro) groups=1000(pedro),4(adm),20(dialout),24(cdrom),46(plugdev),110(lpadmin),111(sambashare),112(admin),1001(administradores)
O grupo administradores deve aparecer em alguma parte do output deste comando. Se não apareceu, aconteceu algum problema. Reveja o comando que você digitou e tente novamente. Depois disso, você precisa adicionar este usuário ao Samba já, para que o próximo passo funcione corretamente:
$ sudo smbpasswd -a nome-do-usuario
New SMB password:
Retype new SMB password:
Agora nós precisamos dar permissões ao grupo Domain Admins para que ele, entre outras opções, possa executar o script definido na opção “add machine script” no smb.conf. Para isso:
$ sudo net rpc rights grant -U usuario-do-grupo-administradores “TESTE\Domain Admins” SeMachineAccountPrivilege SePrintOperatorPrivilege SeAddUsersPrivilege SeDiskOperatorPrivilege SeRemoteShutdownPrivilege
Enter pedro’s password:
Successfully granted rights.
A senha que ele pede é a senha do Samba, não do sistema (isso se você definiu as senhas diferentes). Se tudo deu certo, agora você pode usar o seu usuário para adicionar hosts ao domínio. Aqui o procedimento não muda em nada do que você precisaria fazer para adicionar um host à um domínio Windows.
Bom, tudo pronto. Você já criou o smb.conf conforme o seu ambiente, já definiu todos os compartilhamentos e reiniciou o serviço para todas as mudanças terem efeito. Agora vamos adicionar as contas para que você consiga logar sem problemas.
Como eu disse, primeiro você precisa criar as contas para todas as máquinas da sua rede, se não nenhum usuário vai conseguir logar corretamente. Para isso:
$ sudo useradd -g maquinas -d /dev/null -s /bin/false cliente1$
$ sudo passwd -l cliente1$
passwd: password expiry information changed.
O comando acima vai adicionar esta conta ao grupo “maquinas”, definir o diretório home como /dev/null (-d /dev/null) e definir o shell como /bin/false (ou seja, sem um shell válido). Note também que, como dito anteriormente, o nome da máquina tem um “$” no final. O comando “passwd” no exemplo acima vai desabilitar a senha para esta máquina de uma maneira que hash nenhum irá colidir com o desta máquina (o que nos dá uma segurança a mais). Para o Linux, é apenas mais uma conta de usuário. Para o Samba isso vai representar uma máquina autorizada a ingressar no domínio que acabamos de criar.
Ok, a conta foi criada no sistema. Agora vamos adicioná-la ao Samba para ela ingressar no domínio:
$ sudo smbpasswd -a -m cliente1$
O smbpasswd é a principal ferramenta para gerenciar usuários e máquinas no Samba. O comando acima vai adicionar (-a) uma máquina (-m) chamada cliente1$ ao banco de dados do Samba e informá-lo que ele deve permitir que esta máquina ingresse no domínio quando ela requisitar. Simples, não? :)
Ok, adicionei todas as máquinas do domínio. Mas e os usuários?
É tão fácil quanto! Você precisa criar a conta do usuário no Linux (usando o useradd) e depois adicioná-la ao Samba com o smbpasswd:
$ sudo useradd -g domainusers -m usuario1 -s /bin/false
$ passwd -l usuario1
passwd: password expiry information changed.
$ sudo smbpasswd -a usuario1
New SMB password:
Retype new SMB password:
Added user usuario1.
Pronto, usuário adicionado tanto no Linux quanto no Samba. Note que, na conta do sistema, eu não defino um shell válido para a conta e também bloqueio a senha deste usuário. As únicas credenciais que serão usadas serão as definidas no Samba. Além disso, dificilmente este usuário deverá ter permissão para logar no controlador de domínio. Portanto ele não vai precisar de um shell válido.
A parte chata é que você vai precisar fazer isso para todos os usuários da sua rede.
Só para você não se perder no meio do texto, o arquivo smb.conf no fim das contas vai ficar assim:
workgroup = TESTE
security = user
domain logons = yes
logon path = \\%N\%U\profile
logon drive = H:
logon home = \\%N\%U
logon script = script-de-logon.cmd
add machine script = sudo /usr/sbin/useradd -N -g maquinas -c Maquina -d /var/lib/samba -s /bin/false %u
[homes]
comment = Diretorio home do usuario.
browseable = no
read only = no
create mask = 0700
directory mask = 0700
valid users = %S
[netlogon]
comment = Network Logon Service
path = /srv/samba/netlogon
guest ok = yes
read only = yes
share modes = no
Isso obviamente é uma configuração bem simples, considerando que este será o único controlador de domínio da sua rede. Dê mais uma refinada, crie os compartilhamentos adequados para a sua rede e depois coloque em produção. Não se esqueça de testar bastante antes para não ter nenhuma surpresa quando tudo já estiver rodando!
O Active Directory é um dos melhores serviços disponibilizados pela Microsoft. Ele permite à você controlar muitos aspectos da rede, tanto de segurança quanto apenas configurações de conformidade para manter o ambiente bem homogêneo. Porém, é muito caro para uma pequena empresa. Aí entra o Samba como PDC.
Com o que nós vimos neste post, você é capaz de fazer um controlador de domínio sem gastar nem um centavo. Obviamente, não vai ter toda a funcionalidade de um AD mas vai te ajudar a ter um ambiente bem mais organizado e também te permite centralizar a autenticação.
Tem alguma dúvida na configuração? Encontrou algum erro ou quer sugerir alguma solução melhor? Deixe um comentário!
Gostou do post? Então assine o feed RSS e não perca os próximos! |
![]() |
6 Comentários
Kelsey Santos
12|Mar|2012 1Parabéns pelo artigo.
Pedro Pereira
01|May|2012 2Muito obrigado Kelsey!
[]‘s
Pedro Pereira
Rodrigo
14|Jan|2013 3Muito bom o artigo Pedro, parabéns!
Baseado no seu artigo montei o servidor de arquivos no meu trabalho, mas me solicitaram a mudança do nome do domínio e do servidor.
Há como eu fazer essas alterações sem precisar retirar e recolocar as estações no domínio?
Grato
Pedro Pereira
16|Jan|2013 4Rodrigo,
Até onde eu sei, não tem como só mudar o nome. Mas nunca precisei fazer este tipo de mudança. Talvez seja melhor você procurar alguém que já tenha feito isso e pedir mais ajuda… infelizmente não vou poder te ajudar muito nesse caso =)
[]‘s
Pedro Pereira.
Anderson de Paula
03|Apr|2013 5a versão do ubunto é server ou desktop?
Pedro Pereira
04|Apr|2013 6Anderson,
Usei o Server para fazer o tutorial.
[]‘s
Pedro Pereira
Deixe seu comentário!
Acompanhe!
Busca
Mais Lidos
Comentários Recentes
A design creation of Design Disease
Pedro Pereira: Administrador de redes: Linux, Cisco, FreeBSD, OpenBSD. Consultoria e serviços em software livre utilizando Samba, Subversion, Postfix, OpenLDAP, Cacti, Nagios e vários outros! Copyright © 2007 - Pedro Pereira – Consultoria Linux, Cisco, OpenBSD - is proudly powered by WordPress
Visite também tem-aqui.com.
Esta obra escrita por Pedro Augusto de Oliveira Pereira está licensiada sob a Creative Commons Atribuição-Uso Não-Comercial-Vedada a Criação de Obras Derivadas 3.0 Brasil License.