5) Configurando
LDAP
a) Vamos gerar uma senha para o LDAP com o seguinte comando:
# slappasswd
Anote o resultado, pois utilizaremos para configurar o arquivo seguinte.
b) Vamos configurar o LDAP editando o arquivo
/etc/openldap/sldap.conf, note que existe alguns comentários no arquivo, essas linhas poderão ser apagadas, devemos deixar assim:
allow bind_v2
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/nis.schema
include /etc/openldap/schema/samba.schema #(arquivo baixado do site do samba)
schemacheck on
pidfile /var/run/slapd.pid
argsfile /var/run/slapd.args
database bdb
suffix "dc=viva,dc=edu,dc=br"
rootdn "cn=administrador,dc=viva,dc=edu,dc=br"
rootpw {SSHA}ZUfdq0QdgAdkrdWfP3mhuaWWW4dtvP5/
#substitua o conteúdo de rootpw pelo resultado do comando slappasswd, esse comando gerar uma senha para o LDAP, item (a)
directory /var/lib/openldap/openldap-data
password-hash {md5}
index objectClass,uidNumber,gidNumber eq
index cn,sn,uid,displayName pres,sub,eq
index sambaSID,sambaPrimaryGroupSID,sambaDomainName eq
index sambaSIDList,sambaSID,sambaPrimaryGroupSID,sambaDomainName eq
index default sub
access to attrs=userPassword,sambaLMPassword,sambaNTPassword
by self write
by anonymous auth
by * none
access to *
by * read
defaultaccess read
c) Vamos gerar uma base para o LDAP, crie um arquivo com o nome
base.ldif e conteúdo:
(Onde o primeiro é o nó "Principal", os demais são "Usuarios", "Grupos", "Computadores")
dn: dc=viva,dc=edu,dc=br
dc: viva
objectClass: top
objectClass: domain
dn: ou=Usuarios,dc=viva,dc=edu,dc=br
ou: Usuarios
objectClass: top
objectClass: organizationalUnit
dn: ou=Grupos,dc=viva,dc=edu,dc=br
ou: Grupos
objectClass: top
objectClass: organizationalUnit
dn: ou=Computadores,dc=viva,dc=edu,dc=br
ou: Computadores
objectClass: top
objectClass: organizationalUnit
d) Vamos adicionar a base ao LDAP.
Inicie o servidor ldap com o comando:
# /etc/rc.d/sladp start
Utilize o seguinte comando:
# ldapadd -x -D cn=administrador,dc=viva,dc=edu,dc=br -W -f ./base.ldif
A senha que será solicitada é a mesma que você utilizou para gerar o código {SSHA}ZUfdq0QdgAdkrdWfP3mhuaWWW4dtvP5/.
Digite "ldapsearch -x" para visualizar toda a árvore do ldap, verifique também se o pacman instalou a libldap e o openldap da mesma versão, caso contrário esse comando não funcionará corretamente (Comandos para verificar: pacman -Q libldap / pacman -Q openldap).
e) Inicie o servidor Apache para podermos testar o modo visual:
# /etc/rc.d/httpd restart
Digite em seu browser (firefox):
http://localhost/phpldapadmin
Clique em login e digite a mesma senha que você utilizou para gerar o código.
Agora você pode visualizar o mesmo resultado do comando
ldapsearch -x, ou seja, a nossa árvore de usuários, computadores etc.
f) Editando os arquivos do
smbldap-tools.
Utilize o comando
net getlocalsid, será gerado algo como S-1-5-21-34157925-1845821017-2888281079. Anote esse valor, pois o mesmo será utilizado no arquivo de configuração do smbldap-tools.
Edite o arquivo
/etc/smbldap-tools/smbldap.conf deixando-o assim:
SID="S-1-5-21-34157925-1845821017-2888281079"
sambaDomain="VIVA"
slaveLDAP="127.0.0.1"
slavePort="389"
masterLDAP="127.0.0.1"
masterPort="389"
ldapTLS="0"
verify=""
cafile=""
clientcert=""
clientkey=""
suffix="dc=vivao,dc=edu,dc=br"
usersdn="ou=usuarios,${suffix}"
computersdn="ou=computadores,${suffix}"
groupsdn="ou=grupos,${suffix}"
idmapdn="ou=idmap,${suffix}"
sambaUnixIdPooldn="sambaDomainName=VIVA,${suffix}"
scope="sub"
hash_encrypt="MD5"
userLoginShell="/bin/false"
userHome="/home/%U"
userHomeDirectoryMode="700"
userGecos="Ldap User"
defaultUserGid="513"
defaultComputerGid="515"
skeletonDir="/etc/skel"
defaultMaxPasswordAge="45"
userSmbHome="PDC-SRV\%U"
userProfile=""
userHomeDrive="H:"
userScript="%U.bat"
mailDomain="viva.edu.br"
with_smbpasswd="0"
smbpasswd="/usr/bin/smbpasswd"
with_slappasswd="0"
slappasswd="/usr/sbin/slappasswd"
g) Agora vamos editar o arquivo
smbldap_bind.conf, esse é bem mais simples:
slaveDN="cn=administrador,dc=com"
slavePw="senha_criada_anteriormente"
masterDN="cn=Administrador,dc=com"
masterPw="senha_criada_anteriormente"
h) Edite os dois arquivos
/etc/pam_ldap.conf e
/etc/nss_ldap.conf deixando os dois com o mesmo conteúdo abaixo:
host 127.0.0.1
base dc=viva,dc=edu,dc=br
uri ldap://127.0.0.1/
ldap_version 3
rootbinddn cn=administrador,dc=viva,dc=edu,dc=br
scope sub
timelimit 5
bind_timelimit 5
nss_reconnect_tries 2
pam_login_attribute uid
pam_member_attribute gid
pam_password md5
nss_base_passwd dc=viva,dc=edu,dc=br
nss_base_shadow dc=viva,dc=edu,dc=br
nss_base_group dc=viva,dc=edu,dc=br
i) edite o arquivo
/etc/nsswitch.conf:
# Begin /etc/nsswitch.conf
passwd: files ldap
group: files ldap
shadow: files ldap
publickey: files ldap
hosts: files dns ldap
networks: files ldap [NOTFOUND=return]
protocols: files ldap [NOTFOUND=return]
services: files ldap [NOTFOUND=return]
ethers: files ldap [NOTFOUND=return]
rpc: files ldap [NOTFOUND=return]
netgroup: files ldap [NOTFOUND=return]
# End /etc/nsswitch.conf
Para autenticar via ssh, Squid ou outro qualquer você deve editar os arquivos do pam localizados em /etc/pam.d/xxxx, adicionando "pam_ldap.so" ou substituindo, dependendo do que você quer fazer. Existem outros arquivos que demonstram isso de forma mais clara.