Para o restante deste tutorial, as seguintes informações de exemplo serão usadas:
- Nome do host = DEBIAN12
- IP local DC = 192.168.50.2
- Domínio = EMPRESA100.INTERNO
Veja também: Qual Diferença Entre DC e AD em Informática?
Poderá ajudar você: Samba: Coisas que Você Deve e Não Deve Fazer
Baixando o Samba
Obs.: se o comando wgt não estiver instalado basta executar “apt install wget” ou “dnf install wget“
#1 Essa etapa é opcional. Primeiramente, irei criar uma pasta chamada downloads: mkdir ~/downloads
elder@debian12:~$ mkdir ~/downloads
Acesse a pasta criada: cd downloads
elder@debian12:~$ cd downloads
#2 Copie o comando abaixo e cole no terminal do Debian para baixarmos o Samba: wget https://download.samba.org/pub/samba/samba-latest.tar.gz
elder@debian12:~/downloads$ wget https://download.samba.org/pub/samba/samba-latest.tar.gz
#3 O Samba vem compactado pelo tar. O tar é um empacotador semelhante ao winrar, winzip… Execute o comando abaixo para descompactar o arquivo samba-latest.tar.gz: tar xf samba-latest.tar.gz
elder@debian12:~/downloads$ tar xf samba-latest.tar.gz
#4 foi gerada a pasta samba-4.18.3
Instalando os Requisitos para Samab 4.18.3 no Debian 12
Instale os requisitos abaixo.
sudo apt install acl attr autoconf bind9utils bison build-essential \
debhelper dnsutils docbook-xml docbook-xsl flex gdb libjansson-dev krb5-user \
libacl1-dev libaio-dev libarchive-dev libattr1-dev libblkid-dev libbsd-dev \
libcap-dev libcups2-dev libgnutls28-dev libgpgme-dev libjson-perl \
libldap2-dev libncurses5-dev libpam0g-dev libparse-yapp-perl \
libpopt-dev libreadline-dev nettle-dev perl perl-modules pkg-config \
python-dev-is-python3 python3-cryptography python3-dbg python3-dnspython \
python3-dnspython python3-gpg python3-markdown libdbus-1-dev \
xsltproc zlib1g-dev liblmdb-dev lmdb-utils -y
Irão aparecer 3 caixinhas perguntando sobre kerberos. Pode colocar qualquer coisa só para continuar mesmo, pois configuraremos de outro modo o kerberos.
Preparando o Debian antes de Compilar
O Debian precisa de alguns ajustes:
- Nome de domínio(domain name): escolha mentalmente um nome que será seu domínio. Ele deverá ser inserido nas configurações a seguir. Esse nome pode ser empresa.interno ou qualquer outro nome não acessível na internet, ou seja, que não funcione se colocado no navegador de internet. Por isso usamos .interno ou .lab ao invés de .com ou .com.br ou .org etc… Seja qual for o nome de domínio que você use, ele deve ser isolado, sem conexão com a Internet, não é uma boa ideia ter qualquer computador de domínio AD conectado diretamente à Internet.
- hostname:Nome de host(hostname) que nunca será alterado.
- endereço IP: Um endereço IP que nunca será alterado no futuro. Para isso coloque um IP estático, ou seja, não recebido via DHCP.
- /etc/hosts: configurar /etc/hosts para apontar o nome do host(hostname) para o ip do computador
- /etc/resolv.conf: edite esse arquivo. Colocaremos o ip e domínio aqui, conforme mais abaixo.
- O horário sempre ajustado: Para isso, configure um programa NTP para receber o horário da internet. Ou, opcionalmente, fique sempre de olho e ajuste manualmente. Ajustar manualmente sem usar NTP não é o recomendado, mas se estiver fazendo testes pode ser uma opção.
Então, os dados do servidor que usarei serão:
hostname: debian12
- Domínio: lab.interno
- IP: 192.168.50.2
Veja o conteúdo de cada arquivo relacionado:
Melhores Práticas para Nomes NetBios no Windows e Linux
# HOSTNAME
elder@debian12:~/downloads$ cat /etc/hostname debian12
Obs.: Não crie um hostname(nome do host) maior que 15 caracteres que comprometa o nome Netbios.Deixe-o sem pontos ou outros caracteres não permitidos, veja: Melhores Práticas para Nomes NetBios no Windows e Linux e esse outro link O que é NetBios(Network Basic Input/Output System) em Informática?
# DOMÍNIO e /ETC/HOSTS
elder@debian12:~/downloads$ cat /etc/hosts 127.0.0.1 localhost 192.168.50.2 debian12.lab200.interno debian12 lab200.interno
Aqui, o hostname(debian11VM) e o FQDN(nosso debian11VM.lab.local) não devem resolver ou apontar para o endereço IP 127.0.0.1 ou qualquer outro endereço IP diferente daquele usado na interface LAN do DC. Em nosso caso deve apontar para 192.168.50.2, conforme acima.
# IP em /etc/network/interfaces
# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). source /etc/network/interfaces.d/* # The loopback network interface auto lo enp0s3 iface lo inet loopback # The primary network interface allow-hotplug enp0s3 enp0s8 enp0s8:0 iface enp0s3 inet static address 192.168.50.2
# DNS em /etc/resolv.conf
elder@debian12:~/downloads$ sudo cat /etc/resolv.conf search empresa100.interno domain empresa100.inerno nameserver 192.168.50.2 nameserver 8.8.8.8
Compilando o Samba 4.20
Depois de configurado horário, nome de domínio, nome de host, fixado o IP, editado o /etc/hosts e o /etc/resolv.conf, chegou a hora de compilarmos o samba.
Compilar significa transformar, converter uma linguagem em linguagem de processador, uma linguagem que o processador entende. Compilar demora um pouco mas a vantagem de pegar um código fonte para compilar é que poderá ser usado em qualquer distro Linux. Evita o problema de ser compatível com uma distro e com outra não. Por exemplo, evita de ser compatível com o Debian e não com o Red Hat ou SUSE. Os programas .exe ou .deb ou .rpm são binários, ou seja, um código fonte já compilado pronto a ser instalado, mas destinado apenas a alguma(s) distro. Por exemplo, rpm funciona apenas no CentOS, Red Hat ou derivados e .deb em Debian, Ubuntu e derivados. A vantagem do binário é que tem instalação rápida.
Para compilar, geralmente, usamos 3 commandos:
- ./configure para preparar o ambiente, verifica se não falta nenhum requisito ou dependência.
- make para compilar
- make install para instalar o programa compilado
Acima, extraímos o conteúdo de samba-latest.tar.gz com o comando tar xf samba-latest.tar.gz e foi gerada a pasta samba-4.20.2
Vamos ao passo a passo
#1 dentro de /home/maria/downloads, entre na pasta samba-4.18.3 com: cd samba-4.20.2
elder@debian12:~/downloads$ cd samba-4.20.2/
#2 agora, execute o comando ./configure
elder@debian12:~/downloads/samba-4.20.2$ sudo ./configure
ao término, do comando configure, você verá a mensagem abaixo:
Checking if compiler accepts -fstack-clash-protection : yes 'configure' finished successfully (3m15.288s)
#3 execute make
elder@debian12:~/downloads/samba-4.20.2$ sudo make
Uma mensagem aparecida com a abaixo dirá que tudo ocorreu bem:
Waf: Leaving directory `/home/elder/downloads/samba-4.20.2/bin/default' Build commands will be stored in bin/default/compile_commands.json 'build' finished successfully (1h1m38.340s)
#4 agora execute make install
elder@debian12:~/downloads/samba-4.20.2$ sudo make install
Se ver essa mensagem ao final é porque deu tudo certo:
Waf: Leaving directory `/home/elder/downloads/samba-4.20.2/bin/default' 'install' finished successfully (16m21.758s)
Provisionando o Samba 4.20 no Debian 12
Iremos transformar o servidor debian12Vm em um AD(Active Directory). Para isso temos que provisionar o samba instalado nele.
Veja esses links relacionaos:
- O que é um Servidor Controlador de Domínio?
- Qual Diferença Entre DC e AD em Informática?
- O que é a Pasta SYSVOL em Servidores?
O processo de provisionamento do Samba AD cria os bancos de dados do AD e adiciona registros iniciais, como a conta do administrador do domínio e as entradas DNS necessárias.
O Samba vem com uma ferramenta de linha de comando integrada chamada samba-tool que pode ser usada para configurar automaticamente seu smb.conf quando executado no modo interativo.
#1 acesse a pasta onde o samba foi instalado
elder@debian12:~/downloads/samba-4.20.2$ cd /usr/local/samba/
#2 execute: ./bin/samba-tool domain provision
Obs.: Se o seu servidor tiver várias interfaces de rede, ou seja, diversas entradas para conectar cabos de rede, use essas opções junto com o samba-tool domain provision para vincular o Samba às interfaces especificadas: –option=”interfaces=lo eth0″ –option=”bind interfaces only=yes”
Execute o comando abaixo para provisionar
elder@debian12:/usr/local/samba$ sudo ./bin/samba-tool domain provision
preencha as solicitações. Podemos dar Enter em quase todas, menos no DNS forwarder IP address que colocaremos o dns do google(8.8.8.8). Não se preocupe se deu enter aqui também, pois conseguiremos colocar o dns forwarder depois quando configurarmos o smb.conf
elder@debian12:/usr/local/samba$ sudo ./bin/samba-tool domain provision Realm [EMPRESA100.INTERNO]: Domain [EMPRESA100]: Server Role (dc, member, standalone) [dc]: DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: DNS forwarder IP address (write 'none' to disable forwarding) [192.168.50.2]: 8.8.8.8 Administrator password: Retype password:
Obs.: Acima, provisionamos o samba usando apenas samba-tool domain provision, mas é recomendado usar samba-tool domain provision –use-rfc2307. O –use-rfc2307 Ativa as extensões NIS necessárias para a guia ADUC Unix Attributes. Não há desvantagens em habilitar as extensões NIS, mas habilitá-las depois, em um domínio já existente, requer a alteração manual do esquema AD.
Vamos entender parte das solicitações acima que respondemos:
- Realm é o Kerberos realm(reino). A versão em maiúsculas do domínio AD DNS. Por exemplo: LAB.INTERNO. Esse é nome do domínio(proteção) da nossa rede. Um domínio é uma área protegida. Nossa área protegida passa a se chamar LAB.INTERNO e qualquer pc ou dispositivo terá que ter acesso à essa área com senhas, tickers kerberos… Veja: Para que Serve um Domínio?
- Domain Nome de domínio NetBIOS (workgroup). Pode ser qualquer coisa, mas deve ser uma palavra, com no máximo 15 caracteres e sem ponto. Recomenda-se usar a primeira parte do domínio AD DNS. Por exemplo: LAB. Não use o nome do computador!
- Server Role Instalamos a função DC do controlador de domínio. Veja O que é NetBios e Melhores Práticas para Nomes NetBios
- DNS backend usamos um servidor DNS interno(próprio) do Samba. Outra explicação é: Define o back-end do DNS. O primeiro DC em um AD deve ser instalado usando um back-end de DNS.
- DNS forwarder IP address Se o DNS interno do samba não souber(não ser autoridade) traduzir um certo nome em ip qual outro servidor DNS ele deverá entrar em contato? Aqui colocamos o google(8.8.8.8). Essa configuração só está disponível ao usar o back-end DNS SAMBA_INTERNAL, como é o nosso caso.
- Administrator password Cria a senha do administrador do domínio. Se a senha não corresponder aos requisitos de complexidade, o provisionamento falhará. O nome do usuário é administrator.
Poderíamos usar o comando samba-tool de forma não interativa, assim:
samba-tool domain provision –server-role=dc –use-rfc2307 –dns-backend=SAMBA_INTERNAL –realm=LAB.INTERNO –domain=LAB –adminpass=suaSenha
Configurando o Kerberos para o Samba
o Kerberos é usado para autenticar usuários, máquinas e serviços.
Durante o provisionamento, o Samba criou um arquivo de configuração Kerberos para seu controlador de domínio. Precisamos copiar ele para /etc/
elder@debian12:/usr/local/samba$ sudo cp /usr/local/samba/private/krb5.conf /etc/krb5.conf
Inicie o samba
Para iniciar o samba execute: sudo /usr/local/samba/sbin/samba
elder@debian12:/usr/local/samba$ sudo /usr/local/samba/sbin/samba
Se quiser parar, execute: sudo killall samba
elder@debian12:/usr/local/samba$ sudo killall samba
Validando a Compilação do Samba
Para validar as configurações realizadas acima posto link para outro artigo; se postasse aqui acabaria ficando um artigo muito longo.
Mas vamos a um tira-gosto. Execute sudo ./bin/smbclient -L localhost -U administrator para exibirmos os compartilhamentos de pastas internas do samba:
elder@debian12:/usr/local/samba$ sudo ./bin/smbclient -L localhost -U administrator Password for [EMPRESA100\administrator]: Sharename Type Comment --------- ---- ------- sysvol Disk netlogon Disk IPC$ IPC IPC Service (Samba 4.20.2) SMB1 disabled -- no workgroup available
Segue link: Testando e Validando o Samba que Compilamos
Mas você pode fazer um teste simples. Em um pc com Windows, Abra o Windows Explorer e digite o ip do seu servidor. Irá aparecer os compartilhamentos do samba: