Atualizando o Samba 4 (Active Directory) para versão recente

Publicado por Fagner Silva do Nascimento em 17/03/2014

[ Hits: 22.562 ]

 


Atualizando o Samba 4 (Active Directory) para versão recente



Aproveitando um comentário deixado em um de meus posts, no qual foi dito sobre o que seria um defeito do Samba 4 compilado, venho agora trazer uma solução simples e funcional, para quem já tem o Samba 4 em produção e deseja atualizá-lo para as versões recentes.

Mãos à obra!

Obter uma versão atual do Samba: eu vou pegar a versão estável em 19/12/2013, a 4.1.3.

Vou levar em consideração, que foi utilizado a versão compilada do Samba, não um binário de um repositório.

Eu vou fazer uma atualização da versão 4.0.9 para a 4.1.3:

# cd /usr/src && wget -c http://ftp.samba.org/pub/samba/stable/samba-4.1.5.tar.gz

Vamos desempacotar o Samba:

# tar -xzvf samba-4.1.3.tar.gz

Acesse os fontes do Samba:

# cd /usr/src/samba-4.1.3

Mande checar os pré-requisitos:

# ./configure --enable-debug --enable-selftest

Vamos compilar ele:

# make

Pare o Samba:

Obs.: se estiver utilizando com o bind_dlz ou bind_flat e ntp, precisamos pará-los também.

Se for Debian:

# /etc/init.d/samba stop
# /etc/init.d/bind9 stop
# /etc/init.d/ntp stop


Se for padrão Red Hat/CentOS:

# /etc/init.d/samba stop
# /etc/init.d/named stop
# /etc/init.d/ntpd stop


Fazer um backup da base do Samba:

Vou levar em consideração que o provisionamento do seu Samba, está em /usr/local/samba:

# tar -cJvf /srv/samba.tar.xz /usr/local/samba

Instalar o Samba 4.1.3:

# cd /usr/src/samba-4.1.3 && make install

Fazer algumas checagens e correções da base de dados do Samba:

# samba-tool dbcheck --cross-ncs --fix --yes
# samba-tool dbcheck --reindex
# samba-tool dbcheck --reset-well-known-acls --fix --yes
# samba-tool dbcheck --force-modules


Ajustar as ACLs do sysvol:

# samba-tool ntacl sysvolreset

Ajustar as permissões dos diretório, caso esteja utilizando bind_dlz ou bind_flat:

Para Debian, devemos fazer da seguinte forma:

# chown -R root:bind /usr/local/samba/private
# chmod -R 750 /usr/local/samba/private
# chmod 640 /usr/local/samba/private/named.conf
# chmod 640 /usr/local/samba/private/dns.keytab
# chmod 770 -R /usr/local/samba/private/dns
# chmod -R 700 /usr/local/samba/private/smbd.tmp
# chmod -R 0600 /usr/local/samba/private/tls/


Para Red Hat/CentOS, devemos fazer da seguinte forma:

# chown -R root:named /usr/local/samba/private
# chmod -R 750 /usr/local/samba/private
# chmod 640 /usr/local/samba/private/named.conf
# chmod 640 /usr/local/samba/private/dns.keytab
# chmod 770 -R /usr/local/samba/private/dns
# chmod -R 700 /usr/local/samba/private/smbd.tmp
# chmod -R 0600 /usr/local/samba/private/tls/


Subir os serviços novamente:

Se for Debian:

# /etc/init.d/samba start
# /etc/init.d/bind9 start
# /etc/init.d/ntp start


Se for Red Hat/CentOS:

# /etc/init.d/samba start
# /etc/init.d/named start
# /etc/init.d/ntpd start


Atualizar os registros de DNS, caso esteja utilizando o bind_dlz ou bind_flat:

# samba_dnsupdate --verbose --all-names

Verificar se o Samba está funcionando:

# ps aux | egrep samba

Deve retornar:

root            5352    0.0    2.1  512128  44496  ?                Ss      09:02      0:00  /usr/local/samba/sbin/samba  -D
root            5370    0.0    1.5  512128  32268  ?                S        09:02      0:00  /usr/local/samba/sbin/samba  -D
root            5371    0.0    1.8  516720  38468  ?                S        09:02      0:00  /usr/local/samba/sbin/samba  -D
root            5372    0.0    1.6  516280  34716  ?                S        09:02      0:00  /usr/local/samba/sbin/samba  -D
root            5373    0.0    2.2  473624  46256  ?                Ss      09:02      0:00  /usr/local/samba/sbin/smbd  -D  --option=server  role  check:inhibit=yes  --foreground
root            5374    0.0    1.5  512128  32128  ?                S        09:02      0:00  /usr/local/samba/sbin/samba  -D
root            5375    0.0    1.8  512548  37140  ?                S        09:02      0:00  /usr/local/samba/sbin/samba  -D
root            5376    0.0    1.6  512128  34048  ?                S        09:02      0:00  /usr/local/samba/sbin/samba  -D
root            5377    0.0    1.7  516280  36792  ?                S        09:02      0:00  /usr/local/samba/sbin/samba  -D
root            5378    0.0    1.6  512128  33784  ?                S        09:02      0:00  /usr/local/samba/sbin/samba  -D
root            5379    0.0    1.6  514956  33616  ?                S        09:02      0:00  /usr/local/samba/sbin/samba  -D
root            5380    0.0    1.6  512128  33424  ?                S        09:02      0:00  /usr/local/samba/sbin/samba  -D
root            5381    0.0    1.9  512128  40688  ?                S        09:02      0:00  /usr/local/samba/sbin/samba  -D
root            5382    0.0    1.6  512128  33328  ?                S        09:02      0:00  /usr/local/samba/sbin/samba  -D
root            5385    0.0    1.5  473632  32676  ?                S        09:02      0:00  /usr/local/samba/sbin/smbd  -D  --option=server  role  check:inhibit=yes  --foreground
root            5586  54.0    2.6  480996  54956  ?                S        09:22      0:00  python  /usr/local/samba/sbin/samba_dnsupdate
root            5589    0.0    0.0      8084      896  pts/0        S+      09:22      0:00  egrep  --color=auto  samba


Como podemos notar, o serviço está funcionando.

Verificar a versão do nosso Samba:

# smbclient --version
Version  4.1.3

Verificar se os compartilhamentos estão funcionando:

# smbclient -L localhost -U%
Domain=[LAB]  OS=[Unix]  Server=[Samba  4.1.3]

        Sharename              Type             Comment
        ---------              ----             -------
        netlogon                 Disk
        sysvol                    Disk
        profiles                Disk
        IPC$                         IPC              IPC  Service  (Samba  4.1.3)
Domain=[LAB]  OS=[Unix]  Server=[Samba  4.1.3]

      Server                               Comment
        ---------                         -------

       Workgroup                         Master
        ---------                         -------


Consultar se a relação de confiança está acontecendo tudo OK:

# wbinfo -t
checking  the  trust  secret  for  domain  LAB  via  RPC  calls  succeeded

Consultar os usuários:

# wbinfo -u
Administrator
Guest
krbtgt
dns-samba
douglas.santos


Listar os grupos:

# wbinfo -g
Enterprise  Read-Only  Domain  Controllers
Domain  Admins
Domain  Users
Domain  Guests
Domain  Computers
Domain  Controllers
Schema  Admins
Enterprise  Admins
Group  Policy  Creator  Owners
Read-Only  Domain  Controllers
DnsUpdateProxy
ti-admin



Prontinho. Samba atualizado!

Outras dicas deste autor

Abrindo portas do Firewall (IPtables) para Samba 4 (Active Directory)

OCS Inventory no CentOS 6.5 - Para inventário de rede

Instalando e promovendo o Samba 4 como Domain Controller no CentOS 6.4 Minimal

Sarg no CentOS 6 - Configuração com suporte a gráficos

Migrando contatos e e-mails do Google Apps para servidor Zimbra

Leitura recomendada

27 e 28/10 - III Fórum Goiano de Software Livre

Como recuperar arquivos apagados no Debian usando o foremost

Redirecionamento de portas com socat

Instalação do MetaTrader 5 em Linux Mint - Robots Localização - Vídeo Nr 21

Recuperando senha do root - Slackware

  

Comentários
[1] Comentário enviado por serafim.fabio em 19/03/2014 - 18:05h

Muito legal seu tutorial parabens

[2] Comentário enviado por igmotta em 23/02/2015 - 10:56h

Obrigado pelo artigo.

Você já passou por isso após atualizar o samba 4?

root@SERVER-AD:~/samba-4.1.17# /usr/local/samba/bin/samba-tool dbcheck --cross-ncs --fix --yes
ERROR(<type 'exceptions.ValueError'>): uncaught exception - unable to parse dn string
File "/usr/local/samba/lib/python2.7/site-packages/samba/netcmd/__init__.py", line 175, in _run
return self.run(*args, **kwargs)
File "/usr/local/samba/lib/python2.7/site-packages/samba/netcmd/dbcheck.py", line 120, in run
reset_well_known_acls=reset_well_known_acls)
File "/usr/local/samba/lib/python2.7/site-packages/samba/dbchecker.py", line 74, in __init__
self.infrastructure_dn = ldb.Dn(samdb, "CN=Infrastructure," + samdb.domain_dn())

Se puder ajudar lhe agradeço, pois já tentei atualizar outras vezes e deu erro e tive de refazer o AD.

Obrigado.

[3] Comentário enviado por rengaf1 em 23/02/2015 - 21:59h


[2] Comentário enviado por igmotta em 23/02/2015 - 10:56h

Obrigado pelo artigo.

Você já passou por isso após atualizar o samba 4?

root@SERVER-AD:~/samba-4.1.17# /usr/local/samba/bin/samba-tool dbcheck --cross-ncs --fix --yes
ERROR(&lt;type 'exceptions.ValueError'&gt;): uncaught exception - unable to parse dn string
File "/usr/local/samba/lib/python2.7/site-packages/samba/netcmd/__init__.py", line 175, in _run
return self.run(*args, **kwargs)
File "/usr/local/samba/lib/python2.7/site-packages/samba/netcmd/dbcheck.py", line 120, in run
reset_well_known_acls=reset_well_known_acls)
File "/usr/local/samba/lib/python2.7/site-packages/samba/dbchecker.py", line 74, in __init__
self.infrastructure_dn = ldb.Dn(samdb, "CN=Infrastructure," + samdb.domain_dn())

Se puder ajudar lhe agradeço, pois já tentei atualizar outras vezes e deu erro e tive de refazer o AD.

Obrigado.



Boa noite Igor.. desculpe a demora...

Mais vamos lá.. tu ta fazendo o upgrade de versão exatamente do samba ?

as mudanças são bem grandes de uma versão 4.0... por exemplo ... para a 4.1.... então pra dar certo terá que fazer versão por versão 4.0.1 para a 4.0.2 e assim por diante até chegar na versão mais atual.

qualquer duvida estamos aí.

[4] Comentário enviado por igmotta em 25/02/2015 - 09:47h


Valeu amigo por responder.
Estou atualizando a versão 4.1.16 para a versão 4.1.17.
Fiz essa atualização nesse cliente devido o fato de ser uma instalação limpa, sem nada da base de dados do samba, pois o unico usuário é administrator.
Quero atualizar de outros clientes, mas já passei por caso de ter de refazer todo AD.

[5] Comentário enviado por wagneralves em 20/09/2015 - 19:27h


Show de bola, fiz até downgrade e funcionou.

[6] Comentário enviado por vitok4 em 13/01/2016 - 16:00h

Muito bom!, consegui fazer a instalação em um Lab virtual perfeitamente, porém, na hora de criar GPO's para desativar a complexidade das senhas, não obtenho sucesso, tenho que desativar para todos por linha de comando. Alguém teria sugestão do que fazer?

[7] Comentário enviado por rengaf1 em 06/06/2016 - 17:59h


[6] Comentário enviado por vitok4 em 13/01/2016 - 16:00h

Muito bom!, consegui fazer a instalação em um Lab virtual perfeitamente, porém, na hora de criar GPO's para desativar a complexidade das senhas, não obtenho sucesso, tenho que desativar para todos por linha de comando. Alguém teria sugestão do que fazer?


boa tarde vitok4 desculpe a demora em responder.. muito corrido aqui . mas segue abaixo os comandos

Desativar a verificação de complexidade de senha (por padrão a senha de qualquer usuário deve ter pelo menos três dos quatro ítens: Maiúsculas, Minusculas, Números, Simbolos):
# /usr/local/samba/bin/samba-tool domain passwordsettings set --complexity=off
Mudar o tamanho mínimo da senha (definindo como 4):
# /usr/local/samba/bin/samba-tool domain passwordsettings set --min-pwd-length=4
Mudar o prazo mínimo em que o usuário pode mudar a senha (usuário só vai poder mudar a senha após 4 dias da última mudança)
# /usr/local/samba/bin/samba-tool domain passwordsettings set --min-pwd-age=4
Mudar o tempo de vida máximo da senha do usuário (usuário terá que mudar a senha após 30 dias da última mudança)
# /usr/local/samba/bin/samba-tool domain passwordsettings set --max-pwd-age=30
Mudar o histórico de senhas que impede que o usuário utilize uma senha repetida (usuário não vai poder repetir nenhuma das últimas 5 senhas)
# /usr/local/samba/bin/samba-tool domain passwordsettings set --history-length=5



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts