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.
Usar 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 e 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). Veja como trabalhar com redundância no samba: Juntando(Joining) um DC a um Active Directory Existente
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
Por outro lado, instalar usando gerenciadores de pacotes(dnf, yum apt…) é muito mais rápido, apenas segundos; enquanto compilar pode levar até 1 hora.
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@oraclelinux9 ~]# mkdir ~/downloads
Acesse a pasta criada: cd downloads
[root@oraclelinux9 ~]# 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@oraclelinux9 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@oraclelinux9 downloads]# tar xf samba-latest.tar.gz
Vamos usar a pasta extraída mais tarde
Instalando os Requisitos para Samab 4.18 no Oracle Linux 9
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@oraclelinux9 samba-4.18.5]# dnf install epel-release -y
instale o dnf-plugins-core
[root@oraclelinux9 samba-4.18.5]# dnf install dnf-plugins-core -y
habilite o repositório
[root@oraclelinux9 samba-4.18.5]# dnf config-manager --set-enabled ol9_codeready_builder
Veja a lista de repositórios. Veja que o epel e o codeready estão aí ativados.
[root@oraclelinux9 downloads]# dnf config-manager --set-enabled ol9_codeready_builder [root@oraclelinux9 downloads]# dnf repolist id do repo nome do repo ol9_UEKR7 Oracle Linux 9 UEK Release 7 (x86_64) ol9_addons Oracle Linux 9 Addons (x86_64) ol9_appstream Oracle Linux 9 Application Stream Packages (x86_64) ol9_baseos_latest Oracle Linux 9 BaseOS Latest (x86_64) ol9_codeready_builder Oracle Linux 9 CodeReady Builder (x86_64) - (Unsupported) ol9_developer_EPEL Oracle Linux 9 EPEL 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 python3.11-devel python-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 de outro pc em outra rede. Escolherei aqui lab.interno. 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: oraclelinux9
- Domínio: lab.interno
- IP: 192.168.50.3
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
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.50.3 oraclelinux9.lab.interno oraclelinux9
# ENDEREÇO IP
Usei a ferramenta nmtui para deixar o meu IP sendo 192.168.50.3. Usei da seguinte forma:
┌────────────────────────────┤ Editar conexão ├─────────────────────────────┐ │ │ │ Nome do perfil enp0s3__________________________________ │ │ Dispositivo enp0s3 (08:00:27:57:A1:DB)______________ │ │ │ │ ═ ETHERNET <Exibir> │ │ ═ 802.1X SECURITY <Exibir> │ │ │ │ ╤ CONFIGURAÇÃO IPv4 <Manual> <Ocultar> │ │ │ Endereços 192.168.50.3/24__________ <Remover> │ │ │ <Adicionar…> │ │ │ Gateway 192.168.50.1_____________ │ │ │ Servidores DNS 8.8.8.8__________________ <Remover> │ │ │ <Adicionar…> │ │ │ Domínios de pesquisa lab.interno______________ <Remover> │ │ │ <Adicionar…> │ │ │ │ │ │ Roteamento (Nenhuma rota personalizada) <Editar…> │ │ │ [ ] Nunca usar esta rede para rota padrão │ │ │ [ ] Ignorar rotas obtidas automaticamente │ │ │ [ ] Ignorar parâmetros DNS obtidos automaticamente │ │ │ │ │ │ [ ] Exibir endereçamento IPv4 para esta conexão │ │ └ │ │ │ │ ═ CONFIGURAÇÃO IPv6 <Automático> <Exibir> │ │ │ │ [X] Conectar automaticamente │ │ [X] Disponibilizar à todos os usuários │ │ │ │ <Cancelar> <OK> │ │ │
Vou deixar assim, mas vale ressaltar que nunca me dei bem usando o nmtui(NetworkManager) com o samba. Encontrei problemas na sincronização ao usar mais de um servidor DC sincronizados(redundância).
Obs.: o trecho abaixo pode não ser necessário!
O que faço ou faria é:
- 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@oraclelinux9 samba-4.18.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.3 PREFIX=24 GATEWAY=192.168.50.1 DNS1=192.168.50.3 DNS2=8.8.8.8 DOMAIN=lab.interno
# DNS em /etc/resolv.conf
[root@oraclelinux9 ~]# cat /etc/resolv.conf domain lab.interno search lab.interno nameserver 192.168.50.3 nameserver 8.8.8.8
Compilando o Samba 4.18 no Oracle Linux 9
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.18.5
Vamos ao passo a passo
#1 acesse a pasta extraída
[root@oraclelinux9 ~]# cd downloads/samba-4.18.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@oraclelinux9 samba-4.18.5]# ./configure
Esse demora um pouco. Se receber erro com python veja esse artigo: Samba: Erro ao compilar “Python.h: Arquivo ou diretório inexistente”
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@oraclelinux9 samba-4.18.5]# make
#4 agora execute make install
[root@oraclelinux9 samba-4.18.5]# make install
Se ver essa mensagem ao final é porque deu tudo certo:
Waf: Leaving directory `/root/downloads/samba-4.18.5/bin/default' 'install' finished successfully (6m30.813s)
Provisionando o Samba 4.18 no Oracle Linux 9
Iremos transformar o servidor oraclelinux9 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@oraclelinux9 ~]# 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@oraclelinux9 ~]# ./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.INTERNO]: 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.3]: 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.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/
[root@oraclelinux9 ~]# cp /usr/local/samba/private/krb5.conf /etc/krb5.conf
Inicie o samba
Para iniciar o samba execute:
[root@oraclelinux9 ~]# /usr/local/samba/sbin/samba
Se quiser parar, execute:
[root@oraclelinux9 ~]# 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:
A foto é de outro post, mas o resultado seria o mesmo.
Comment on “Linux: Instalando(Compilando) SAMBA 4.18 no Oracle Linux 9”