O leitor Carlos Augusto me pediu, via mail, a comentar aqui como instalar o LDAP no Ubuntu. Não é muito a minha praia, mas nada que uma simples busca no Oráculo não resolvesse.
Mas o que é LDAP?
Lightweight Directory Access Protocol, ou LDAP, é um protocolo para atualizar e pesquisar diretórios rodando sobre TCP/IP. Um diretório LDAP geralmente segue o modelo X.500, que é uma árvore de nós, cada um consistindo de um conjunto de atributos com seus respectivos valores. O LDAP foi criado como uma alternativa ao muito mais incômodo Directory Access Protocol (DAP). fonte Wikipedia
Segue abaixo a receita de bolo, tirada do site Ubuntusp.Desktoplivre.org:
Instalação dos pacotes necessários:
# sudo apt-get install libpam-ldap libnss-ldap nss-updatedb libnss-db
Será solicitado o nome ou ip do servidor LDAP:
ldap://servidor-ldap/
Obs.: O arquivo de configuração fica em /etc/ldap.conf.
Será solicitado o nome do domínio LDAP:
dc=dominio,dc=com,dc=br
Será solicitado a versão LDAP usada:
3
Colocar root como admin da base LDAP:
yes
Exige login na base LDAP:
no
Usuário administrador da base LDAP:
cn=admin,dc=dominio,dc=com,dc=br
Senha do administrador LDAP:
sua senha
Obs.: O arquivo de configuração fica em /etc/ldap.secret.
Edite o arquivo /etc/nsswitch.conf e altere os dados conforme abaixo:
# sudo gedit /etc/nsswitch.conf
Antes:
#passwd: compat
#group: compat
Depois:
passwd: files ldap
group: files ldap
Execute os comandos abaixo para verificar se os usuários e grupos da base LDAP estão aparecendo:
# getent passwd
# getent group
ALERTA DE BUG: no arquivo /etc/ldap.conf deve ser descomentada a linha “bind_policy hard” e alterada para “bind_policy soft”. Caso não inserido será gerado um erro na inicialização do kernel e o sistema não levantará.
Deixe o arquivo /etc/pam.d/common-account conforme abaixo:
# sudo gedit /etc/pam.d/common-account
account sufficient pam_ldap.so
account required pam_unix.so
Deixe o arquivo /etc/pam.d/common-auth conforme abaixo:
# sudo gedit /etc/pam.d/common-auth
auth sufficient pam_ldap.so
auth required pam_unix.so nullok_secure use_first_pass
Deixe o arquivo /etc/pam.d/common-password conforme abaixo:
# sudo gedit /etc/pam.d/common-password
password sufficient pam_ldap.so
password required pam_unix.so nullok obscure min=4 max=8 md5
Deixe o arquivo /etc/pam.d/common-session conforme abaixo:
# sudo gedit /etc/pam.d/common-session
session required pam_unix.so
session required pam_mkhomedir.so skel=/etc/skel/ umask=002
session optional pam_foreground.so
session sufficient pam_ldap.so
Crie uma base local no caso de a rede não estar funcionando. Para isso esteja logado como root:
# nss_updatedb ldap
Crie um script com nome nssupdate.sh e salve em /etc/cron.hourly/ conforme conteúdo abaixo:
# gedit/etc/cron.hourly/nssupdate.sh
LOCK=/var/run/auth-update.cron
[ "$1" != "0" ] && [ -f $LOCK ] && [ -d /proc/"$(cat $LOCK)" ] && exit 0
echo $$ > $LOCK
RANGE=3600
[ "$1" != "" ] && RANGE=$1
SLEEP=$RANDOM
[ "$RANGE" != "0" ] && let “SLEEP %= $RANGE” || SLEEP=0
sleep $SLEEP
go=true
while $go; do
/usr/sbin/nss_updatedb ldap
[ $? -eq 0 ] && go=false
[ "$go" == "true" ] && sleep 10
done
rm $LOCK
exit 0
# chmod 755 /etc/cron.hourly/nssupdate.sh
Edite seu /etc/nsswitch.conf e deixe conforme abaixo:
# gedit /etc/nsswitch.conf
passwd: files ldap [NOTFOUND=return] db
group: files ldap [NOTFOUND=return] db
O seu Ubuntu Linux está pronto para autenticar no servidor LDAP!
Mais dicas aqui e aqui.
Quem tiver mais dicas sobre o assunto, poste em nossos comentários!
Espero ter ajudado!
Mas o que é LDAP?
Lightweight Directory Access Protocol, ou LDAP, é um protocolo para atualizar e pesquisar diretórios rodando sobre TCP/IP. Um diretório LDAP geralmente segue o modelo X.500, que é uma árvore de nós, cada um consistindo de um conjunto de atributos com seus respectivos valores. O LDAP foi criado como uma alternativa ao muito mais incômodo Directory Access Protocol (DAP). fonte Wikipedia
Segue abaixo a receita de bolo, tirada do site Ubuntusp.Desktoplivre.org:
Instalação dos pacotes necessários:
# sudo apt-get install libpam-ldap libnss-ldap nss-updatedb libnss-db
Será solicitado o nome ou ip do servidor LDAP:
ldap://servidor-ldap/
Obs.: O arquivo de configuração fica em /etc/ldap.conf.
Será solicitado o nome do domínio LDAP:
dc=dominio,dc=com,dc=br
Será solicitado a versão LDAP usada:
3
Colocar root como admin da base LDAP:
yes
Exige login na base LDAP:
no
Usuário administrador da base LDAP:
cn=admin,dc=dominio,dc=com,dc=br
Senha do administrador LDAP:
sua senha
Obs.: O arquivo de configuração fica em /etc/ldap.secret.
Edite o arquivo /etc/nsswitch.conf e altere os dados conforme abaixo:
# sudo gedit /etc/nsswitch.conf
Antes:
#passwd: compat
#group: compat
Depois:
passwd: files ldap
group: files ldap
Execute os comandos abaixo para verificar se os usuários e grupos da base LDAP estão aparecendo:
# getent passwd
# getent group
ALERTA DE BUG: no arquivo /etc/ldap.conf deve ser descomentada a linha “bind_policy hard” e alterada para “bind_policy soft”. Caso não inserido será gerado um erro na inicialização do kernel e o sistema não levantará.
Deixe o arquivo /etc/pam.d/common-account conforme abaixo:
# sudo gedit /etc/pam.d/common-account
account sufficient pam_ldap.so
account required pam_unix.so
Deixe o arquivo /etc/pam.d/common-auth conforme abaixo:
# sudo gedit /etc/pam.d/common-auth
auth sufficient pam_ldap.so
auth required pam_unix.so nullok_secure use_first_pass
Deixe o arquivo /etc/pam.d/common-password conforme abaixo:
# sudo gedit /etc/pam.d/common-password
password sufficient pam_ldap.so
password required pam_unix.so nullok obscure min=4 max=8 md5
Deixe o arquivo /etc/pam.d/common-session conforme abaixo:
# sudo gedit /etc/pam.d/common-session
session required pam_unix.so
session required pam_mkhomedir.so skel=/etc/skel/ umask=002
session optional pam_foreground.so
session sufficient pam_ldap.so
Crie uma base local no caso de a rede não estar funcionando. Para isso esteja logado como root:
# nss_updatedb ldap
Crie um script com nome nssupdate.sh e salve em /etc/cron.hourly/ conforme conteúdo abaixo:
# gedit/etc/cron.hourly/nssupdate.sh
LOCK=/var/run/auth-update.cron
[ "$1" != "0" ] && [ -f $LOCK ] && [ -d /proc/"$(cat $LOCK)" ] && exit 0
echo $$ > $LOCK
RANGE=3600
[ "$1" != "" ] && RANGE=$1
SLEEP=$RANDOM
[ "$RANGE" != "0" ] && let “SLEEP %= $RANGE” || SLEEP=0
sleep $SLEEP
go=true
while $go; do
/usr/sbin/nss_updatedb ldap
[ $? -eq 0 ] && go=false
[ "$go" == "true" ] && sleep 10
done
rm $LOCK
exit 0
# chmod 755 /etc/cron.hourly/nssupdate.sh
Edite seu /etc/nsswitch.conf e deixe conforme abaixo:
# gedit /etc/nsswitch.conf
passwd: files ldap [NOTFOUND=return] db
group: files ldap [NOTFOUND=return] db
O seu Ubuntu Linux está pronto para autenticar no servidor LDAP!
Mais dicas aqui e aqui.
Quem tiver mais dicas sobre o assunto, poste em nossos comentários!
Espero ter ajudado!
Comentários