Sempre baixe a versão mais recente do Samba em www.samba.org. Para um máximo de segurança e estabilidade, a equipe do Samba recomenda que você instale apenas a versão mais recente disponível. As versões mais antigas não contêm os bugs e as correções de segurança mais recentes.
Usa o samba é mais do que suficiente para gerenciar empresas sofisticadas que usam o Windows 10/11 com requisitos de conformidade rígidos (incluindo NIST 800-171). Veja: Saiba o que é NIST(National Institute of Standards and Technology) e O que é NIST SP 800-171?
Esta documentação descreve como configurar o Samba como o primeiro DC a construir um novo AD. Se você estiver instalando o Samba em um ambiente de produção, é recomendável executar dois ou mais DCs por motivos de failover(redundância).
Porque Compilar o Samba ao Invés de Instalar?
Em algumas situações podemos compilar ao invés de instalar o Samba. Mas instalar usando ferramentas como yum, dnf, apt traz algumas desvantagens, como:
- Sua distribuição trará pacotes desatualizados ao invés da mais nova.
- ou não existir nenhum pacote disponível para nossa distro ou sistema operacional. A compilação serve para qualquer distro.
- você terá que depender do desenvolvedor do pacote para aplicar um patch para corrigir um problema antes que uma nova versão seja lançada
Baixando o Samba
Obs.: se o comando wgt não estiver instalado basta executar “apt install wget” ou “dnf install wget“. Também, se não tiver o tar instalado basta executar:
dnf install wget tar -y
#1 Essa etapa é opcional. Primeiramente, irei criar uma pasta chamada downloads: mkdir ~/downloads
[root@oracle86B ~]# mkdir ~/downloads
Acesse a pasta criada: cd downloads
[root@oracle86B ~]# 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
[root@oracle86B 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
[root@oracle86B downloads]# tar xf samba-latest.tar.gz
Vamos usar a pasta extraída mais tarde
Instalando os Requisitos para Samab 4.17 no Oracle Linux 8
Para instalação das dependências iremos instalar os pacotes epel-release e codeready. Se não tiver eles instalados as demais dependências poderão não serem instaladas. Veja nosso artigo para mais detalhes: Instalando EPEL(Extra Packages for Enterprise Linux)
[root@oracle86B samba-4.17.5]# dnf install epel-release -y
instale o dnf-plugins-core
[root@oracle86B samba-4.17.5]# dnf install dnf-plugins-core -y
habilite o repositório
[root@oracle86B samba-4.17.5]# dnf config-manager --set-enabled ol8_codeready_builder
Veja a lista de repositórios. Veja que o epel e o codeready estão aí ativados.
[root@oracle86B samba-4.17.5]# dnf repolist id do repo nome do repo ol8_UEKR6 Latest Unbreakable Enterprise Kernel Release 6 for Oracle Linux 8 (x86_64) ol8_appstream Oracle Linux 8 Application Stream (x86_64) ol8_baseos_latest Oracle Linux 8 BaseOS Latest (x86_64) ol8_codeready_builder Oracle Linux 8 CodeReady Builder (x86_64) - Unsupported ol8_developer_EPEL Oracle Linux 8 EPEL Packages for Development (x86_64) ol8_developer_EPEL_modular Oracle Linux 8 EPEL Modular Packages for Development (x86_64)
Agora sim, podemos prosseguir para instalar os demais requisitos. Execute:
dnf install docbook-style-xsl gcc gdb gnutls-devel gpgme-devel jansson-devel \ keyutils-libs-devel krb5-workstation libacl-devel libaio-devel \ libarchive-devel libattr-devel libblkid-devel libtasn1 libtasn1-tools \ libxml2-devel libxslt lmdb-devel openldap-devel pam-devel perl \ perl-ExtUtils-MakeMaker perl-Parse-Yapp popt-devel python3-cryptography \ python3-dns python3-gpg python36-devel readline-devel rpcgen systemd-devel \ tar zlib-devel flex bison dbus-devel python3-markdown perl-JSON -y
Preparando o Oracle Linux antes de Compilar
Obs.: não use .local, como em minha empresa.local ou escola.local…! .local é usado por um programa chamado avahi. Veja esse artigo Samba: Coisas que Você Deve e Não Deve Fazer
O Oracle Linux 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 lab.invalido ou empresa.interno ou qualquer outro nome não acessível na internet, ou seja, que não funcione se colocado no navegador de internet. Usar .local não é recomendado. Mas como meus projetos anteriores já usavam continuarei. Sugiro usar .interno ou outro nome qualquer. Por isso usamos .interno ou .invalido ou .lab ao invés de .com ou .com.br ou .org etc… Escolherei aqui lab.local. Lab é uma abreviação que escolhi para laboratório, pois esse tutorial é de testes. 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. Resumindo, esse nome de domínio não deve responder quando usarmos ping de outra internet, sem ser a da sua casa ou empresa.
- 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 colocando o ip do ser servidor e o domínio. Veremos 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: oracle86B
- Domínio: lab.local
- IP: 192.168.50.4
Veja o conteúdo de cada arquivo relacionado:
Melhores Práticas para Nomes NetBios no Windows e Linux
Use um editor(vim, nano, vi..) para deixar os arquivos assim:
#HOSTNAME
[root@oracle86B samba-4.17.5]# cat /etc/hostname oracle86B
# DOMÍNIO e /ETC/HOSTS
Abaixo, só adicionei a última linha
[root@oracle86B samba-4.17.5]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.50.4 oracle86B.lab.local oracle86B
Aqui, o hostname(oracle86B) e o FQDN(nosso oracle86B.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.4, conforme acima.
# ENDEREÇO IP
Nunca me dei bem usado o NetworkManager com o samba. Encontrei problemas na sincronização ao usar mais de um servidor DC sincronizados(redundância). O que faço é:
- aproveitar que o NetworkManager está instalado e usar o nmtui para colocar o IP manual. Assim ele irá gerar o arquivo /etc/sysconfig/network-scripts/ifcfg-enp0s3 com as configurações manuais para o IP. O nome do arquivo ifcfg-enp0s3 pode variar de uma distro para outra.
- Instalar o velho network-scripts:
dnf install network-scripts
- desabitar o NetworkManager com systemctl stop NetworkManager e systemctl disable NetworkManager
- executar o velho ifdown enp0s3 e ifup enp0s3 para ver se as alterações permanecerão.
Obs.: o network-scripts pode não funcionar futuramente. Pode fazer testes e adequar o uso do samba com o NetworkManager ou outro gerenciador semelhante como o netplan ou systemd-networkd. Por isso que gosto do Debian 🙂 instalado sem nada, magro.
Esse é o conteúdo do arquivo gerado pelo NetworkManager e que passará a ser gerido pelo network-scripts:
[root@oracle86B samba-4.17.5]# cat /etc/sysconfig/network-scripts/ifcfg-enp0s3 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=none DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no NAME=enp0s3 UUID=fe033b8e-c501-4f11-b75b-22a28a12c1ea DEVICE=enp0s3 ONBOOT=yes IPADDR=192.168.50.4 PREFIX=24 GATEWAY=192.168.50.1 DNS1=192.168.50.4 DNS2=8.8.8.8 DOMAIN=lab.local
# DNS em /etc/resolv.conf
[root@oracle86B ~]# cat /etc/resolv.conf domain lab.local search lab.local nameserver 192.168.50.4 nameserver 8.8.8.8
Compilando o Samba 4.17
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.17.4
Vamos ao passo a passo
#1 acesse a pasta extraída
[root@oracle86B ~]# cd downloads/samba-4.17.5/
#2 Execute o comando ./configure que o ambiente seja analisado e ver se realmente todos os pacotes necessários estão instalados. Esse processo demora um pouco.
[root@oracle86B samba-4.17.5]# ./configure
Esse demora um pouco.
ao término do configure você verá a mensagem abaixo:
..... Checking if compiler accepts -fstack-clash-protection yes 'configure' finished successfully (1m12.709s)
#3 execute make
[root@oracle86B samba-4.17.5]# make
#4 agora execute make install
[root@oracle86B samba-4.17.5]# make install
Se ver essa mensagem ao final é porque deu tudo certo:
Waf: Leaving directory `/root/downloads/samba-4.17.4/bin/default' 'install' finished successfully (6m30.813s)
Provisionando o Samba 4.17 no Oracle Linux 8
Iremos transformar o servidor oracle86B 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
[root@oracle86B ~]# 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
[root@oracle86B ~]# ./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
Realm [LAB.LOCAL]: Domain [LAB]: 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.4]: 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.LOCAL. Esse é nome do domínio(proteção) da nossa rede. Um domínio é uma área protegida. Nossa área protegida passa a se chamar LAB.LOCAL 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.LOCAL –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/
[root@oracle86B ~]# cp /usr/local/samba/private/krb5.conf /etc/krb5.conf
Inicie o samba
Para iniciar o samba execute:
[root@oracle86B ~]# /usr/local/samba/sbin/samba
Se quiser parar, execute:
[root@oracle86B ~]# 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.
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:
Excelente tutorial, parabéns pelo Trabalho !!!!
Obrigado pelo retorno Luiz!
Olá. Pretendo instalar o samba 4.18.6 no Oracle Linux 9.2 o comando das dependências deste tutorial serve no OL9?
Oi, já temos um artigo sobre isso: https://categoriaoutros.com.br/?p=11803
Linux: Instalando(Compilando) SAMBA 4.18 no Oracle Linux 9