Archive for the 'SAMBA' Category

Servidor de Arquivo e Autenticação – Integração Perfeita entre Gosa (LDAP) e SAMBA

clodonil June 15th, 2009

Servidor de Arquivo completo

Para instalar o servidor do Samba é necessário que os seguintes pré-requisitos estejam instalados.

Pré-requisitos:

Para aqueles que estão começando agora, definiria o SAMBA como sendo um servidor de autenticação de desktop Windows na rede. Claro que essa é uma definição bem superficial levando em consideração os recursos que o SAMBA tem, por outro lado, a grande maioria usa o SAMBA realmente para fazer isso, autenticar e armazenar arquivos de usuários do Windows.

Com o SAMBA é possível compartilhar recursos entre maquinas UNIX/Linux e Windows. Neste artigo vamos ficar mais focado na parte de autenticação, fazendo o Samba funcionar como um verdadeiro PDC.

1. LDAP

Vamos começar a configuração do SAMBA pelo LDAP. Já escrevi um post que mostra como instalar e configurar o LDAP e o GOsa. Leia este artigo e configure o GOsa e LDAP antes de continuar a configuração.

Com o LDAP e GOsa instalado, vamos precisar que o sistema Linux reconheça os usuários cadastrados na base LDAP. É procedimento é necessário para atribuir permissões para os usuários da base LDAP.Caso você queira utilizar cota, só é possível habilitando o usuário LDAP juntamente com os usuários do sistemas.

Para que isso aconteça é preciso instalar um pacote chamado libnss-ldap e configurar o arquivo /etc/nsswitch.conf. O comando a seguir faz a instalação.

[root@cabeca]#apt-get install libnss-ldap

 Durante a instalação, o sistema vai solicitar algumas informações sobre a base LDAP, tais como endereço, usuário de administração. Todas essas informações são gravadas dentro do arquivo /etc/ldap.conf. Segue um modelo do arquivo, altere conforme as suas configurações.

  • /etc/ldap.conf

base dc=trigo
uri ldap://localhost
ldap_version 3
binddn cn=manager,dc=trigo
bindpw x
rootbinddn cn=manager,dc=trigo
pam_password md5

 O próximo passo é fazer o sistema Linux ir buscar os usuários também na base LDAP. Para isso é necessário que seja alterado o arquivo /etc/nsswitch.conf. Segue a forma como o arquivo deve ficar.

  • /etc/nsswitch.conf

passwd:		files	ldap
group:		files	ldap
shadow:		files	ldap

 No arquivo nsswitch está definido que os usuários serão pesquisados primeiramente no arquivo local (/etc/passwd, /etc/group,/etc/shadow) e caso não encontre este usuário, o mesmo será pesquisado na base LDAP. Para testar se tudo está funcionando de acordo, execute o comando getent e olhe se os usuários da base LDAP estão sendo listados também.

[root@cabeca]#  getent passwd

 Se o comando listar os usuários da base LDAP, o sistema está pronto para receber o SAMBA.

2. Criação de Usuários pelo GOsa

Antes da criação do usuário no sistema GOsa, vamos preparar o ambiente para a criação do diretório home do usuário no sistema de arquivo. Esse procedimento para criar o usuário é feito através de um script que é executado pelo GOsa na hora da criação do usuário. É importante frisar que é possível colocar outras tarefas nesse arquivo, tais como definição de quotas.

Como o script é executado pelo GOsa, é necessário dar permissão de administrador para o usuário do apache para executar esse script. Se não fizer isso não será possível a criação dos diretórios. Altere o arquivo /etc/sudoers, como definido a seguir.

  • /etc/sudoers

    www-data	ALL=(ALL) NOPASSWD:ALL

Com a configuração do sudo pronta, vamos configurar o GOsa para executar o script "create_user.sh" toda vez que um usuário for criado e "delete_user.sh" toda vez que um usuário for apagado do GOsa.

  • /etc/gosa/gosa.conf

Altere o arquivo gosa.conf, acrescentando a linha abaixo no plugin do posixAccound. Este plugins já existe no arquivo, é preciso apenas completar a linha com as variáveis postcreate e postremove.

<plugin acl="default" class="posixAccount" icon="posix.png" path="plugins/personal/posix" postcreate="/usr/bin/sudo /etc/gosa/create_user.sh %uid" 
postremove="/usr/bin/sudo /etc/gosa/delete_user.sh %uid">
</plugin>

 A seguir estão os dois scripts que serão executados pelo GOsa. Lembre-se de criá-los no diretório /etc/gosa/.

  • create_user.sh

#!/bin/bash
HOME=$(getent passwd $1| sed -n -e /^$1:x:[[:digit:]]*:[[:digit:]]*:.*:\(.*\):.*/{s//\1/;p;q;})
if [[ -d $HOME ]]; then
        exit 1
fi
GROUP=$(getent passwd $1| sed -n -e /^$1:x:[[:digit:]]*:\([[:digit:]]*\):.*/{s//\1/;p;q;})
mkdir $HOME
chown $1:$GROUP $HOME

 

  • delete_user.sh

     

#!/bin/bash
HOME=$(getent passwd $1| sed -n -e /^$1:x:[[:digit:]]*:[[:digit:]]*:.*:\(.*\):.*/{s//\1/;p;q;})
if [[ -d $HOME ]]; then
     rm -rf $HOME
fi

 3. Recursos do GOsa

Com o Gosa instalado e os scripts para criar os diretórios funcionando, vamos criar os usuários no GOsa. O Processo é bem simples. Na tela iniciar como mostra a figura 1, acesse o ícone "Create User".

Figura – Browser de usuários

Em seguida uma tela com o cadastro do usuário é aberto. A primeira tela de cadastro é sobre informações gerais do usuário. Preencha com cuidado os campos "last name","first name", "login", como mostra a figura 2. Também é possível enviar uma foto.

Figura 2 – Informações gerais sobre o usuário

Com as informações gerais criadas, click na aba "UNIX" para criar a conta Unix deste usuário. Preencha as informações tomando cuidado para a opção "Home Directory" que será o diretório do usuário. Para este exemplo estamos criando dentro do diretório /home/arquivos, como mostra a figura 3. Verifique se o diretório "arquivos" existe dentro do diretório home. Nesta aba também é possível definir os grupos de trabalho. Lembrando que os usuários que estiverem dentro do grupo "Domain Admins" podem colocar as máquinas no domínio.

Figura 3 – Criação da conta UNIX

Após a criação da conta "UNIX", click na aba "SAMBA" para criar a conta do SAMBA. Mude a unidade de rede para L:. Olhe as propriedades de travar conta de usuário, data para trocar senhas, como mostra a figura 4.

Figura 4 – Criação da conta SAMBA

Ao termino da configuração click na opção "SAVE" e o sistema vai solicitar a senha do usuário.

  • Template

A criação dos template é um facilitador para a criação das contas dos usuários. As permissões, grupos e propriedades são automaticamente passados para os usuários. Par criar um novo template, click no ícone "Create New Template" no browser de usuário, como mostra a figura 5.

Figura 5 – Criação do template

A próxima tela é para definir o nome do template e algumas propriedades gerais, como mostra a figura 6.

Figura 6 – Definição do nome do template

Para criar a conta UNIX, click na aba "UNIX" e defina as propriedades do usuário. Perceba que no campo "Home Directory" ficou com o valor "/home/arquivos/%uid", como mostra a figura 7. No lugar do %uid vai entrar no login do usuário quando um novo usuário for criado utilizando este template.

Figura 7 – Criação da conta UNIX pelo template

Na aba "SAMBA" crie a conta geral do SAMBA, como mostra a figura 8.

Figura 8 – Criação da conta SAMBA do Template

Ao criar um novo usuário, o GOsa vai perguntar em qual template será criado e todas as propriedades serão passada ao usuário evitando erros, como mostra a figura 9.

Figura 9 – Criação de usuário pelo Template

O GOsa trabalha com ACLs, portanto você pode definir quais usuários podem criar outros usuários, quais podem alterar a senha e assim por diante.

Com o GOsa e os usuário criados, vamos passar para a configuração do SAMBA.

4. Configuração do Samba

O arquivo de configuração do SAMBA tem uma particularidade bem interessante. Todas as configurações ficam dentro de um contêiner que inicia com uma palavra entre "[ ]". Todos as seções que abre com "[ ]" são compartilhamentos criados, exceto o primeiro que é o global que define toda a configuração para o servidor. Antes de começar a configuração vamos fazer a instalação do SAMBA.

[root@cabeca]# apt-get install samba

A seguir temos um arquivo de configuração do samba, este arquivo está bem completo e pode ser utilizado para um servidor em produção, após alguns ajustes de acordo com a sua necessidade.

  • /etc/samba/smb.conf

A seguir temos o arquivo smb.conf que é o arquivo de configuração do SAMBA, por questão didática, colocamos os comentários do comando logo a frente do comando, e todos os parâmetros que estão em negrito devem ser alterados de acordo com a sua configuração. Este arquivo de configuração está configurado para um cenário que tem vários usuários acessando o servidor e tem um compartilhamento chamado "GERAL" para gravar arquivos em comuns. Os profiles dos usuários ficarão no servidor e quando o usuário realizar o login no Windows será executado um script que vai ajustar à hora do computador de acordo com o servidor e fazer o mapeamento do geral.

O arquivo smb.conf a seguir está todo colorido bem carnavalesco, coloquei desta forma para agrupar os parâmetros afim.

[global]

#Abre a seção da configuração Principal.

netbios name = BACULO

#Esta função define o nome da máquina na rede Windows.

workgroup = BACULO.NET

#Define o grupo que a mais vai estar no windows ou o domíno.

server string = Servidor de Arquivos e Autenticao

#Descrição sobre o servidor Samba

name resolve order = lmhosts wins bcast

#Essa opção define a ordem que será utilizado para resolver nome/IP

map to guest = Bad User

#Define que a conta guest vai ser usada na rede (lembre-se de

#liberar o "guest ok =yes" nos compartilhamentos que guest terá

#acesso

guest account = nobody

#Define qual usuário do unix será usando como guest

null passwords = No

#Permite ou não um usuário acessar a conta com a senha em branco.

security = user

#Define que a segurança vai ser por usuário autenticado.

encrypt passwords = Yes

#Samba vai aceitar cryptografia. WinNT 4.0 SP3 e superiores

update encrypted = Yes

 

interfaces = eth0 192.168.10.0/24

#Especifica a interface de rede que o samba vai trabalhar, se forem

#todas as interfaces, comente essa opção. É possível também

#especificar a rede.

passwd chat = *New*password* %n\n *Retype*new*password* %n\n *passwd:*all*authentication*tokens*updated*successfully*

#Habilita alteração de senha pelo windows.

passwd program = /usr/sbin/smbldap-passwd %u

#Programa para alterar a senha

log level = 1

#Habilita o nível de debug

syslog = 1

#Mapeia o log para ser registrado pelo syslog

log file = /var/log/samba/%m.log

#Define que os logs serão feitos por nome da maquina (%m).

printcap name = /etc/printcap

#Define o arquivo de configuração da impressora. Se estiver usando

#cups mude essa opção.

max log size = 100000

#Tamanho máximo do arquivo de log (Kilobytes)

time server = yes

#O samba passa a ser um servidor de Time para as máquinas Windows

os level = 200

#Este parâmetro define o nmbd master da rede. Maior número

local master = Yes

#Define que o servidor poderá se tornar o servidor master da rede

domain master = Yes

#Este parametro trocar o workgroup em um domínio

preferred master = Yes

#Define que o servidor de preferencia na eleição de domínio na rede

domain logons = Yes

#Este parâmetro permite que maquina win9x tenha netlogon no domínio

logon script = logon.vbs

#Define o script que vai ser executado na hora do login.

logon path = \\BACULO\profiles\%U

#Define o local de armazenamento do perfil

logon drive = L:

#Define a letra da únidade do HOME

wins support = Yes

#O Samba passa a ser o servidor Wins da Rede

admin users = "@Domains Admins",root

#Define os usuários/grupos que serão os administradores do domínio

ldap passwd sync = Yes

#Permite que sincronizar a senha do Samba com NT e LM hash, quando

#a senha for alterada pelo windows.

ldap delete dn = No

#Não permitir que o samba apague o usuário. Somente o Gosa faz

#isso.

passdb backend = ldapsam:ldap://localhost

#Configurações do servidor LDAP

ldap admin dn = cn=Manager,dc=trigo

#Define o administrador da base LDAP

ldap suffix = dc=trigo

#Define o suffix da base LDAP

ldap ssl = no

#Define se o LDAP está com SSL ou não

ldap user suffix = ou=people

#Define o suffix que ficarão os usuários

ldap group suffix = ou=groups

#Define o suffix que ficarão os grupos

ldap machine suffix = ou=computers

#Define o suffix que ficarão as contas dos computadores

ldap idmap suffix = ou=Idmap

#Define o suffix que ficarão os idmaps para o winbind

ldap replication sleep = 5000

#Valor em milisegundos

add machine script = /usr/sbin/smbldap-useradd -a -w %m

#Script para criar maquina no LDAP

recycle:exclude = *.tmp *.temp *.o *.obj ~$*

#Define os arquivos que não serão gravados na lixeira

recycle:keeptree = Yes

#Cria diretório dos arquivos deletados, fica mais organizado

recycle:touch = Yes

#Se a data do arquivo eliminado pode ser trocado pela data da

#exclusão. Muito útil para limpar a lixeira

recycle:versions = Yes

#Permite fazer backup de versão de arquivos repetidos

recycle:noversions = *.doc|*.xls|*.ppt|*.dwg|*.dxf|*.txt

#Não faz backup dessas extensões de arquivo

recycle:repository = /home/lixeira/%U

#Local que vai ser armazenado os arquivos deletados

recycle:maxsize = 1000000

#Define em bytes o tamanho máximo de um arquivo que vai encaminhado

#para a lixeira. O valor zero é sem limite.

vfs objects = recycle audit

#Habilita o modulo de lixeira e o sistema de auditoria

default case = lower

#Usa internamente caixa baixa

case sensitive = no

#Desabilita o case sensitive

unix charset = iso8859-1

#Define o charset do UNIX que vai ser mostrada no compartilhamento

display charset = iso8859-1

#Define o charset que irá utizar para imprimir as mensagens, o

#padrão é utizar o valor do "LOCALE", ou você pode definir.

fstype = NFS

 

idmap uid = 10000-15000

#Mapeamento de uid para o idmap winbind

idmap gid = 10000-15000

#Mapeamento de gid para o idmap winbind

nt acl support = Yes

#Habilita o suporte de acl do net. Lembre-se de ativar partição

protocol = NT1

 

announce as = NT Server

#Define o tipo de servidor que vai anunciar o nmbd

announce version = 4.5

#Define a versão do servidor

template shell = /bin/false

#Desabilita o shell, no preenchimento das informações pelo winbnind

set primary group script = /usr/sbin/smbldap-usermod -g "%g" "%u"

#Script que define o grupo principal de cada usuário.

winbind use default domain = no

#Define que não vai usar idmap para os usuários

read raw = Yes

#Habilita pacotes de 65.535 bytes, alguns clientes não conseguem

#suportar essa negociação.

write raw = Yes

#Habilita o raw write quando os dados são transferidos do cliente

Level2 oplocks = yes

#Aumenta o acesso aos arquivos que não são escritos, tais como exe

max xmit = 65535

#Determina o tamanho máximo de um pacote que será negociado pelo

#samba. O valor 65535 é o maior.

dead time = 15

#Valor decimal que representa o número de minuto inativo para

#considerar que a conexão esta morta de desconectar.

getwd cache = Yes

#Essa é uma refinamento na performace. Ativa um algoritmo de

#caching o que reduzir o tempo necessário para getwd().

socket options = IPTOS_LOWDELAY TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 SO_KEEPALIVE=100

#Opção para inicialização do socket

[homes]

#Cria o compartilhamento Home

comment = Diretório Home

#Comentário sobre o compartilhamento

valid users = %S

#usuário que pode acessar o compartilhamento. Apenas o dono (%S)

browseable = no

#Indica que a diretória não aparece ao fazer o network browse

writeable = yes

#Mostra o compartilhamento

printable = no

#Habilita a opção de impressão(impressora) no compartilhamento

read only = no

#Define que o compartilhamento não é somente leitura

available = yes

#Define que o compartilhamento esta disponível.

inherit permissions = yes

#Herda permissão de arquivos e diretório do diretório home

follow symlinks = no

#Desabilita o acesso a links

wide links = no

#Define se os arquivos com links fora do diretório serão acessados

force directory mode = 0771

#Força a permissão dos diretórios

force create mode = 0771

#Força a permissão dos arquivos

force group = administrators

#Força que o grupo seja administradores

create mode = 0771

#Define a permissão que será aplicada ao criar um arquivo

directory mode = 0771

#Define a permissão que será aplicada ao criar um diretório

map archive = yes

#Habilita os mapeados de bits do dos para UNIX quando um arquivo é

#modificado.

map system = no

#Define se o estilo do DOS vai ser mapeado para execução UNIX

map hidden = no

#Define se o estilo do DOS para arquivos ocultos vai ser mapeado

#para UNIX

[Geral]

#Compartilhamento Geral

comment = Area Publica para todos

#Comentário sobre o compartilhamento

path = /home/arquivos/geral

#Caminho do diretório que será utilizado como geral

browseable = Yes

#Indica que a diretória aparece ao fazer o network browse

public = Yes

#Torna o compartilhamento público

[netlogon]

#Compartilhamento que ficarão os script para execução

comment = NetLogon Script

#Comentário sobre o compartilhamento

path=/etc/samba/netlogon

#Diretório que ficarão os scripts

public = no

#Não é um compartilhamento público

browseable = no

#Indica que a diretória não aparece ao fazer o network browse

read only = yes

#Define o compartilhamento como somente leitura

printable = no

#Não habilita a opção de impressão(impressora) no compartilhamento

Level2 oplocks = yes

#Aumenta o acesso aos arquivos que não são escritos, tais como exe

write list = "@Domains Admins"

#Define o grupo que pode escrever no compartilhamento

[profiles]

#Compartilhamento para armazenar os profiles dos usuários

comment = Network User Profiles

#Comentário sobre o compartilhamento

path = /home/profiles

#Diretório que ficarão os profiles

read only = no

#Define que o compartilhamento não é somente leitura

create mask = 0700

#Define a permissão para arquivos criados

directory mask = 0700

#Define a permissão para diretórios criados

Browserable = no

#Indica que a diretória não aparece ao fazer o network browse

 Pegue o arquivo smb.conf limpo.

Após fazer a configuração do arquivo smb.conf, vamos ajustar os compartilhamentos do netlogon e do profile.

  • Netlogon

O compartilhamento netlogon é criado para executar um script na hora do login da máquina na rede. O parâmetro "logon script" do smb.conf define como vai ser o script de logon e o nome. Em nosso caso estamos utilizando apenas um script para todos os usuários, e este script tem o nome de "logon.vbs". Tem caso que é necessário executar um script por usuário ou por grupo.

Crie o arquivo logon.vbs dentro do "/etc/samba/netlogon", se não existir a diretório netlogon, deve ser criado. Lembre-se de criar este arquivo no Windows porque ele é executado no Windows. Se fizer no Linux pode dar algum tipo de erro.

  • /etc/samba/netlogon/logon.vbs

' VBScript.
'WScript.Echo(Mapeando...)
Dim net
Set objShell = CreateObject(Wscript.Shell)
Set net = CreateObject(WScript.Network)
net.MapNetworkDrive g:, \\BACULO\geral, False
objShell.Run net time \\BACULO /set /y, 0, TRUE

 Para o Windows alterar a hora, é preciso alterar o GPO do XP para permitir os usuários altere as datas.

  • Profiles

No compartilhamento profiles ficam todos os perfis dos usuários. Crie o diretório "/home/profiles" caso não exista.

Após essas configurações, é testar os parâmetros do SAMBA e em seguida passar a senha do administrador do LDAP (no nosso exemplo é o cn=mananger,dc=trigo) para o samba.

[root@cabeca]# testparm

 

Se não aparecer nenhum erro, continue.

[root@cabeca]# smbpasswd -w senha_do_manager<br />
  • Lixeira

Para o funcionamento da função lixeira, é preciso criar o diretório /home/lixeira e mudar a permissão para permitir que os arquivos apagados sejam encaminhados para o diretório definido.

[root@cabeca]# mkdir /home/lixeira 
[root@cabeca]# chmod 777 /home/lixeira

 Os usuários não terão acesso diretamente aos arquivos apagados.

  • Auditoria

Para ativar o sistema de auditoria nas pastas, é necessário acrescentar a seguinte entrada no /etc/syslog.conf.

.*;user.!warn;authpriv.none;cron.none;mail.none;news.none   /var/log/samba/audit.log

 

Crie o arquivo /var/log/samba/audit.log. Neste arquivo que ficarão os logs da auditoria nas pastas.

[root@cabeca]# touch /var/log/samba/audit.log

 Agora podemos iniciar o samba.

[root@cabeca]# /etc/init.d/samba restart

 5. Adicionando Windows no domínio Samba

Com todas as configurações prontas, vamos colocar uma maquina no domínio e fazer os testes. Com o arquivo smb.conf acima foi possível fazer alteração de senha pelo Windows , recuperar arquivos apagados através da lixeira, armazenar o perfil dos usuários no servidor.

A figura 10 mostra o Windows XP entrando no domínio. A conta da máquina é criada automaticamente na base LDAP.

Figura 10 – Windows entrando no domínio

Com a máquina no domínio, os usuários cadastrados na LDAP podem fazer login e o mapeamento da unidade home e do compartilhamento Geral devem ser feitos. A sincronização da hora com o servidor também deve ser feito no login.

  • Mapeamento

    Figura 11 – Mapeamento

Agora temos um servidor de autenticação completo.

Migração de usuário para o GOsa

clodonil March 12th, 2009

Já faz algum tempo que não escrevo algo neste blog, o tempo esta correndo muito rápido. Mas devido alguns pedido por e-mail estou escrevendo sobre a migração de usuários para a ferramenta GOsa.

Este é um assunto que mais cedo ou mais tarde todos temos que passar. Após a instalação da infraestrutura com o  OpenLDAP , SAMBA, GOsa e outras ferramentas de integração, temos que criar os usuários.

Normalmente programamos uma estrutura assim em um ambiente que já existem os usuários e, portanto precisamos migrar esses usuários para o LDAP e que sejam visível na ferramenta GOsa.

O processo de migração é fácil. Precisamos basicamente criar um arquivo LDIF com um padrão de registro que vamos utilizar. Como exemplo, utilizarei um usuário que faz autenticação no samba e no proxy squid.

Para este caso precisamos manter duas variáveis sobre controle para não repetir os seus valores. A primeira variável é o uidnumber e a outra é o SID do samba.

No caso do uidNumber podemos pesquisar na base LDAP todos os uidNumber, verificar o maior e incrementar para o próximo usuário. Para realizar esse processo utilizamos o seguintes comando no bash.

 

id_tmp=`ldapsearch -LL -x -b "dc=base,dc=ldap" uidNumber | grep uidNumber | sort -n | tail -1 | awk '{print $2}'`

 

Com o comando acima, obtemos o maior uidNumber cadastrado na base LDAP. E o comando abaixo incrementa o idNumber encontrado de mais um (+1).

 

id=`expr $id_tmp + 1`

 

Com a variável SID o procedimento e o mesmo. O formato do SID é este S-1-5-21-3427200827-1333373418-835043165-8990, e o incremento é feito nos quatro últimos números. Para fazer isso podemos utilizar os seguintes comandos bash.

 

sid_tmp=`ldapsearch -LL -x -b "ou=users,dc=nucleo,dc=unasp" sambaSID | grep sambaSID | sort -n | tail -1 |awk '{print $2}'`
sid_p1=`echo $sid_tmp | cut -d - -f 1,2,3,4,5,6,7`
sid_p2=`echo $sid_tmp | cut -d - -f 8`
sid_p3=`expr $sid_p2 + 2`
sid="$sid_p1-$sid_p3"

 

Com o comando acima,  pegamos o último SID cadastrado na base LDAP e incrementamos os últimos 4 números.

Basicamente esses são os principais elementos de dificuldade para fazermos a migração. O próximo passo é definir o arquivo que lista todos os usuários que serão migrados para a base LDAP.

Segue um exemplo deste arquivo, lembre-se de fazer os ajustes para se adequar a sua realidade.

login:Primeiro Nome:SobreNome:Unidade:descrição:departamento:sala:email:telefone

Perceba que o arquivo limita os campos com o separador (: dois ponos). O programa deve ler essas variáveis da seguinte forma:

login=`echo $line | cut -d : -f 1`
p_nome=`echo $line | cut -d : -f 2`
u_nome=`echo $line | cut -d : -f 3`
unidade=`echo $line | cut -d : -f 4`
descricao=`echo $line | cut -d : -f 5`
departamento=`echo $line | cut -d : -f 6`
email=`echo $line | cut -d : -f 7`
tel=`echo $line | cut -d : -f 8`

Esses campos são gravados nos seguintes atributos na base LDAP.

Script

Atributo LDAP

Login

Uid

Descricao

Ou

Departamento

departmentNumber

Tel

TelephoneNumber

O

Unidade

Email

HomePostalAddress

Login

Uid

Sid

SambaSID

Ao executar o script é necessário passar como parâmetro o arquivo que contêm a lista de todos os usuários.

[root@cabeca]# ./migracao list_usuario

O link abaixo tem o script completo. 

GOsa 2.5.x – Administração do LDAP

clodonil September 16th, 2008

GOsa é um fabuloso administrador de contas LDAP. Com ele é possível administrar usuários, grupos e serviços. Algumas das características do GOsa:

  • Interface simples;
  • Criação de grupos
  • Criação de Usuários para vários ambientes;
  • Backup;
  • Criação de templates;
  • Configuração de vários serviços (DNS,FTP,etc)

Nas próximos linhas estarei mostrando como instalar essa ferramenta no Linux Ubuntu-Server. A utilização é por sua conta.

Como pré-requisito instale o servidor apache e o php5.

 

[root@cabeca]# apt-get install apache2 php5

 

A primeira parte é instalar e configuração o OpenLDAP; o comando a seguir faz a instalação do LDAP.

 

[root@cabeca]# apt-get install slapd ldap-utils

 

Após a instação vamos partir para configuração.Em algumas distribuições, o LDAP está utilizando a configuração online, e por isso não existe o arquivo slapd.conf. Para utilizar o arquivo slapd.conf, delete a pasta slapd.d que encontra-se dentro do diretório /etc/ldap e altere a diretiva do SLAPD_CONF do arquivo /etc/default/slapd para SLAPD_CONF=/etc/ldap/slapd.conf.

Feito isso, o próximo passo é criar o arquivo slapd.conf dentro do diretório /etc/ldap. A segui tem um exemplo de configuração, os arquivos de schema estão no pacote do Gosa dentro do diretório contrib/openldap. Altere de acordo com as suas necessidades.

include         /etc/ldap/schema/core.schema
include         /etc/ldap/schema/cosine.schema
include         /etc/ldap/schema/inetorgperson.schema
include         /etc/ldap/schema/openldap.schema
include         /etc/ldap/schema/nis.schema
include         /etc/ldap/schema/misc.schema
include         /etc/ldap/schema/samba.schema
include         /etc/ldap/schema/pureftpd.schema
include         /etc/ldap/schema/gofon.schema
include         /etc/ldap/schema/gosystem.schema
include         /etc/ldap/schema/goto.schema
include         /etc/ldap/schema/samba3.schema
include         /etc/ldap/schema/gosa+samba3.schema
include         /etc/ldap/schema/gofax.schema
include         /etc/ldap/schema/goserver.schema
include         /etc/ldap/schema/goto-mime.schema
include         /etc/ldap/schema/dhcp.schema
include         /etc/ldap/schema/dnszone.schema
 
password-hash           {CRYPT}
defaultsearchbase       dc=trigo
 
pidfile  /var/run/slapd/slapd.pid
argsfile /var/run/slapd/slapd.args
 
 
loglevel        1024
 
#Cara os modulos
modulepath      /usr/lib/ldap
moduleload      back_hdb
moduleload      back_monitor
access to dn.base=
        by * read
 
access to dn.subtree=cn=Monitor
        by * read
 
access to attrs=userPassword,sambaPwdLastSet,sambaPwdMustChange,\
                sambaPwdCanChange,shadowMax,shadowExpire
        by dn.regex=uid=[^/]+/admin\+(realm=TRIGO) write
        by anonymous auth
        by self write
        by * none
 
access to attrs=goImapPassword
        by dn.regex=uid=[^/]+/admin\+(realm=TRIGO) write
        by * none
access to attrs=goKrbPassword
        by dn.regex=uid=[^/]+/admin\+(realm=TRIGO) write
        by * none
access to attrs=goFaxPassword
        by dn.regex=uid=[^/]+/admin\+(realm=TRIGO) write
        by * none
 
access to attrs=gotoLastUser
        by * write
 
access to attrs=sambaLmPassword,sambaNtPassword
        by dn.regex=uid=[^/]+/admin\+(realm=TRIGO)write
        by anonymous auth
        by self write
        by * none
 
access to *
        by dn.regex=uid=[^/]+/admin\+(realm=TRIGO)=wrscx
        by * read
 
# Monitor backend
database        monitor
database        hdb
cachesize 5000
mode              0600
 
suffix          dc=trigo
checkpoint      512 720
 
rootdn  cn=manager,dc=trigo
rootpw  x
 
# Indexing
index   default                                                 sub
index   uid,mail                                                eq
index   gosaMailAlternateAddress,gosaMailForwardingAddress      eq
index   cn,sn,givenName,ou                                      pres,eq,sub
index   objectClass                                             pres,eq
index   uidNumber,gidNumber,memberuid,macAddress                eq
index   gosaSubtreeACL,gosaObject,gosaUser                      pres,eq
 
# Indexing for Samba 3
index   sambaSID                                                eq
index   sambaPrimaryGroupSID                                    eq
index   sambaDomainName                                         eq
 
# Indexing for DNS/DHCP
index  zoneName                                                eq
index  relativeDomainName                                      eq
index   dhcpHWAddress                                          eq
index   dhcpClassData                                          eq
index   dhcpPrimaryDN                                          eq
index   dhcpSecondaryDN                                        eq
 
directory       /var/lib/ldap
lastmod on
Inicie o servidor LDAP em modo debug para verificar se existe algum erro, se existir, o erro e a linha que contém o erro será mostrado.
[root@localhost]# slapd -d 123 -u openldap
Se nenhum erro for apresentado, inicio o servidor LDAP normalmente.
 
[root@localhost]# slapd -d 123 -u openldap
 
O Próximo passo é criar a estrutura base do LDAP. Para isso crie um arquivo chamado base.ldif. O conteúdo deste arquivo está logo a seguir. Altere de acordo com as suas configurações.
dn: dc=trigo
objectClass: top
objectClass: dcObject
objectClass: organization
dc: trigo
o: Clodonil Trigo
Ao terminar de editar o arquivo, é preciso enviar essas informações do arquivo LDIF para a base LDAP. O comando ldapadd faz isso, altere o comando abaixo de acordo com as suas configurações.
 
[root@cabeca]# ldapadd -f base.ldif -x -D cn=manager,dc=trigo -W
 
Com a base LDAP pronta, vamos para a configuração do GOsa. Primeiramente é preciso fazer o download do pacote, que pode ser feito através do site http://oss.gonicus.de/pub/gosa/.

 2. Crie os seguintes diretórios:

  • /usr/share/gosa
  • /var/spool/gosa (Coloque o usuário do apache como dono deste diretório)
  • /etc/gosa

3.  Descompacte dentro do diretório /usr/share/gosa

 

[root@cabeca]# tar -xzvf gosa-2.5.17.tar.gz -C /usr/share/gosa

 

4.  Adicione as seguintes linhas no apache configurado.

#Crie um Alias
Alias /gosa /usr/share/gosa/html

5. Instale os módulos do PHP

  • Suporte ao LDAP (php5-ldap)
  • Suporte ao Mshash (php5-mhash)
  • Suporte ao IMAP (php5-imap)
  • Suporte ao Mysql(php5-mysql)
  • fping
  • libcrypt-smbhash-perl

Altere as seguintes linhas no php.ini, deixando conforme o exemplo abaixo:

register_globals = Off
session.gc_maxlifetime = 86400
session.auto_start = Off
memory_limit = 32M
implicit_flush = Off
max_execution_time = 30
expose_php = Off
magic_quotes_gpc = On
zend.ze1_compatibility_mode = Off

5. Acesse o browser e termine a instalação;utilize as telas abaixo para se guiar (não esqueça de reiniciar o apache). Ao iniciar o browser chame o endereço do servidor apache (http://ip-do-servidor/gosa). A primeira tela que deverá aparecer é a tela1. Nesta tela podemos destacar como característica a preocupação dos criadores do GOsa com a segurança. Para dar prosseguimento na instalação é necessário copiar a chave especifica e colocar no /tmp.

 

Figura 1 – Inicio da Instalação

 Na segunda tela o usuário terá a opção de escolher o idioma que desejar usar. Não existe em português. A Seguinte, expressa a licença de uso do software. A tela seguinte,é uma checagem dos pré-requisitos, como mostra a figura 2. Todas as opções requeridas devem ser atendidas. Nos pré-requisitos que descrevi anteriormente, estes itens já são instalados. Na figura está dando erro no kerberos, SNMP e CUPS. São três pacotes que não estarão disponível no GOsa.

Figura 2 – Pré-requísitos

A tela seguinte também é um método de checagem de arquivos schema. Caso apareça algum erro, deve ser resolvido antes de continuar a instalação. Na seguinte, o usuário tem que configurar a conexão com o servidor LDAP. Defina um usuário que tenha permissão de administrador na base LDAP, como mostra a figura 3. Coloque a base definido no slapd.conf como o suffix e o administrador definido no rootdn do mesmo arquivo. No exemplo que coloquei no slapd.conf, ficaria BASE=dc=trigo e Admin DN  cn=manager,dc=trigo.

Figura 3 – Configuração do LDAP

Nas telas seguintes, são definidas o timezone e os aditivos de serviços que o GOsa vai suportar, tais como DNS, DHCP, entre outros. Nas telas seguintes é necessário definir as entradas de usuário e grupos, além da criptografia utiliza. Também é necessário configurar as principais funcionalidades do GOsa tais como, sessão, debug e gid, como mostra a figura 3. A estrutura de armazenamento de usuários e grupos são definido nesta tela, na opção "People store subtree" se colocar "ou=users", significa que todos os usuários serão cadastrados dentro desta unidade. O mais comum é colocar "ou=people", mas é só questão de nomenclatura. Grave a opção deste parâmetro, porque vai ser requirido nas configurações dos outros serviços. 

A tela seguinte é muito importante. O GOsa reorganiza todas os objetos cadastrados na base LDAP. É também cadastra o usuário  administrador do GOsa. Não confunda com o administrador da base LDAP.

As últimas estão relacionada ao arquivo de configuração. Este arquivo deve ser copiado para o diretório /etc/gosa e as permissões devem ser configuradas conforme solicitado na instalação. As duas telas seguintes mostram a tela de login e o gerenciamento da base LDAP.

Ambiente de gerenciamento dos usuário.

Pronto, você tem um poderoso gerenciador de usuário e grupos. Começe a criar os usuários.

Next »