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 |