Instalado Fedora-DS e integrando com Samba

Este artigo tem por objetivo mostrar como fazer a instalação do Fedora-DS (base LDAP da Red Hat) e configurar sua integração com o Samba para que estações Windows utilizem autenticação nesta mesma base LDAP. Esta instalação será mostrada no Fedora 9, sendo possível também no Fedora 10 e Red Hat 5.

[ Hits: 36.022 ]

Por: Marco Antonio Ferreira Vera em 25/05/2009


Integrando Samba com LDAP



Agora que já temos a base LDAP, temos que integrar o Samba com o LDAP através da ferramenta smbldap-tools.

Primeiramente vamos configurar os parâmetros no /etc/samba/smb.conf (onde houver example.com coloque o mesmo que você colocou na configuração do Fedora-DS e em YOURWORKGROUP, coloque o nome que deseja que seja o domínio).

# vim /etc/samba/smb.conf

[global]
workgroup = YOURWORKGROUP
security = user
passdb backend = ldapsam:ldap://example.com
ldap admin dn = cn=Directory Manager
ldap suffix = dc=example,dc=com
ldap user suffix = ou=People
ldap machine suffix = ou=Computers
ldap group suffix = ou=Groups

log file = /var/log/%m.log
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

os level = 33
domain logons = yes
domain master = yes
local master = yes
preferred master = yes

wins support = yes

logon home = \\%L\%u\profiles
logon path = \\%L\profiles\%u
logon drive = H:

template shell = /bin/false
winbind use default domain = no

add user script = /usr/sbin/smbldap-useradd -m "%u"
delete user script = /usr/sbin/smbldap-userdel "%u"
add group script = /usr/sbin/smbldap-groupadd -p "%g"
delete group script = /usr/sbin/smbldap-groupdel "%g"
add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g"
delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g"
set primary group script = /usr/sbin/smbldap-usermod -g "%g" "%u"
add machine script = /usr/sbin/smbldap-useradd -w "%u"

[netlogon]
path = /var/lib/samba/netlogon
read only = yes
browsable = no

[profiles]
path = /var/lib/samba/profiles
read only = no
create mask = 0600
directory mask = 0700

[homes]
browsable = no
writable = yes

Feito isto, vamos usar agora o smbldap-tools.

Primeiro inicie o Samba:

- Fedora Linux:

# service smb start
# service nmb start


- Red Hat:

# service smb start

Agora configuraremos o smbldap-tools, execute o seguinte comando (neste comando a maioria das configurações ele pegará do smb.conf, então muita coisa é só dar enter):

# /usr/share/doc/smbldap-tools-0.9.5/configure.pl
Samba Configuration File Path [/etc/samba/smb.conf] > (deixe padrão, apenas dê enter)
Smbldap-tools Configuration Directory Path [/etc/smbldap-tools/] > (deixe padrão, apenas dê enter)
workgroup name [EXEMPLO] > (deixe padrão, apenas dê enter)
logon drive [H:] > (Aqui você pode definir qualquer letra, desde que não seja as usadas pelos Windows ex.: C: D: e etc)
logon home (press the "." character if you don't want homeDirectory) [\\server\U%] > (deixe padrão, apenas dê enter)
logon path (press the "." character if you don't want roaming profile) [\\server\profiles\%U] > (este é um ponto importante, se você quer habilitar roaming profile, você deve passar o caminho aqui, se você não quiser, ponha apenas um ".")
home directory prefix (use %U as username) [/home/%U] > (aqui você define onde ficaram fisicamente os dados dos usuários, acessados pelo \\server\%U)
default users' homeDirectory mode [700] > (deixe padrão, apenas dê enter)
default user netlogon script (use %U as username) [exemplo.bat] > (aqui é o script de logon do usuário, podendo ser alterado posteriormente sem problemas, lembrando que este script deve estar acessível na rede dentro de NETLOGON)
default password validation time (time in days) [45] > (aqui é os dias para expirar a senha)
ldap suffix [dc=exemplo,dc=com,dc=br] >; (se estiver correto, deixe padrão, apenas dê enter)
ldap group suffix [ou=Groups] > (deixe padrão, apenas dê enter)
ldap user suffix [ou=Users] > (deixe padrão, apenas dê enter)
ldap machine suffix [ou=Computers] > (deixe padrão, apenas dê enter)
Idmap suffix [ou=Idmap] > (deixe padrão, apenas dê enter)
sambaUnixIdPooldn: object where you want to store the next uidNumber
   and gidNumber available for new users and groups
   sambaUnixIdPooldn object (relative to ${suffix}) [sambaDomainName=EXEMPLO] > (se estiver correto, deixe padrão, apenas dê enter)
ldap master server [server.exemplo.com.br] > (este nome tem que ser resolvido por DNS ou /etc/hosts)
ldap master port [389] > (deixe padrão, apenas dê enter)
ldap master bind dn [cn=Directory Manager] > (deixe padrão, apenas dê enter)
ldap master bind password [] > (coloque a senha do Directory Manager)
ldap slave server [server.exemplo.com.br] > (se você não tem outro LDAP, pode colocar o mesmo)
ldap slave port [389] > (deixe padrão, apenas dê enter)
ldap slave bind dn [cn=Directory Manager] > (deixe padrão, apenas dê enter)
ldap slave bind password [] > (colque a senha do Directory Manager)
ldap tls support (1/0) [0] > (deixe padrão, apenas dê enter)
SID for domain EXEMPLO: SID of the domain (can be obtained with 'net getlocalsid server')
SID for domain EXEMPLO [S-1-5-21-3949905433-2291849888-696682225] > (deixe padrão, apenas dê enter)
unix password encryption: encryption used for unix passwords
unix password encryption (CRYPT, MD5, SMD5, SSHA, SHA) [SSHA] > CRYPT (aqui você deve colocar a mesma encriptação colocada no Fedora-DS)
crypt salt format: If hash_encrypt is set to CRYPT, you may set
   a salt format. The default is "%s", but many systems will generate
   MD5 hashed passwords if you use "$1$%.8s"
   crypt salt format [%s] > (deixe padrão, apenas dê enter)
default user gidNumber [513] > (deixe padrão, apenas dê enter)
default computer gidNumber [515] > (deixe padrão, apenas dê enter)
default login shell [/bin/bash] > /sbin/nologin (se deixar o padrão, os usuários criados poderão logar via ssh no servidor, eu costumo botar /sbin/nologin para os usuários conseguirem logar no ftp)
default skeleton directory [/etc/skel] > (deixe padrão, apenas dê enter)
default domain name to append to mail adress [] > exemplo.com.br (coloque o domínio do seu endereço de e-mail, isto pode ser configurado depois também)
/etc/smbldap-tools/smbldap.conf done.
/etc/smbldap-tools/smbldap_bind.conf done.


Agora temos que criar o schema do samba para o LDAP da seguinte forma:

Baixe o script ol-schema-migrate.pl:

# wget http://directory.fedoraproject.org/download/ol-schema-migrate.pl

Rode o script da seguinte forma:

# perl ol-schema-migrate.pl -b /usr/share/doc/samba-*/LDAP/samba.schema > /etc/dirsrv/slapd-<server>/schema/61samba.ldif

Sendo <server> o nome que você colocou, depois reinicie o Fedora-DS:

# service dirsrv restart

Agora que temos o schema do samba no LDAP, vamos setar a senha do Directory Manager no db do samba:

# smbpasswd -W

E agora vamos popular a base:

# smbldap-populate
Populating LDAP directory for domain EXEMPLO (S-1-5-21-3949905433-2291849888-696682225)
(using builtin directory structure)

adding new entry: dc=exemplo,dc=com,dc=br
adding new entry: ou=Users,dc=exemplo,dc=com,dc=br
adding new entry: ou=Groups,dc=exemplo,dc=com,dc=br
adding new entry: ou=Computers,dc=exemplo,dc=com,dc=br
adding new entry: ou=Idmap,dc=exemplo,dc=com,dc=br
adding new entry: uid=root,ou=Users,dc=exemplo,dc=com,dc=br
adding new entry: uid=nobody,ou=Users,dc=exemplo,dc=com,dc=br
adding new entry: cn=Domain Admins,ou=Groups,dc=exemplo,dc=com,dc=b
adding new entry: cn=Domain Users,ou=Groups,dc=exemplo,dc=com,dc=br
adding new entry: cn=Domain Guests,ou=Groups,dc=exemplo,dc=com,dc=br
adding new entry: cn=Domain Computers,ou=Groups,dc=exemplo,dc=com,dc=br
adding new entry: cn=Administrators,ou=Groups,dc=exemplo,dc=com,dc=br
adding new entry: cn=Account Operators,ou=Groups,dc=exemplo,dc=com,dc=br
adding new entry: cn=Print Operators,ou=Groups,dc=exemplo,dc=com,dc=br
adding new entry: cn=Backup Operators,ou=Groups,dc=exemplo,dc=com,dc=br
adding new entry: cn=Replicators,ou=Groups,dc=exemplo,dc=com,dc=br
adding new entry: sambaDomainName=EXEMPLO,dc=exemplo,dc=com,dc=br

Please provide a password for the domain root:
Changing UNIX and samba passwords for root
New password: (digite uma senha para o root do domínio, este root não tem nada a ver com o root do servidor)
Retype new password: (redigite a senha)

Pronto, agora o Samba está integrado no LDAP. Pode-se adicionar máquinas Windows a este domínio com o usuário root do domínio e a senha que a pouco foi definida.

Para testar smbldap podemos rodar o comando:

# smbldap-userlist

(Só vira a lista com o root e nobody)

Já podemos adicionar usuários à base através do comando smbldap-useradd, todos os comandos começam com smbldap, o final é igual à adicionar usuários ao Linux. Ex.: smbldap-useradd, smbldap-usermod etc.

Agora para o servidor autenticar (o próprio localhost ou outro server) na base LDAP, é preciso rodar o comando:

# authcontig-tui

Em User Information marque a opção Use LDAP e em Authentication marque Use LDAP Authentication, vá em next. Deixe desmarcada a opção Use TLS

Server: ldap://server.exemplo.com.br/
Base DN: dc=exemplo,dc=com,dc=br

Troque os dados acima pelos dados pertinentes ao seu ambiente. Vá em ok para sair.

Edite o arquivo /etc/ldap.conf e adicione os seguintes parâmetros:

binddn cn=Directory Manager
bindpw (senha do Directory Manager)

Agora vá em /etc/openldap/ldap.conf e coloque os seguintes parâmetros:

BASE dc=exemplo,dc=com,dc=br
SSL no
TLS_CACERTDIR /etc/openldap/cacerts
URI ldap://127.0.0.1/ (IP ou nome do servidor LDAP)

Pronto, agora o sistema operacional também está autenticando na base LDAP.

Vamos adicionar um usuário para testar:

# smbldap-useradd -m -c "Marco Antonio" marco.antonio
# smbldap-passwd marco.antonio

Changing UNIX password for marco.antonio
New password:
Retype new password:

# id marco.antonio
uid=1000(marco.antonio) gid=513(Domain Users) groups=513(Domain Users) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

# finger marco.antonio
Login: marco.antonio                         Name: Marco Antonio
Directory: /home/marco.antonio         Shell: /sbin/nologin
Never logged in.
No mail.
No Plan.

# smbldap-userlist
uid    |username
0      |root                  |
999   |nobody          |
1000 |marco.antonio  |


Página anterior     Próxima página

Páginas do artigo
   1. Instalando os pacotes
   2. Integrando Samba com LDAP
   3. Configurando SSL no Fedora-DS
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

zsh (Z shell) - Uma alternativa ao bash

Redimencionando SWAP sem reinstalar o Linux

Debian: Como criar um repositório local, offline

Cluster Beowulf

Rodando seu script como "service" no Conectiva

  
Comentários
[1] Comentário enviado por joaomc em 25/05/2009 - 17:10h

Vou utilizar meus poderes mentais para adivinhar o conteúdo de ao menos um comentário... ok... estou sentindo as vibrações do futuro... descobri! Lá vai:

O Active Directory é muito mais do que autenticação, e o Linux ainda está a anos luz de ter um sistema decente como o Active Directory. Eu digo isso porque administro uma floresta com 5000 servidores, 20 pandas gerenciadores, 120 ursos guardiões e 50 araras-alerta. Só um freetard mesmo para achar que essa solução aí em cima se compara ao Active Directory!

[2] Comentário enviado por marcoafv em 25/05/2009 - 17:27h

Meu caro João Marcus,

A melhor solução dentro de um ambiente de TI não existe. O que existe são soluções que mais se "encaixam" no ambiente no qual se está trabalhando. Neste tutorial não digo nem que Active Directory é pior ou melhor e nem digo que o Fedora-DS é melhor ou pior. Só estou dando uma solução àqueles que, por ventura, necessitem apenas de uma base de autenticação, ou de um ambiente que tenham poucos Windows Server (como já vi muitos ambientes). Então não adianta pagar uma fortuna para se ter 2 ou 3 Windows Server e 3000 Linux. Acho o Active Directory é uma ferramenta boa também, já fiz muitos projetos em cima de AD, inclusive, o Fedora-DS (Que a ferramenta que está anos luz atrás, segundo a sua opinião) faz replicas da base do AD, ou seja, tu podes ter replicas em vários sites sem nenhum custo adicional, pena que o Active Directory não faça o mesmo.

Acho estranho uma pessoa que entra num site que se chama Viva o Linux para falar de Active Directory proprietária da Microsoft, mas já aproveito o seu comentário para que outros usuários vejam que o Linux podem trazer coisas boas, e não precisam ser dependentes de tecnologias proprietárias.

Segue aqui uma outra solução enterprise, João: http://www.redhat.com/enterprise_ipa/

[3] Comentário enviado por joaomc em 25/05/2009 - 18:10h

@marcoafv,

Na verdade, meu comentário é uma sátira a um pessoal que sempre vem aqui para falar que tem 120 certificados Microsoft, 40 anos de experiência com Active Directory, escreveu 100 livros sobre o assunto, fez pHD em Active Directory, e diz que nada presta a não ser Active Directory. É um pessoal incrivelmente chato que provavelmente só trabalhou junto com alguém realmente experiente e saiu achando que sabe tudo :)

[4] Comentário enviado por marcoafv em 25/05/2009 - 18:13h

Desculpa João,

Interpretei de forma errada, mas não fiquei magoado contigo, não te preocupas :). Espero que tu tenhas gostado do tutorial, pois é o primeiro que faço.
Mas mesmo a sua sátira é legal, pois assim os leitores podem ver como podem usar o Fedora-DS ou OpenLDAP, por exemplo.

Valeu

[5] Comentário enviado por paulorvojr em 26/05/2009 - 01:09h

Bom artigo, apesar das discussões.

Sem dúvida o melhor e mais facil controlador de dominio e active diretory é o da microsoft, até hoje não chegamos nem perto, mas sempre é bom conhecer novas ideias e modelos,

há empresas que se encaixariam perfeitamente em soluções microsoft, mas há outras que se encaixariam com soluções open-source.

Entendo os dois lados e o bom profissional deve conhecer ambos, e não ser do estilo xiita, linux é muito bom em muita coisa, em outras ainda tem um caminho pela frente...hehehe

Administro e construo servidores tanto linux quanto microsoft, freebsd, solaris, cada um tem sua peculariedade

sou certificado em ambas areas, e cada dia conheço mais, nunca é o bastante

voce adminstra melhor um a.d do que um samba, mas não é tao rapido e simples como o samba

um servidor oracle 10g roda infinitamente melhor com linux do com 2003 server std

tudo deve ser analisado



[6] Comentário enviado por junior em 26/05/2009 - 10:29h

Enquanto isso aguardamos as maravilhas do Samba 4.
Realmente o artigo é muito interessante.

Trabalho em uma empresa que possui o AD para autenticação de Proxy, E-mail, TS , Página da Internet e até na porta do banheiro tem como tu colocar as credenciais do AD.
A única justificativa de o meu coordenador utilizar MS em todo o Campus (600 funcionários) é o SUPORTE.
Ele não se incomoda, se der pau (o que, ironicamente ou não, acontece frenquentemente) é só chamar o pessoal do suporte, gastar apenas 2.000 ou 3.000 reais com 15 horas e pronto. Problema solucionado.
Fácil não? Enquanto isso você acha muuuuuiiitttoo dinheiro gastar 1.000 reias com treinamentos de OpenLDAP e demais ferramentas com 40 horas em média de estudo, sendo certificado e tudo mais para nam maioria das vezes dominar aquilo que estudo, implementar o que estudou e NÃO SEM INCOMODAR COM SUPORTE. Então, façamos as contas:

Se você precisar de suporte a cada 3 meses, você gastará em média 4.000 reais.
Com 4.000 reais você faz uns 4 cursos FODÁSTICOS de Linux na 4Linux, Sisnema ou Green.
Veja só, com 4.000 reais você tem a oportunidade de dominar a ferramenta, quando se você gastar com suporte o cara vai lá, resolve, diz pra você que era a rebimboca da parafuzeta que tava errada e pronto.

Já comentei em outros tópicos e volto a comentar, AD é uma boa ferramenta da Microsoft, e no meu ponto de vista ainda é a carta nas mãos que a Microsoft tem. Hoje, um Gerente de TI que ter menos trabalho, menos dor de cabeça e mais integração em seus servidores. Então, teóricamente é "fácil" instalar exchange, ad, isa, criar uma página em asp e sair autenticando no ad. O fato é que ninguém conta os problemas constantes que acontecem com perfis de usuários, principalmente com Windows 2003.
Microsoft tem propaganda e isso é inegável, as vídeo-aulas do tech net experience "de grátis" no site da Microsoft dão uma falsa impressão de liberdade, acesso fácil aos conteúdos e afins.

Não quero ser xiíta nem nada, mas como já vi dizer o Elgio e o Cabelo: Domine, estude, leia o código fonte.

[7] Comentário enviado por pyros em 23/07/2009 - 14:38h

Ultimamente tenho participado de um projeto de diretório e gestão de identidades, trabalhei com diretório NDS da Novell que rodava em Netware, depois passei a trabalhar com o NT e depois com o AD(o que possuo maior experiência). o Fedora-DS é uma ótima alternativa livre, porém para ambientes mistos(e em situações onde você deseje suporte técnico e etc) o pessoal deveria dar uma olhada nas soluções novas da Novell, eDirectory, IDM e etc, não só tem autenticação integrada de Linux e Windows como custa bem menos do que as soluções MS, já começando pelo fato de poder rodar em Solaris, Linux e etc, evitando gastos com licenças de SOs. Todo mundo fala do AD porque muita gente tem, mas existem alternativas da IBM e Oracle que valem a pena serem avaliadas também!

[8] Comentário enviado por dfsantos em 16/10/2009 - 18:39h

Boa noite marcos, otimo artigo parabens, em relação ao ds estou tendo problemas na criação de usuarios via console, simplesmente os usuarios criados nao logan nas estações windows xp mesmo configurando os mesmos como NT user, porem quando crio os usuarios via comando smbldap-useradd e seus respectivos parametros os usuarios estao logando sem problemas. entao tipo nao entendi sera um bug?

[9] Comentário enviado por marcoafv em 22/10/2009 - 09:06h

dfsantos, realmente pela interface do fedora-ds é meio complicado, por ao criar uma conta ele não cria a conta com os parâmetros do samba, como sambaSamAccount, por exemplo. O que você pode fazer para contornar esse "problema" é instalar uma ferramenta chamada GOsa², com ela você consegue criar os seus usuários de forma next > next > finish.

[10] Comentário enviado por dfsantos em 23/10/2009 - 10:15h

ok marcos vlw pwla dica pensei que havia algo errado, entao é isso a interface servira mais para o gerencia da arvore como replicação, consulta, configuração de referral... etc. Para a administração dos usuarios samba estarei utilizando outra aplicação, mas ressalto que o artigo esta muito bom pois se fala muito pouco da integração do samba com directory server na internet, agradeço sua iniciativa em disponibilizar um conteudo de otima qualidade aqui no vol. Outra coisa vc ja utilizou esta solução em ambiente de produção? se sim, como ficou o desempenho?

Um outro probleminha que tive foi que ao efetuar a troca de senha via ctrl+alt+del no windows a senha nao foi atualizada na base ldap e acabei ficando com senhas duplicadas, sera que adicionando o parametro ldap passwd sync = yes no smb.conf resolveria? pois o script para habilitar o ssl na base funcionou sem problemas.

ainda nao tive tempo de testar esse parametro no smb.conf mas estarei tentando nesse proximo fim de semana.

Fico no aguardo.

[11] Comentário enviado por sandroresque em 04/01/2010 - 10:21h

Olá Marco.

Comigo está acontecendo o seguinte problema. Ao adicionar um novo usuário utilizando o comando smbldap-useradd -m -c "Marco Antonio" marco.antonio ( como no exemplo). O usuário é adicionado normalmente na base Ldap porém, não consigo logar na estação com esse usuário.

Somente o root consegue logar na estação.

Observei os atributos dos usuários criados com esse comando e identifique que existe uma diferença para o usuário "root".

O usuário root possui o "sambaSAMAaccount" no object Class. Os usuário criados não possuem esse atributo no ldap.

Atenciosamente.

[12] Comentário enviado por marujo em 31/10/2010 - 17:07h

Gostaria de deixar minha pequena contribuição... E pra quem acha que é algo simples... saca só a "pequena" Documentação.

http://www.redhat.com/docs/manuals/dir-server/8.1/install/index.html
http://www.centos.org/docs/5/html/CDS/ag/8.0/

[13] Comentário enviado por Necropoly em 18/11/2013 - 19:28h

Hola, primero que todo, excelente tutorial, me funciono a la perfección, solo tengo una recomendación que hacer en cuanto a la creación del usuario:

smbldap-useradd -m -c "Marco Antonio" marco.antonio -> solo crea un usuario posix el cual no puede ser usado para acceder a los recursos compartidos desde windows, por esto es que no podía logearme desde un windows al samba con el usuario recién creado, de acuerdo a la documentación, el comando correcto seria:

smbldap-useradd -m -a -c "Marco Antonio" marco.antonio
smbldap-passwd marco.antonio

Y ahora si el usuario "marco.antonio" se puede loguear desde una estación windows con el password definido.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts