Ir para o conteúdo

Samba4: mudanças entre as edições

De RJGSWiki
Sem resumo de edição
Etiqueta: wikieditor
Sem resumo de edição
Linha 211: Linha 211:
  samba-tool domain level show
  samba-tool domain level show


= SAMBA AD (Compilado) =
== Preparação ==
=== Definir hostname correto (FQDN)
O hostname precisa ser um nome completo (FQDN).
hostnamectl set-hostname ad20.fourtrust.local
E valide:
hostname -f
=== Ajustar /etc/hosts ===
vim /etc/hosts
Deixe assim (ajuste IP e domínio):
<pre>
127.0.0.1      localhost
192.168.0.10    ad20.fourtrust.local ad20
</pre>
=== IP fixo (OBRIGATÓRIO) ===
AD não funciona com DHCP.
Configure no Netplan:
<pre>
vim /etc/netplan/*.yaml
<pre>
Exemplo:
network:
  version: 2
  ethernets:
    eth0:
      dhcp4: no
      addresses:
        - 192.168.0.100/24
      gateway4: 192.168.0.1
      nameservers:
        addresses:
          - 127.0.0.1
        - 8.8.8.8
</pre>
Depois:
netplan try
netplan apply
=== Resolver DNS local ===
Antes de provisionar, o sistema já deve usar ele mesmo como DNS:
Verifique o link simbólico atual
ls -l /etc/resolv.conf
Desabilite o systemd-resolved
sudo systemctl disable --now systemd-resolved
Edite:
vim /etc/resolv.conf
Deixe:
nameserver 127.0.0.1
search fourtrust.local
=== Sincronização de horário (CRÍTICO pro Kerberos) ===
Kerberos quebra se o horário estiver errado.
Setar "Time Zone" para America - São Paulo.
timedatectl set-timezone America/Sao_Paulo
Validando:
timedatectl
<pre>
              Local time: Wed 2026-05-06 10:58:01 -03 
          Universal time: Wed 2026-05-06 13:58:01 UTC 
                RTC time: Wed 2026-05-06 13:58:02     
                Time zone: America/Sao_Paulo (-03, -0300)
System clock synchronized: yes                         
              NTP service: active                       
          RTC in local TZ: no         
</pre>
=== Remover conflitos (IMPORTANTÍSSIMO) ===
Pare qualquer serviço que conflita com o Samba AD:
systemctl stop smbd nmbd winbind
systemctl disable smbd nmbd winbind
Se instalou pacotes via apt antes, considere remover:
apt remove samba samba-common-bin -y
=== Limpar configurações antigas ===
Se já tentou antes:
rm -rf /usr/local/samba/etc/smb.conf
rm -rf /usr/local/samba/private/*
rm -rf /usr/local/samba/var/*
=== Teste básico antes do provision ===
Teste resolução:
hostname -f
ping ad20.fourtrust.local
== Instalação ==
=== Baixa os arquivos ===
wget https://download.samba.org/pub/samba/samba-latest.tar.gz
=== Descompacta ===
tar -xvf sambaxxxx.tar.gz
=== Instala dependencias ===
Navegue até a pasta onde está o script que instala as dependências:
sambaxxx/bootstrap/generated-dists/ubuntuxx/bootstrap.sh
roda o script como sudo
sudo ./bootstrap.sh
=== Compila ===
Dentro da pasta do samba:
./configure
make
make install
== Provision ==
Tem que resolver para o IP local.
samba-tool domain provision --use-rfc2307 --interactive
Pós provisionamento
ln -sf /var/lib/samba/private/krb5.conf /etc/krb5.conf
=== Pós provisionamento ===
==== Mudar o PATH ====
Edite:
sudo vim /etc/profile
Adicione no FINAL do arquivo e salve-o:
export PATH=$PATH:/usr/local/samba/bin:/usr/local/samba/sbin
Depois recarregue:
source /etc/profile
Validando:
which samba
which samba-tool
which smbclient
Deve retornar algo como:
/usr/local/samba/sbin/samba
/usr/local/samba/bin/samba-tool
==== Staus do Samba ====
systemctl status samba-ad-dc
systemctl start samba-ad-dc
systemctl enable samba-ad-dc
==== Testar o domínio ====
/usr/local/samba/bin/samba-tool domain level show
Esperado:
Domain and forest function level for domain 'DC=rjgsnet,DC=local'
Forest function level: (Windows) 2008 R2
Domain function level: (Windows) 2008 R2
Lowest function level of a DC: (Windows) 2008 R2
==== Testar autenticação local ====
/usr/local/samba/bin/smbclient -L localhost -U Administrator
Vai pedir senha do <code>Administrator</code>
Esperado:
<pre>
Password for [RJGSNET\Administrator]:
        Sharename      Type      Comment
        ---------      ----      -------
        sysvol          Disk
        netlogon        Disk
        IPC$            IPC      IPC Service (Samba 4.24.1)
SMB1 disabled -- no workgroup available
</pre>
==== Testar DNS ====
host -t A rjgsnet.local
Esperando:
rjgsnet.local has address 192.168.0.100
ou:
/usr/local/samba/bin/samba-tool dns query localhost rjgsnet.local @ ALL
Esperando:
<pre>
Password for [[email protected]]:
  Name=, Records=4, Children=0
    SOA: serial=1, refresh=900, retry=600, expire=86400, minttl=3600, ns=rjgs.rjgsnet.local., email=hostmaster.rjgsnet.local. (flags=600000f0, serial=1, ttl=3600)
    NS: rjgs.rjgsnet.local. (flags=600000f0, serial=1, ttl=900)
    A: 192.168.0.100 (flags=600000f0, serial=1, ttl=900)
    AAAA: 2804:014c:7983:9179:9a4b:e1ff:fe12:7d6f (flags=600000f0, serial=1, ttl=900)
  Name=_msdcs, Records=0, Children=0
  Name=_sites, Records=0, Children=1
  Name=_tcp, Records=0, Children=4
  Name=_udp, Records=0, Children=2
  Name=DomainDnsZones, Records=0, Children=2
  Name=ForestDnsZones, Records=0, Children=2
  Name=rjgs, Records=2, Children=0
    A: 192.168.0.100 (flags=f0, serial=1, ttl=900)
    AAAA: 2804:014c:7983:9179:9a4b:e1ff:fe12:7d6f (flags=f0, serial=1, ttl=900)
</pre>
==== Testar Kerberos ====
kinit Administrator
Esperado:
Password for [email protected]:
Warning: Your password will expire in 41 days on Sun 21 Jun 2026 12:41:52 AM -03
Depois:
klist
Esperado:
<pre>
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: [email protected]
Valid starting      Expires              Service principal
05/10/2026 01:14:47  05/10/2026 11:14:47  krbtgt/[email protected]
        renew until 05/11/2026 01:14:40
</pre>
====  Testar usuários ====
/usr/local/samba/bin/samba-tool user list
Esperado: Deve listar os usuários iniciais
Administrator
Guest
krbtgt
== Iniciar com o boot ==
Criar o arquivo do serviço
vim /etc/systemd/system/samba-ad-dc.service
Cole o conteúdo e salve:
<pre>
[Unit]
Description=Samba Active Directory Domain Controller
After=network.target network-online.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/usr/local/samba/var/run/samba.pid
ExecStart=/usr/local/samba/sbin/samba --daemon
ExecReload=/bin/kill -HUP $MAINPID
ExecStop=/bin/kill -TERM $MAINPID
LimitNOFILE=16384
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
</pre>
Recarregue o systemd
systemctl daemon-reload
Habilite no boot
systemctl enable samba-ad-dc
== Desabilitar a complexidade da senha ==
samba-tool domain passwordsettings set --complexity=off
Esperado:
Password complexity deactivated!
All changes applied successfully!
Diminuir a complexidade para 4 caracteres
samba-tool domain passwordsettings set --min-pwd-length=4
== Fonte ==
* https://wiki.samba.org/index.php/Installing_Samba


== Colocar no Domínio ==
== Colocar no Domínio ==

Edição das 01h59min de 10 de maio de 2026

Samba4 AC/DC

Provisionamento

Fixar IP

Cópia de segurança do arquivo

cp /etc/netplan/*.yaml /etc/netplan/*.yaml.bckp

Edite o arquivo ".yaml" em "/etc/netplan" conforme abaixo:

network:
  version: 2
  ethernets:
    enp0s3:
      dhcp4: false
      adresses: [192.168.0.100/24]
      routes:
        - to: default
          via: 192.168.0.1
      nameservers:
        adresses:
          - 8.8.8.8
          - 1.1.1.1

Ajuste no /etc/hosts

Edite o arquivo

vim /etc/hosts

ajuste como o trecho abaixo

127.0.0.1       localhost.localdomain   localhost
127.0.1.1       dominio.dominio.local         ad1
192.168.18.10   ad1.dominio.local       ad1

Ajuste no /etc/hostname

Edite o arquivo /etc/hostname

hostnamectl set-hostname AD1.DOMINIO.LOCAL

Ajuste date e hora

timedatectl set-timezone America/Sao_Paulo

Para verificar a hora

date

Instala as dependências

apt install autoconf
apt install bind9utils
apt install bison
apt install debhelper
apt install dnsutils
apt install docbook-xml
apt install docbook-xsl
apt install flex
apt install gdb
apt install libjansson-dev
apt install libacl1-dev
apt install libaio-dev
apt install libarchive-dev
apt install libattr1-dev
apt install libblkid-dev
apt install libbsd-dev
apt install libcap-dev
apt install libcups2-dev
apt install libgnutls28-dev
apt install libgpgme11-dev
apt install libjson-perl
apt install libldap2-dev
apt install libncurses5-dev
apt install libpam0g-dev
apt install libparse-yapp-perl
apt install libpopt-dev
apt install libreadline-dev
apt install nettle-dev
apt install perl
apt install perl-modules
apt install pkg-config
apt install python-all-dev
apt install python-crypto
apt install python-dbg
apt install python-dev
apt install python-dnspython
apt install python3-dnspython
apt install python-gpg
apt install python3-gpg
apt install python-markdown
apt install python3-markdown
apt install python3-dev
apt install xsltproc
apt install zlib1g-dev
apt install liblmdb-dev
apt install lmdb-utils
apt install libsystemd-dev

Reinicia

reboot now

Instala mais o samba e suas dependências

apt install samba
apt install krb5-user
apt install winbind
apt install libnss-winbind
apt install smbclient
apt install ldap-utils 
apt install acl 
apt install attr 
apt install ntp

Configurar o Kerberos

Configuring Kerberos Authentication

default kerberos Realm: 
DOMINIO.LOCAL
Kerberos Server for your realm:
127.0.0.1
Administrative Server for your Kerberos realm:
127.0.0.1

Parar alguns serviços

systemctl stop smbd.service
systemctl stop nmbd.service
systemctl stop winbind.service

Remover o smb.conf

mv /etc/samba/smb.conf /etc/samba/smb.conf.bckp

Provisionamento

samba-tool domain provision --use-rfc2307 --interactive

Em um certo momento do provisionamento, será perguntado algumas informações, confirme como abaixo:

Realm [ ]: DOMINIO.LOCAL
Domain[ ]: DOMINIO
Server Role [dc]: dc
DNS Backend [SAMBA_INTERNAL]: SAMBA_INTERNAL
DNS Forwarder IP address[127.0.0.53]: 8.8.8.8
Administrator password: *************

Iniciar os serviços que foram parados anteriormente:

/etc/init.d/samba-ad-dc restart
systemctl unmask samba-ad-dc.service
systemctl enable samba-ad-dc.service
systemctl restart samba-ad-dc.service
systemctl status samba-ad-dc.service

Desativar o systemd-resolved

systemctl disable systemd-resolved.service
systemctl stop systemd-resolved.service

Editar o arquivo /etc/resolv.conf

vim /etc/resolv.conf

Inclua o trecho abaixo:

nameserver 192.168.0.1
domain dominio.local
search dominio.local

Exportar o krb5.conf

cp -vb /var/lib/samba/private/krb5.conf /etc/krb5.conf

Reinicia

reboot now

Realização de testes

smbclient -L localhost -U Administrator

Verificar se o serviço de DNS está funcionando fazendo as resoluções:

host -t A dominio.local
host -t SRV _ldap._tcp.dominio.local
host -t SRV _kerberos._udp.dominio.local

Verificar o funcionamento do KERBEROS

kinit [email protected]
klist

Verifica o nivel da árvore

samba-tool domain level show

SAMBA AD (Compilado)

Preparação

=== Definir hostname correto (FQDN)

O hostname precisa ser um nome completo (FQDN).

hostnamectl set-hostname ad20.fourtrust.local

E valide:

hostname -f

Ajustar /etc/hosts

vim /etc/hosts

Deixe assim (ajuste IP e domínio):

127.0.0.1       localhost
192.168.0.10    ad20.fourtrust.local ad20

IP fixo (OBRIGATÓRIO)

AD não funciona com DHCP.

Configure no Netplan:

 vim /etc/netplan/*.yaml

<pre>
Exemplo:

network:
  version: 2
  ethernets:
    eth0:
      dhcp4: no
      addresses:
        - 192.168.0.100/24
      gateway4: 192.168.0.1
      nameservers:
        addresses:
          - 127.0.0.1
	        - 8.8.8.8

Depois:

netplan try
netplan apply

Resolver DNS local

Antes de provisionar, o sistema já deve usar ele mesmo como DNS:

Verifique o link simbólico atual

ls -l /etc/resolv.conf

Desabilite o systemd-resolved

sudo systemctl disable --now systemd-resolved

Edite:

vim /etc/resolv.conf

Deixe:

nameserver 127.0.0.1
search fourtrust.local

Sincronização de horário (CRÍTICO pro Kerberos)

Kerberos quebra se o horário estiver errado.

Setar "Time Zone" para America - São Paulo.

timedatectl set-timezone America/Sao_Paulo

Validando:

timedatectl 
               Local time: Wed 2026-05-06 10:58:01 -03   
           Universal time: Wed 2026-05-06 13:58:01 UTC   
                 RTC time: Wed 2026-05-06 13:58:02       
                Time zone: America/Sao_Paulo (-03, -0300)
System clock synchronized: yes                           
              NTP service: active                        
          RTC in local TZ: no           

Remover conflitos (IMPORTANTÍSSIMO)

Pare qualquer serviço que conflita com o Samba AD:

systemctl stop smbd nmbd winbind
systemctl disable smbd nmbd winbind

Se instalou pacotes via apt antes, considere remover:

apt remove samba samba-common-bin -y

Limpar configurações antigas

Se já tentou antes:

rm -rf /usr/local/samba/etc/smb.conf
rm -rf /usr/local/samba/private/*
rm -rf /usr/local/samba/var/*

Teste básico antes do provision

Teste resolução:

hostname -f
ping ad20.fourtrust.local

Instalação

Baixa os arquivos

wget https://download.samba.org/pub/samba/samba-latest.tar.gz

Descompacta

tar -xvf sambaxxxx.tar.gz

Instala dependencias

Navegue até a pasta onde está o script que instala as dependências:

sambaxxx/bootstrap/generated-dists/ubuntuxx/bootstrap.sh

roda o script como sudo

sudo ./bootstrap.sh

Compila

Dentro da pasta do samba:

./configure
make
make install

Provision

Tem que resolver para o IP local.

samba-tool domain provision --use-rfc2307 --interactive

Pós provisionamento

ln -sf /var/lib/samba/private/krb5.conf /etc/krb5.conf

Pós provisionamento

Mudar o PATH

Edite:

sudo vim /etc/profile

Adicione no FINAL do arquivo e salve-o:

export PATH=$PATH:/usr/local/samba/bin:/usr/local/samba/sbin

Depois recarregue:

source /etc/profile

Validando:

which samba
which samba-tool
which smbclient

Deve retornar algo como:

/usr/local/samba/sbin/samba
/usr/local/samba/bin/samba-tool

Staus do Samba

systemctl status samba-ad-dc
systemctl start samba-ad-dc
systemctl enable samba-ad-dc

Testar o domínio

/usr/local/samba/bin/samba-tool domain level show

Esperado:

Domain and forest function level for domain 'DC=rjgsnet,DC=local'

Forest function level: (Windows) 2008 R2
Domain function level: (Windows) 2008 R2
Lowest function level of a DC: (Windows) 2008 R2

Testar autenticação local

/usr/local/samba/bin/smbclient -L localhost -U Administrator

Vai pedir senha do Administrator

Esperado:

 Password for [RJGSNET\Administrator]:

        Sharename       Type      Comment
        ---------       ----      -------
        sysvol          Disk
        netlogon        Disk
        IPC$            IPC       IPC Service (Samba 4.24.1)
 SMB1 disabled -- no workgroup available
 

Testar DNS

host -t A rjgsnet.local

Esperando:

rjgsnet.local has address 192.168.0.100

ou:

/usr/local/samba/bin/samba-tool dns query localhost rjgsnet.local @ ALL

Esperando:

Password for [[email protected]]:
  Name=, Records=4, Children=0
    SOA: serial=1, refresh=900, retry=600, expire=86400, minttl=3600, ns=rjgs.rjgsnet.local., email=hostmaster.rjgsnet.local. (flags=600000f0, serial=1, ttl=3600)
    NS: rjgs.rjgsnet.local. (flags=600000f0, serial=1, ttl=900)
    A: 192.168.0.100 (flags=600000f0, serial=1, ttl=900)
    AAAA: 2804:014c:7983:9179:9a4b:e1ff:fe12:7d6f (flags=600000f0, serial=1, ttl=900)
  Name=_msdcs, Records=0, Children=0
  Name=_sites, Records=0, Children=1
  Name=_tcp, Records=0, Children=4
  Name=_udp, Records=0, Children=2
  Name=DomainDnsZones, Records=0, Children=2
  Name=ForestDnsZones, Records=0, Children=2
  Name=rjgs, Records=2, Children=0
    A: 192.168.0.100 (flags=f0, serial=1, ttl=900)
    AAAA: 2804:014c:7983:9179:9a4b:e1ff:fe12:7d6f (flags=f0, serial=1, ttl=900)

Testar Kerberos

kinit Administrator

Esperado:

Password for [email protected]:
Warning: Your password will expire in 41 days on Sun 21 Jun 2026 12:41:52 AM -03

Depois:

klist

Esperado:

Ticket cache: FILE:/tmp/krb5cc_0
Default principal: [email protected]

Valid starting       Expires              Service principal
05/10/2026 01:14:47  05/10/2026 11:14:47  krbtgt/[email protected]
        renew until 05/11/2026 01:14:40

Testar usuários

/usr/local/samba/bin/samba-tool user list

Esperado: Deve listar os usuários iniciais

Administrator
Guest
krbtgt

Iniciar com o boot

Criar o arquivo do serviço

vim /etc/systemd/system/samba-ad-dc.service

Cole o conteúdo e salve:

[Unit]
Description=Samba Active Directory Domain Controller
After=network.target network-online.target
Wants=network-online.target

[Service]
Type=forking

PIDFile=/usr/local/samba/var/run/samba.pid

ExecStart=/usr/local/samba/sbin/samba --daemon
ExecReload=/bin/kill -HUP $MAINPID
ExecStop=/bin/kill -TERM $MAINPID

LimitNOFILE=16384

Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

Recarregue o systemd

systemctl daemon-reload

Habilite no boot

systemctl enable samba-ad-dc

Desabilitar a complexidade da senha

samba-tool domain passwordsettings set --complexity=off

Esperado:

Password complexity deactivated!
All changes applied successfully!

Diminuir a complexidade para 4 caracteres

samba-tool domain passwordsettings set --min-pwd-length=4

Fonte

Colocar no Domínio

Linux Desktop

Para inserir seu Ubuntu Desktop (ou qualquer outro com base no Ubuntu) no domínio DOMINIO.LOCAL, execute o passo a passo pelo terminal.

Requisitos:

  • Nome DNS resolvido corretamente (/etc/resolv.conf)
  • Usuário do domínio com permissão para adicionar máquinas (ex: Administrador)
  • Hora sincronizada com o AD
  • Hostname da máquina configurado corretamente
🔧 1. Configure hostname e resolv.conf
A. Defina o hostname:

sudo hostnamectl set-hostname xubuntu.dominio.local

B. Edite o /etc/hosts:

sudo nano /etc/hosts

Adicione (ou edite) a linha correspondente:

192.168.0.123  xubuntu.dominio.local  xubuntu

C. Configure o DNS para apontar para o Samba AD:

sudo nano /etc/systemd/resolved.conf

Altere (ou descomente e edite) as linhas:

DNS=192.168.0.10
Domains=dominio.local

Salve, e reinicie o serviço de DNS:

sudo systemctl restart systemd-resolved

🕓 2. Configure o timezone e sincronize o relógio (importante!)

sudo timedatectl set-timezone America/Sao_Paulo
sudo apt install chrony -y

Edite /etc/chrony/chrony.conf e adicione no início:

server 192.168.0.10 iburst

Depois:

sudo systemctl restart chrony
chronyc tracking

📦 3. Instalar os pacotes necessários

sudo apt update
sudo apt install realmd sssd sssd-tools adcli samba-common-bin packagekit libnss-sss libpam-sss krb5-user -y

Durante a instalação do krb5-user, insira:

    Realm: DOMINIO.LOCAL

    Servidor KDC: dominio.local

    Servidor Admin: dominio.local

🔐 4. Testar autenticação no domínio (Kerberos)

kinit [email protected]

Você será solicitado a inserir a senha. Se tudo estiver certo, você pode verificar com:

klist

🏁 5. Ingressar a máquina no domínio

sudo realm join --user=administrador DOMINIO.LOCAL

Se houver erro de DNS ou tempo, volte aos passos anteriores.
🔍 6. Verifique se foi ingressado corretamente

realm list

Você deve ver algo como:

realm-name: DOMINIO.LOCAL
configured: kerberos-member

👥 7. Permitir usuários do domínio

Para permitir todos os usuários:

sudo realm permit --all

Ou apenas um grupo:

sudo realm permit --groups "DOMINIO\Domain Users"

👤 8. Login de usuários do domínio (no LightDM ou terminal)

Você pode logar com:

[email protected]

Para que usuários do domínio tenham diretórios home:

sudo pam-auth-update

E marque: "Create home directory on login"
🧪 9. Testar no terminal

Tente rodar:

id [email protected]

Você deve ver as informações do usuário, com grupos do domínio.
💡 DICA: Evite digitar o domínio no login

Edite /etc/sssd/sssd.conf (se não existir, crie com cuidado):

[sssd]
domains = dominio.local
config_file_version = 2
services = nss, pam

[domain/dominio.local]
id_provider = ad
override_homedir = /home/%u
default_shell = /bin/bash

Depois:

sudo chmod 600 /etc/sssd/sssd.conf
sudo systemctl restart sssd