Salve pessoal, estou reescrevendo alguns posts relacionados com o Samba 4 e desta vez, como prometido irei fazer a instalação do Samba 4 no CentOS 7 mas desta vez o mesmo será compilado.
Para esse Post preciso apenas de uma instalação mínima do CentOS 7, e no máximo o servidor SSH. Vamos ao nosso ambiente.
Configuração do Servidor Samba:
Hostname: cntsmbdc01
Tipo do Servidor (Role): Domain Controler
Endereço IP: 192.168.221.10/24
Domínio: empresa.net
Configuração Cliente DNS: Forwarding (IP: 192.168.221.2)
Default Gateway: 192.168.221.2
Verificar os atributos de sistema de arquivos:
# tune2fs -l /dev/sda1 | grep 'mount options'
Os opções de montagem ´acl,user_xattr´ devem estar ativos, caso não estejam usar o comando abaixo.
# tune2fs -o acl,user_xattr /dev/sda1
Obs.: Por padrão a instalação do CentOS utiliza o XFS como sistema de arquivos padrão e esse procedimento só pode ser aplicado a sistemas de arquivos ext3 e ext4.
Para remontar
# mount -o remount /
Vamos criar um mapeamento estático para o nosso servidor:
# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.221.10 cntsmbdc01.empresa.net cntsmbdc01
Instalar os pacotes necessários a compilação do Samba 4 e alguns outros pacotes.
# yum install perl gcc attr libacl-devel libblkid-devel gnutls-devel readline-devel python-devel gdb pkgconfig krb5-workstation zlib-devel setroubleshoot-server libaio-devel setroubleshoot-plugins policycoreutils-python libsemanage-python perl-ExtUtils-MakeMaker perl-Parse-Yapp perl-Test-Base popt-devel libxml2-devel libattr-devel keyutils-libs-devel cups-devel bind-utils libxslt docbook-style-xsl openldap-devel autoconf python-crypto pam-devel ntp wget vim
Vamos realizar alguns ajustes no servidor de hora NTP (adicione no final do arquivo)
# vi /etc/ntp.conf
# Relogio Local server 127.127.1.0 fudge 127.127.1.0 stratum 10 # Configurações adicionais para o Samba 4 ntpsigndsocket /var/lib/samba/ntp_signd/ restrict default mssntp
Vamos reiniciar o servidor NTP
# systemctl restart ntpd
Testando
# ntpq -p
Vamos fazer o download do código fonte (Estável) do Samba 4
# cd /usr/src
# wget https://ftp.samba.org/pub/samba/samba-4.4.16.tar.gz
# tar -xzvf samba-4.4.16.tar.gz
# cd samba-4.4.16
Vamos gerar o Makefile e verificar se não há nenhuma dependência faltando e alguns ajustes extras
# ./configure --prefix /usr --enable-fhs --enable-cups --sysconfdir=/etc --localstatedir=/var --with-privatedir=/var/lib/samba/private --with-piddir=/var/run/samba --with-automount --datadir=/usr/share --with-lockdir=/var/run/samba --with-statedir=/var/lib/samba --with-cachedir=/var/cache/samba --with-systemd
Vamos compilar o Samba 4 (Dá tempo de tomar um café rsrs)
# make
Vamos a instalação dos arquivos, comandos, e bibliotecas nos seus respectivos diretórios
# make install
Vamos atualizar o cache de bibliotecas dinâmicas
# ldconfig
Antes de provisionar nosso samba vamos remover o conf do krb5, o mesmo atrapalha o provisionamento.
# mv /etc/krb5.conf /etc/krb5.conf.ori
E agora o Provisionamento do nosso Samba 4
# samba-tool domain provision --use-rfc2307 --interactive
Preencha os campos conforme a sua necessidade, neste caso pressionei ENTER e aceitei o valor padrão. A senha deve ser preenchida com o mínimo de 8 caracteres e deve conter letras (maiúscula/minúscula), números e caracteres de pontuação devido ao complexidade de senha estar ativa.
# cp /var/lib/samba/private/krb5.conf /etc
Criando uma Unit para o Samba no SystemD
# vim /lib/systemd/system/samba-ad-dc.service
[Unit] Description=Samba4 AD DC After=network.target remote-fs.target nss-lookup.target [Service] Type=forking LimitNOFILE=16384 ExecStart=/usr/sbin/samba -D ExecReload=/usr/bin/kill -HUP $MAINPID PIDFile=/var/run/samba/samba.pid [Install] WantedBy=multi-user.target
Vamos reiniciar o daemon do SystemD
# systemctl daemon-reload
Vamos habilitar o Samba 4 que seja carregado na inicialização do sistema.
# systemctl enable samba-ad-dc
E finalmente vamos iniciar o Samba 4
# systemctl start samba-ad-dc
Vamos atualizar o resolv.conf, mas ele não pode ser editado manualmente então siga esta instrução para ajustar as configurações.
Utilize o utilitário nmtui e modifique ou acrescente o IP do DNS para apontar o nosso endereço (192.168.221.10) e o domínio de busca.
# nmtui
Após a modificação vamos reiniciar o serviço de rede
# systemctl restart network
Ainda temos um pequeno ajuste de permissão para o servidor NTP acessar o socket do Samba 4
# chown root:ntp /var/lib/samba/ntp_signd/
Feito o ajuste vamos reiniciar o servidor NTP
# systemctl restart ntpd
Vamos testar, e verificar se o serviço está ok.
Começando pelo DNS
# host -t A empresa.net empresa.net has address 192.168.221.10
# host -t SRV _kerberos._udp.empresa.net _kerberos._udp.empresa.net has SRV record 0 100 88 cntsmbdc01.empresa.net.
# host -t SRV _ldap._tcp.empresa.net _ldap._tcp.empresa.net has SRV record 0 100 389 cntsmbdc01.empresa.net.
Algumas consultas externas:
# host mundotibrasil.com.br mundotibrasil.com.br has address 193.34.144.172 mundotibrasil.com.br has IPv6 address 2a02:c205:2004:8003::1
# host -t MX centos.org centos.org mail is handled by 20 mail2.centos.org. centos.org mail is handled by 10 mail.centos.org.
Pronto, nosso servidor DNS resolve endereços locais e encaminha os externos sem problema e com os registros SRV _kerberos e _ldap validados podemos seguir com o teste do mecanismo de autenticação Kerberos.
Para tal, faça:
# kinit administrator@EMPRESA.NET Password for administrator@EMPRESA.NET: Warning: Your password will expire in 41 days on Ter 12 Jul 2016 14:54:19 BRT
# klist Ticket cache: FILE:/tmp/krb5cc_0 Default principal: administrator@EMPRESA.NET Valid starting Expires Service principal 31-05-2016 16:43:45 01-06-2016 02:43:45 krbtgt/EMPRESA.NET@EMPRESA.NET renew until 01-06-2016 16:43:38
Nosso servidor CentOS 7 está com o Samba 4 instalado, configurado, e provisionado. Espero que tenham gostado desse Post. Até o próximo.
Fonte: https://wiki.samba.org/index.php/Setup_a_Samba_Active_Directory_Domain_Controller
Fonte: https://wiki.samba.org/index.php/Time_synchronisation
Fonte: https://wiki.samba.org/index.php/Operating_system_requirements/Dependencies_-_Libraries_and_programs
Parabéns pelo tutorial…
Por favor você poderia fazer algum tutorial que pudesse exemplificar a configuração de um servidor de arquivos pós instalação do SAMBA4?
Tenho 3 HDs sendo um para sistema e dois em RAID criado pelo rsat no Opensuse
Eu tenho algumas duvidas como esta:
Como configurar o FSTAB de forma que eu deva mostrar qual partição deverá ser utilizada para armazenar as pastas e compartilhamento na rede?
É melhor criar as pastas diretamente no /home ou em uma partição separada?
Em relação a criação dos grupos e usuários eu devo cria-los no /home também?
Quais seriam as melhores práticas para gerenciamento destes servidor de arquivos?
muito brigado.
Ricardo, segui corretamente o seu tutorial mas apresenta erro quando executo o kinit:
[root@smbdc01 ~]# kinit administrator@lab.lc
Password for administrator@lab.lc:
kinit: KDC reply did not match expectations while getting initial credentials
smbdc01 ~]# klist
klist: Credentials cache file ‘/tmp/krb5cc_0’ not found
Outra coisa…
Os comandos que passou no inicio só rodam em FS EXT e não no default da instalacao do centos 7 (xfs)
tune2fs -l /dev/sda1 | grep ‘mount options’
[root@smbdc01 ~]# tune2fs -l /dev/sda1 | grep ‘mount options’
tune2fs: Bad magic number in super-block while trying to open /dev/sda1
Couldn’t find valid filesystem superblock.
Tem que utilizar o dominio com letras maiusculas.
Aqui dá o seguinte erro ao prover:
ERROR(ldb): uncaught exception – operations error at ../source4/dsdb/samdb/ldb_modules/password_hash.c:2816
File “/usr/lib64/python2.7/site-packages/samba/netcmd/__init__.py”, line 176, in _run
return self.run(*args, **kwargs)
File “/usr/lib64/python2.7/site-packages/samba/netcmd/domain.py”, line 462, in run
nosync=ldap_backend_nosync, ldap_dryrun_mode=ldap_dryrun_mode)
File “/usr/lib64/python2.7/site-packages/samba/provision/__init__.py”, line 2175, in provision
skip_sysvolacl=skip_sysvolacl)
File “/usr/lib64/python2.7/site-packages/samba/provision/__init__.py”, line 1787, in provision_fill
next_rid=next_rid, dc_rid=dc_rid)
File “/usr/lib64/python2.7/site-packages/samba/provision/__init__.py”, line 1447, in fill_samdb
“KRBTGTPASS_B64”: b64encode(krbtgtpass.encode(‘utf-16-le’))
File “/usr/lib64/python2.7/site-packages/samba/provision/common.py”, line 55, in setup_add_ldif
ldb.add_ldif(data, controls)
File “/usr/lib64/python2.7/site-packages/samba/__init__.py”, line 225, in add_ldif
self.add(msg, controls)
Encontrei a solução. Basta renomear ou remover o arquivo abaixo:
mv /etc/krb5.conf /etc/krb5.conf.old
rm /etc/krb5.conf
ln -sf /usr/local/samba/private/krb5.conf /etc/krb5.conf
Amigo, beleza? Depois desse tutorial, para inserir a máquina em domínio, não seria somente alterar o DNS da estação e trocar do grupo para dominio? Windows não acha o dominio…Valeu
boa tarde!
Ricardo ao executar o script
./configure –prefix /usr –enable-fhs –enable-cups –sysconfdir=/etc –localstatedir=/var –with-privatedir=/var/lib/samba/private –with-piddir=/var/run/samba –with-automount –datadir=/usr/share –with-lockdir=/var/run/samba –with-statedir=/var/lib/samba –with-cachedir=/var/cache/samba –with-systemd
é reportado o erro:
/usr/bin/env: python3: No such file or directory
e não conseguo proceguir dai…
Amigo, quando esse post foi criado o samba estava na versão 4.4.4 e você terá problemas ao tentar compilar na versão atual. A versão atual pede o python3 além de outros pacotes que não estão contemplados neste post. Você pode ir ao site do samba e baixar a versão 4.4.16 e seguir as instruções deste post.
Corrigi o post e agora basta baixar a versão da árvore 4.4.xx que a compilação irá funcionar.
Abraços
Bom Dia,
Chegaram a testar redundância (PDC / DBC)?
Pensei em suar o rsync, não sei se é o caminho, caso seja, quais diretórios preciso sincronizar?