Esta seção cobre a configuração de Samba para utilizar LDAP para usuário, grupo e informação e autenticação de conta de máquina. O pressuposto é que você já tem um diretório OpenLDAP instalado e funcionando e que o servidor está configurado para ser usado para autenticação. Veja “Servidor OpenLDAP” e “Autenticação LDAP” para detalhes sobre configuração de OpenLDAP.
Existem três pacotes necessários quando integra-se Samba com LDAP. Pacotes samba, samba-doc, e smbldap-tools. Para instalar os pacotes, a partir de um terminal digite:
sudo apt-get install samba samba-doc smbldap-tools
Estritamente falando, o pacote smbldap-tools não é necessário mas, a menos que você tenha outro pacote ou scripts customizados, será necessário um método para gerenciar usuários, grupos e contas do computador.
Para que Samba use OpenLDAP como uma passdb infraestrutura, os objetos do usuário no diretório necessitarão de atributos adicionais. Esta seção assume que você quer que Samba seja configurado omo um controlador de domínio Windows NT e que adicionará objetos e atributos LDAP.
-
Os atributos de Samba são definidos no arquivo
samba.schemaque é parte do pacote samba-doc. O arquivo do esquema necessita ser descompactado e copiado para/etc/ldap/schema. A partir de um prompt de terminal, entre:sudo cp /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz /etc/ldap/schema/ sudo gzip -d /etc/ldap/schema/samba.schema.gz
-
O esquema samba necessita ser adicionado à árvore cn=config. O procedimento para adicionar um novo esquema a slapd está também detalhado em “Configuração”.
-
Primeiro, criar um arquivo de configuração chamado
schema_convert.conf, ou um nome descritivo semelhante, contendo as seguintes linhas:include /etc/ldap/schema/core.schema include /etc/ldap/schema/collective.schema include /etc/ldap/schema/corba.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/duaconf.schema include /etc/ldap/schema/dyngroup.schema include /etc/ldap/schema/inetorgperson.schema include /etc/ldap/schema/java.schema include /etc/ldap/schema/misc.schema include /etc/ldap/schema/nis.schema include /etc/ldap/schema/openldap.schema include /etc/ldap/schema/ppolicy.schema include /etc/ldap/schema/samba.schema
-
Em seguida, crie um diretório temporário para armazenar o resultado:
mkdir /tmp/ldif_output -
Agora utilize slaptest para converter os arquivos de esquemas:
slaptest -f schema_convert.conf -F /tmp/ldif_outputAltere os nomes de arquivo e de caminho acima para coincidirem com o seu próprio se eles forem diferentes.
-
Edite o arquivo gerado
/tmp/ldif_output/cn=config/cn=schema/cn={12}samba.ldif, alterando os seguintes atributos:dn: cn=samba,cn=schema,cn=config ... cn: samba
E remover as seguintes linhas a partir da parte inferior do arquivo:
structuralObjectClass: olcSchemaConfig entryUUID: b53b75ca-083f-102d-9fff-2f64fd123c95 creatorsName: cn=config createTimestamp: 20080827045234Z entryCSN: 20080827045234.341425Z#000000#000#000000 modifiersName: cn=config modifyTimestamp: 20080827045234Z
O valores dos atributos irão variar, basta ter a certeza que os atributos são removidos.
-
Finalmente, usando o utilitário ldapadd, adicionar o novo esquema para o diretório:
ldapadd -x -D cn=admin,cn=config -W -f /tmp/ldif_output/cn\=config/cn\=schema/cn\=\{12\}samba.ldif
Agora, deverá haver, na árvore cn=config, uma entrada dn: cn={X}misc,cn=schema,cn=config, onde "X" é o próximo esquema sequencial.
-
-
Copie e cole o seguinte em um arquivo chamado
samba_indexes.ldif:dn: olcDatabase={1}hdb,cn=config changetype: modify add: olcDbIndex olcDbIndex: uidNumber eq olcDbIndex: gidNumber eq olcDbIndex: loginShell eq olcDbIndex: uid eq,pres,sub olcDbIndex: memberUid eq,pres,sub olcDbIndex: uniqueMember eq,pres olcDbIndex: sambaSID eq olcDbIndex: sambaPrimaryGroupSID eq olcDbIndex: sambaGroupType eq olcDbIndex: sambaSIDList eq olcDbIndex: sambaDomainName eq olcDbIndex: default subUsando o utilitário ldapmodify para carregar os novos índices:
ldapmodify -x -D cn=admin,cn=config -W -f samba_indexes.ldifSe tudo correu bem você verá os novos índices usando ldapsearch:
ldapsearch -xLLL -D cn=admin,cn=config -x -b cn=config -W olcDatabase={1}hdb -
A seguir, configure o pacote smbldap-tools para atender a seu ambiente. O pacote vem com um script de configuração que lhe fará perguntas sobre as opções necessárias. Para executar o script, entre:
sudo gzip -d /usr/share/doc/smbldap-tools/configure.pl.gz sudo perl /usr/share/doc/smbldap-tools/configure.pl
Uma vez que você tenha respondido às perguntas, deverão estar presentes os arquivos
/etc/smbldap-tools/smbldap.confe/etc/smbldap-tools/smbldap_bind.conf. Estes arquivos são gerados pelo script de configuração. Assim, se você cometeu algum engano durante a execução do script, pode ser que seja mais simples editar adequadamente o arquivo. -
O script smbldap-populate adicionará os usuários, grupos e objetos LDAP requeridos por Samba. É uma boa ideia fazer um backup do arquivo LDAP Data Interchange Format (LDIF) com slapcat antes de executar o comando:
sudo slapcat -l backup.ldif -
Assim que você tiver um backup atual, execute smbldap-populate entrando:
sudo smbldap-populate
Você pode criar um arquivo LDIF contendo os novos objetos Samba através da execução de sudo smbldap-populate -e samba.ldif. Isto permite que você veja as mudanças, assegurando-se que tudo está correto.
O seu diretório LDAP tem agora as informações de domínios necessárias para autenticar os usuários Samba.
Há várias formas para configurar Samba. Para detalhes sobre algumas configurações comuns, veja Capítulo 15, Rede Windows. Para configurar Samba para usar LDAP, edite o arquivo principal de configuração do Samba /etc/samba/smb.conf inserindo marcas de comentário na opção passdb infraestrutura e adicionando o seguinte:
# passdb backend = tdbsam # LDAP Settings passdb backend = ldapsam:ldap://hostname ldap suffix = dc=example,dc=com ldap user suffix = ou=People ldap group suffix = ou=Groups ldap machine suffix = ou=Computers ldap idmap suffix = ou=Idmap ldap admin dn = cn=admin,dc=example,dc=com ldap ssl = start tls ldap passwd sync = yes ... add machine script = sudo /usr/sbin/smbldap-useradd -t 0 -w "%u"
Reinicie o samba para ativar as novas configurações:
sudo /etc/init.d/samba restart
Agora o Samba necessita saber a senha de administrador LDAP. A partir de um terminal prompt digite:
sudo smbpasswd -w secret
|
|
|
Substituindo secret com sua senha admin LDAP. |
Se você tem, no momento, usuários em LDAP e deseja que eles se autentiquem usando Samba, eles precisarão alguns atributos de Samba definidos no arquivo samba.schema. Adicione os atributos Samba para usuários existentes usando o utilitário smbpasswd, substituindo username com um usuário real:
sudo smbpasswd -a username
Será então pedido a você para entrar a senha do usuário.
Para adicionar um novo usuário, grupo ou conta de máquina, use os utilitários do pacote smbldap-tools. Aqui estão alguns exemplos:
-
Para adicionar um novo usuário a LDAP com atributos Samba, entre o seguinte, substituind username com um nome de usuário real:
sudo smbldap-useradd -a -P usernameA opção -a adiciona os atributos Samba e a opção -P chama o utilitário smbldap-passwd depois que o usuário for criado, permitindo a você entrar uma senha para aquele usuário.
-
Para remover um usuário do diretório, entre:
sudo smbldap-userdel usernameO utilitário smbldap-userdel também tem uma opção -r para remover o diretório pessoal do usuário.
-
Use smbldap-groupadd para adicionar um grupo, substituindo groupname por um grupo apropriado:
sudo smbldap-groupadd -a groupnameDe forma similar a smbldap-useradd, a opção -a adiciona os atributos Samba.
-
Para adicionar um usuário a um grupo use smbldap-groupmod:
sudo smbldap-groupmod -m username groupnameAssegure-se de substituir username por um usuário real. Também, a opção -m pode adicionar mais que um usuário de cada vez, listando-os em formato separado por vírgulas.
-
smbldap-groupmod também pode ser usado para remover usuário do grupo:
sudo smbldap-groupmod -x username groupname -
Além disso, o utilitário smbldap-useradd pode adicionar contas de máquinas Samba:
sudo smbldap-useradd -t 0 -w usernameSubstitua username pelo nome da estação de trabalho. A opção -t 0 cria a conta de máquina sem retardo, enquanto a opção -w especifica um usuário como uma conta de máquina. Observe, também, que a opção add machine script em
/etc/samba/smb.conffoi alterada para usar smbldap-useradd.
Há mais utilitários e opções úteis no pacote smbldap-tools. A página do manual para cada utilitário fornece mais detalhes.
-
Há vários locais em que LDAP e Samba estão documentados em Samba HOWTO Collection.
-
Especificamente, veja a seção passdb.
-
Outro bom site é Samba OpenLDAP HOWTO.
-
Mais uma vez, para mais informações sobre smbldap-tools, veja as páginas do manual: man smbldap-useradd, man smbldap-groupadd, man smbldap-populate, etc.

