Instalador automatizado SAMBA 4 AD e File Server CentOS 7

Publicado por Yuri Filipe Bucci (última atualização em 24/06/2019)

[ Hits: 7.924 ]

Download samba4TNS.sh

Download samba4TNS-1.5.sh (versão 2)

Download samba4TNS-2.0.sh (versão 3)

Download samba4TNS-2.1.sh (versão 4)

Download samba4TNS-3.0.sh (versão 5)

Download samba4TNS-4.0.sh (versão 6)

Download samba4TNS-4.1.sh (versão 7)

Download SAMBA-5.05 - FINAL.sh (versão 8)

Download 1560364133.SAMBA-5.2-FINAL.sh (versão 9)




Segue um script que criei para automatizar a implantação do Samba 4 em nossos clientes, utilizo no seguinte ambiente:

- CentOS 7x Minimal
- Partição EXT4

Caso encontrem erros ou sugestões fiquem a vontade para falar, já que não sou expert em shell script.

  



Versões atualizadas deste script

Versão 2 - Enviado por Yuri Filipe Bucci em 17/09/2018

Changelog: ALTERADO DNS DE SAMBA_INTERNAL PARA BIND9_DLZ

Download samba4TNS-1.5.sh


Versão 3 - Enviado por Yuri Filipe Bucci em 25/09/2018

Changelog: Versão 2.0
Restruturado Script
Correção de erros no smb.conf
DNS BIND9_DLZ
Adição de script de backup com inclusão no crontab

Download samba4TNS-2.0.sh


Versão 4 - Enviado por Yuri Filipe Bucci em 14/11/2018

Changelog: Homologado versão 4.9.0
Adicionado suporte ao Servidor de Impressão
Correções de erros
DNS SAMBA_INTERNAL

Download samba4TNS-2.1.sh


Versão 5 - Enviado por Yuri Filipe Bucci em 15/02/2019

Changelog: VERSÃO 3.0

HOMOLOGADO ATÉ DA VERSÃO 4.8.5 ATÉ A VERSÃO 4.9.4
ADICIONADO AUDITORIA
ALTERADO PARA DNS BIND9_DLZ
ADICIONADO INSTALAÇÃO DE BACKUP COMO VEEAM BACKUP
ADICIONADO BACKUP DOS DADOS DO SAMBA COM SCRIPT
ADICIONADO ENVIO DE E-MAILS PARA O VEEAM BACKUP (OFFICE365)

CORREÇÕES:
AGORA O SCRIPT SETA O DNS NO RESOLV.CONF
SAÍDAS DO SCRIPT MAL FORMADAS
ERROS DE DIGITAÇÃO

Download samba4TNS-3.0.sh


Versão 6 - Enviado por Yuri Filipe Bucci em 05/05/2019

Changelog: Versão 4.0
Instala somente a versão 4.10.2
Atualizado conf do Bind, não sendo mais necessário os root server
Integrado Backup do Samba ao Veeam Backup no /etc/veeam/scripts/pre.sh que tem quer executado antes do backup dos dados
Correções de escritas e bugs no script

Download samba4TNS-4.0.sh


Versão 7 - Enviado por Yuri Filipe Bucci em 16/05/2019

Changelog: CHANGELOG 4.1
*ATENÇÃO* A VERSÃO 4.0 ESTÁ COM ERRO NO LINK DE DOWNLOAD
INSTALADOR VERSÃO 4.10.3 DO SAMBA
CORREÇÃO DE ERROS

Download samba4TNS-4.1.sh


Versão 8 - Enviado por Yuri Filipe Bucci em 24/05/2019

Changelog: CHANGELOG SAMBA-5.05-FINAL
* ATENÇÃO VERSÃO FINAL NÃO SERÁ MAIS ATUALIZADO AQUI... *
CORRIGIDO ERROS E RETESTADO DIVERSAS VEZES
SELINUX E FIREWALLD HABILITADO
VERSÃO SAMBA 4.10.4

Download SAMBA-5.05 - FINAL.sh


Versão 9 - Enviado por Yuri Filipe Bucci em 12/06/2019

Changelog: LIBERADO VERSÃO 5.2 FINAL
CORRIGIDO TODOS OS ERROS DA VERSÃO 5.05 - FINAL
NÃO SERÁ MAIS REALIZADO NENHUMA ATUALIZAÇÃO

Download 1560364133.SAMBA-5.2-FINAL.sh


Esconder código-fonte

#!/bin/bash
tee /tmp/arte <<EOF >> /dev/null
#########################################################################
|_   _| \ | / ___|  |_   _|__  ___ _ __   ___ | | ___   __ _(_)
  | | |  \| \___ \    | |/ _ \/ __| _ \ / _  \| |/ _ \ / _  | |/ _  |
  | | | |\  |___) |   | |  __/ (__| | | | (_) | | (_) | (_| | | (_| |
  |_| |_| \_|____/    |_|\___|\___|_| |_|\___/|_|\___/ \__, |_|\__,_|
                                                       |___/
#########################################################################
Title                  : Samba4TNS
Description            : Samba4 Instalador Padrão TNS Tecnologia
Author                 : Yuri Bucci
Facebook            : https://www.facebook.com/YuriBucci
Site                   : www.tnsinformatica.com.br
Date                   : 22/08/2018
Version                : 1.3
#########################################################################

EOF


######################### VARIAVEIS #####################################
ARTE="cat /tmp/arte"
USUARIO="whoami"
#########################################################################
clear
$ARTE
echo "ATENÇÃO EXECUTE ESSE SCRIPT DENTRO DE /USR/LOCAL/SRC!!!"
sleep 5s
clear
$ARTE
echo -e "VERIFICANDO USUÁRIO LOGADO..."
sleep 2s
clear
$ARTE
if [ `whoami` == 'root' ]
then
read -p  "USUÁRIO ROOT IDENTIFICADO, DESEJA CONTINUAR A INSTALAÇÃO <ENTER> ou <CTRL+C)? "
clear
$ARTE
echo -e "VAMOS EXECUTAR ALGUNS AJUSTES ANTES DE INICIAR..."
sleep 3s
yum install wget -y >> /dev/null
clear
$ARTE
echo -e "QUAL O SEU HOSTNAME FQDN DESSE SERVIDOR ?(Ex: servidor-dc.tnstecnologia.local):"
read HOSTNAME
hostnamectl set-hostname $HOSTNAME
clear
$ARTE
echo -e "QUAL O NOME DESSE SERVIDOR ? (Ex: servidor-dc) (OBS: DIGITE EM MINUSCULAS);"
read NOMESRV
clear
$ARTE
echo -e "QUAL O ENDEREÇO IP DESTE SERVIDOR ? (Ex: 192.168.0.100):"
read  ENDERECOIP
clear
$ARTE
ifconfig
echo -e "QUAL O NOME DA INTERFACE DE REDE ? EX: eth0"
read INTERFACE
clear
$ARTE
echo -e "QUAL SERÁ O SEU DOMÍNIO REALM ? (Ex: TNSTECNOLOGIA.LOCAL) OBS: DIGITE EM MAISCULO***:"
read REALM
clear
$ARTE
echo -e "HABILITANDO REPOSITÓRIO EPEL E EXECUTANDO YUM UPDATE..."
sleep 2s
yum install epel-release && yum update -y >> /dev/null
clear
$ARTE
echo -e "UPDATE REALIZADO, AGORA VAMOS INSTALAR OS PACOTES NECESSÁRIOS..."
sleep 3s
clear
$ARTE
echo -e "INSTALANDO PACOTES NECESSÁRIOS, AGUARDE..."
yum install attr bind-utils docbook-style-xsl gcc gdb krb5-workstation libsemanage-python libxslt perl perl-ExtUtils-MakeMaker perl-Parse-Yapp perl-Test-Base pkgconfig policycoreutils-python python-crypto gnutls-devel libattr-devel keyutils-libs-devel libacl-devel libaio-devel libblkid-devel libxml2-devel openldap-devel pam-devel popt-devel python-devel readline-devel zlib-devel systemd-devel perl gcc libacl-devel libblkid-devel gnutls-devel readline-devel python-devel gdb pkgconfig krb5-workstation zlib-devel setroubleshoot-server libaio-devel setroubleshoot-pluginspolicycoreutils-python libsemanage-python setools-libs-python setools-libs popt-devel libpcap-devel sqlite-devel libidn-devel libxml2-devel libacl-devel libsepol-devel libattr-devel keyutils-libs-develcyrus-sasl-devel cups-devel bind-utils libxslt docbook-style-xsl openldap-devel pam-devel bzip2 vim wget 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 -y >> /dev/null
clear
$ARTE
echo -e "VAMOS BAIXAR O PACOTE DO SAMBA4..."
sleep 5s
clear
$ARTE
echo -e "ACESSE O SITE ABAIXO E DIGITE AQUI A VERSÃO MAIS ATUALIZADA (EX: 4.8.3)"
echo -e "https://download.samba.org/pub/samba/stable/"
read VSAMBA
clear
$ARTE
echo -e "BAIXANDO E E EXTRAINDO ARQUIVOS..."
wget https://download.samba.org/pub/samba/stable/samba-$VSAMBA.tar.gz >> /dev/null
tar -zxvf samba-$VSAMBA.tar.gz >> /dev/null
sleep 5s
clear
$ARTE
echo -e "CONFIGURANDO NTP E STARTANDO O SERVIÇO..."
sleep 5s
cat >> /etc/ntp.conf <<EOF
# 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
EOF
systemctl restart ntpd
clear
$ARTE
echo -e "CONFIGURANDO ARQUIVO HOSTS..."
cat >> /etc/hosts <<EOF
$ENDERECOIP $HOSTNAME $NOMESRV
EOF
sleep 5s
clear
$ARTE
echo -e "CONFIGURANDO ARQUIVO RESOLV.CONF..."
echo -n > /etc/resolv.conf
cat >> /etc/resolv.conf <<EOF
search $REALM
nameserver $ENDERECOIP
EOF
clear
$ARTE
echo -e "COMPILANDO SAMBA4, POR FAVOR AGUARDE... (VÁ TOMAR UM CAFÉZINHO)"
sleep 10s
cd samba-$VSAMBA
./configure --prefix /usr --enable-fhs --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
make
make install
ldconfig
mv /etc/krb5.conf /etc/krb5.conf.old
cp /usr/share/samba/setup/krb5.conf /etc/
echo -n > /etc/krb5.conf
cat >> /etc/krb5.conf <<EOF
[libdefaults]
        default_realm = $REALM
        dns_lookup_realm = false
        dns_lookup_kdc = true
EOF
rm -rf /etc/samba/smb.conf
clear
$ARTE
echo -e "VAMOS AGORA PROVISIONAR O DOMÍNIO, POR FAVOR PREENCHA OS DADOS PEDIDOS"
sleep 5s
clear
$ARTE
echo -e "REALM: NOME COMPLETO DE SEU DOMÍNIO (EX: TNSTECNOLOGIA.LOCAL)"
echo -e "DOMAIN: NOME DO SEU DOMÍNIO (EX: TNSTECNOLOGIA)"
echo -e "DNS BACKEND: SAMBA_INTERNAL"
echo -e "DNS FORWARDER: 8.8.8.8"
echo -e "DIGITE A SENHA DE ADMINISTRATOR MÍNIMO 6 DIGITOS COM LETRAS MAIUSCULAS E MINUSCULAS"
samba-tool domain provision --use-rfc2307 --interactive --option="interfaces=lo $INTERFACE" --option="bind interfaces only=yes"
clear
$ARTE
echo -e "REALIZANDO AJUSTES FINAIS..."
sleep 5s
echo -e "ADICIONANDO SAMBA.SERVICE NO SYSTEMD"
echo -n > /etc/systemd/system/samba.service
cat >> /etc/systemd/system/samba.service <<EOF
[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
EOF
systemctl enable samba
systemctl restart samba
systemctl restart ntpd
sleep 10s
chown root:ntp /var/lib/samba/ntp_signd/
systemctl restart ntpd
clear
$ARTE
echo -e "REALIZANDO TESTES CONFIRA O RESULTADO"
echo -e "DIGITE SEU DOMINIO NOVAMENTE EM MINUSCULAS (EX: tnstecnologia.local)"
read DOMINIO2
host -t SRV _ldap._tcp.$DOMINIO2.
host -t SRV _kerberos._udp.$DOMINIO2.
host -t A $NOMESRV.$DOMINIO2.
read -p "PRESSIONE <ENTER> PARA CONTINUAR"
clear
$ARTE
echo -e "AGORA DIGITE SUA SENHA DE ADMINISTRATOR E VEJA O RESULTADO"
kinit administrator
klist
read -p "PRESSIONE <ENTER> PARA CONTINUAR"
clear
$ARTE
echo -e "VAMOS CONFIGURAR O SAMBA4 PARA O FILESERVER AGORA..."
pause 5s
clear
$ARTE
echo -e "POR FAVOR DIGITE SEU DOMINIO NOVAMENTE (Ex: TNSTECNOLOGIA)"
read DOMINIO3
clear
$ARTE
echo -e "DIGITE SUA SENHA DE ADMINISTRATOR AGORA"
net rpc rights grant "$DOMINIO3\Domain Admins" SeDiskOperatorPrivilege -U "$DOMINIO3\administrator" 
sleep 3s
clear
$ARTE
echo -e "CONFIGURANDO /etc/nsswitch.conf..."
pause 5s
sed -i 33d /etc/nsswitch.conf
sed -i 33d /etc/nsswitch.conf
sed -i 33d /etc/nsswitch.conf

cat >> /etc/nsswitch.conf <<EOF
passwd:     files winbind sss compat
shadow:     files winbind sss compat
group:      files winbind sss compat
EOF

clear
#ARTE
echo -e "CONFIGURANDO /etc/smb.conf..."
sleep 5s
echo -n > /etc/samba/smb.conf
cat >> /etc/samba/smb.conf <<EOF
[global]
        dns forwarder = 8.8.8.8
        netbios name = $NOMESRV
        realm = $REALM
        server role = active directory domain controller
        workgroup = $DOMINIO3
                idmap_ldb:use rfc2307 = yes
                idmap config *:backend = tdb
                idmap config *:range 10000-9999999
                idmap config *:schema_mode = rfc2307
                winbind nss info = rfc2307
                winbind use default domain = yes
                winbind enum users = yes
                winbind enum groups = yes
                vfs objects = acl_xattr
                map acl inherit = Yes
                store dos attributes = Yes


[netlogon]
        path = /var/lib/samba/sysvol/$DOMINIO2/scripts
        read only = No
        browseable = no
[sysvol]
        path = /var/lib/samba/sysvol
        read only = No
        browseable = no
EOF
systemctl restart samba
clear
$ARTE
read -p "INSTALAÇÃO FINALIZADA COM SUCESSO, APERTE <ENTER> PARA FINALIZAR!"
else
echo -e "USUÁRIO NÃO É ROOT, POR FAVOR LOGUE COM O USUÁRIO ROOT"
echo -e "PRESSIONE <ENTER> PÁRA FINALIZAR O SCRIPT"
read
fi

Scripts recomendados

Advix - controle de processos judiciais para advogados

Controle de cópia de arquivos por tamanho

Script - muda nomes de arquivos de iso-8859-1 para utf8 recursivamente

Script para desinstalação Gerix Wi-fi Cracker no Kali Linux

Teste de conexão com o servidor


  

Comentários
[1] Comentário enviado por rengaf1 em 13/11/2018 - 17:11h

boa tarde... esse script foi testado com a versão 4.9.2 ? tentar a execução dele com a versão sitada e não obtive sucesso. com qual versao vc testou? aguardo contato.

[2] Comentário enviado por YuriBucci26 em 14/11/2018 - 08:39h


[1] Comentário enviado por rengaf1 em 13/11/2018 - 17:11h

boa tarde... esse script foi testado com a versão 4.9.2 ? tentar a execução dele com a versão sitada e não obtive sucesso. com qual versao vc testou? aguardo contato.


Boa tarde ainda não homologuei com esta versão, a versão 2.0 foi homologada somente até a 4.8.5, irei adicionar uma nova versão homologada para a versão 4.9.0

[3] Comentário enviado por caionarezzi em 17/01/2019 - 17:10h

muito bom script, desenvolvi algo parecido mas faz mais de uma com funções diferente, a minha unica sugestão, para torna mais seguro seria perguntas de confirmação, caso quem esteja fazendo erre, mas se você mesmo que use, esta otimo e bonito kkk parabens pelo trabalho

"Se tu o desejas, podes voar, só tens de confiar muito em ti." - Steve Jobs

[4] Comentário enviado por edmarrf em 08/02/2019 - 23:27h

Meus parabéns excelente seu script, porem me deparei com um problema ele deixa a maquina sem dns e não baixa os pacotes.

[5] Comentário enviado por YuriBucci26 em 15/02/2019 - 13:03h


[3] Comentário enviado por caionarezzi em 17/01/2019 - 17:10h

muito bom script, desenvolvi algo parecido mas faz mais de uma com funções diferente, a minha unica sugestão, para torna mais seguro seria perguntas de confirmação, caso quem esteja fazendo erre, mas se você mesmo que use, esta otimo e bonito kkk parabens pelo trabalho

"Se tu o desejas, podes voar, só tens de confiar muito em ti." - Steve Jobs


Obrigado pelo seu comentário, quando desenvolvi pensei nisso, mais como o intuíto é automatizar o máximo possível sem muita interação decidi deixar de fora.

[6] Comentário enviado por YuriBucci26 em 21/02/2019 - 08:23h


[4] Comentário enviado por edmarrf em 08/02/2019 - 23:27h

Meus parabéns excelente seu script, porem me deparei com um problema ele deixa a maquina sem dns e não baixa os pacotes.


Bom dia Edmarf, foi corrigido na versão 3.0, só estou aguardando a aprovação!

[7] Comentário enviado por viniciusmathias em 08/03/2019 - 14:51h

Ola, parabéns pelo Script, aqui estou tentando instalar em uma maquina virtual para testes. Porem após instalar não estou tendo sucesso em ingressar uma maquina windows no AD. Eu necessito cadastrar a maquina antes ? ou oque devo fazer ?

[8] Comentário enviado por carlos.hs em 23/04/2019 - 07:34h

Bom dia,
Parabéns pelo Script, realizei vários teste e o script só esta funcionando ate a versão 4.9.4 as posteriores faz o download mas não consegue realizar a compilação.

[9] Comentário enviado por YuriBucci26 em 23/04/2019 - 07:38h


[8] Comentário enviado por carlos.hs em 23/04/2019 - 07:34h

Bom dia,
Parabéns pelo Script, realizei vários teste e o script só esta funcionando ate a versão 4.9.4 as posteriores faz o download mas não consegue realizar a compilação.


De fato não foi homologado para as versões acima da 4.9.3, visto que foi mudado os pacotes e tipo de compilação na versão 4.10 por exemplo, não tive tempo de de homologar essas versões aínda

[10] Comentário enviado por c3y70n em 19/06/2019 - 08:57h

Muito bom! Obrigado. Instalei usando a versão SAMBA-5.05 - FINAL.sh e funcionou, o único problema que dava erro ao iniciar o named, após colocar disabled no SELINUX, iniciou normalmente.

Se eu quiser fazer um DC adicional para failover, até qual parte do script é igual e/ou qual configuração é diferente para fazer o adicional?

[11] Comentário enviado por YuriBucci26 em 19/06/2019 - 09:09h


[10] Comentário enviado por c3y70n em 19/06/2019 - 08:57h

Muito bom! Obrigado. Instalei usando a versão SAMBA-5.05 - FINAL.sh e funcionou, o único problema que dava erro ao iniciar o named, após colocar disabled no SELINUX, iniciou normalmente.

Se eu quiser fazer um DC adicional para failover, até qual parte do script é igual e/ou qual configuração é diferente para fazer o adicional?


Bom dia, peguei este erro e lancei a versão contendo a correção dos mesmos, está pendente de aprovação. Em questão do DC adicional já possuo um script pronto contendo PDC, DC, RODC com replicação do Sysvol em Cluster (bi-direcional), caso tenha interesse basta entrar em contato comigo pelo e-mail informado que conversamos.

[12] Comentário enviado por carlos.hs em 25/06/2019 - 11:03h

Bom dia
gostaria do seu e-mail de contato porque tenho interesse no script com PDC, DC, RODC com replicação do Sysvol em Cluster (bi-direcional).
O meu e carlos.hs@hotmail.com
Aguardo retorno
Grato.

[13] Comentário enviado por YuriBucci26 em 25/06/2019 - 11:10h


[12] Comentário enviado por carlos.hs em 25/06/2019 - 11:03h

Bom dia
gostaria do seu e-mail de contato porque tenho interesse no script com PDC, DC, RODC com replicação do Sysvol em Cluster (bi-direcional).
O meu e carlos.hs@hotmail.com
Aguardo retorno
Grato.


Lhe encaminhei e-mail com as informações
yuri.bucci@outlook.com

[14] Comentário enviado por c3y70n em 12/07/2019 - 16:23h


[11] Comentário enviado por YuriBucci26 em 19/06/2019 - 09:09h


[10] Comentário enviado por c3y70n em 19/06/2019 - 08:57h

Muito bom! Obrigado. Instalei usando a versão SAMBA-5.05 - FINAL.sh e funcionou, o único problema que dava erro ao iniciar o named, após colocar disabled no SELINUX, iniciou normalmente.

Se eu quiser fazer um DC adicional para failover, até qual parte do script é igual e/ou qual configuração é diferente para fazer o adicional?


Bom dia, peguei este erro e lancei a versão contendo a correção dos mesmos, está pendente de aprovação. Em questão do DC adicional já possuo um script pronto contendo PDC, DC, RODC com replicação do Sysvol em Cluster (bi-direcional), caso tenha interesse basta entrar em contato comigo pelo e-mail informado que conversamos.


Esse script seu é bem completo, pois tem adicional além do samba como o backup e auditoria. É fácil voltar esse backup se precisar subir outro samba? Estou fazendo um teste em laboratório, mas não tenho muita noção de como voltar, tentei o "samba-tool backup", mas não tive muito sucesso.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts