Nesse post vou explicar como adicionar um servidor Linux em um domínio Samba. Digo servidor, pois recomendo a ferramenta CID, Close in Directory, do Eduardo Moraes, nos casos de ambientes gráficos.
Aqui foi utilizado um Ubuntu 16.04, mas a ideia é a mesma para qualquer distribuição, só observar se alguns arquivos de configuração estão caminhos diferente, como setar o IP no RHEL/CentOs.
O intuito aqui é ajudar quem quer colocar a máquina no domínio, por isso que ele é mais direto com os arquivos de configuração e não com as explicações detalhadas que cada arquivo e comando faz.
Ps: Caso apresente algum erro de autenticação durante o processo, criei um usuário com o hostname no seu AD.
Veja a disposição dos servidores na rede para explicação do artigo:
Domínio → dominio.local
Servidor controlador de domínio →192.168.0.4 servidor.dominio.local
Servidor DNS primário → 192.168.0.4
Servidor DNS Secundário →192.168.0.35
Servidor DHCP →192.168.0.1
Como os clientes serão configurados pelo serviço DHCP, só especificarei o nome da máquina cliente:
Desktop cliente → linuxcliente
SETAR O IP MANUALMENTE
Editar o arquivo interfaces:
# vim /etc/network/interfaces
auto enp0s3
iface enp0s3 inet static
address 192.168.0.100
netmask 255.255.255.0
gateway 192.168.0.1
dns-nameserver 192.1680.4 192.168.0.35
dns-search dominio.local
Editar o arquivo /ETC/HOSTS
Editar o arquivo /etc/hosts para incluir um alias para controlador de domínio e alterar o hostname do desktop cliente (linuxcliente), acrescentando o fqdn, ou seja, o nome do domínio junto ao hostname da máquina cliente. No entanto, substitua os nomes abaixo pelos correspondentes na sua rede.
# vim /etc/hosts
Conteúdo a ser acrescentado:
127.0.0.1 linuxcliente.dominio.local localhost linuxcliente
192.168.0.4 servidor.dominio.local servidor
Agora vamos verificar se o nome da maquina foi alterado:
# hostname -f
Instalar os pacotes necessários
Para que o cliente possa ingressar no domínio, é necessário fazer a instalação dos seguintes pacotes (lembrando que os pacotes abaixo são para distros Debian Like):
# apt install vim ntp krb5-user krb5-config winbind samba samba-common smbclient cifs-utils libpam-krb5 libpam-winbind libnss-winbind
Se durante a instalação do kerberos forem apresentadas algumas telas com perguntas referentes ao KDC, pode continuar com um ENTER e seguir com a instalação dos pacotes.
Sincronizar data e hora com o servidor
Edite o arquivo de configuração do serviço NTP usando o Vim:
# vim /etc/ntp.conf
server 192.168.0.4
pool 192.168.0.4
restrict 192.168.0.4
Agora, reinicie o serviço de data e hora:
# /etc/init.d/ntp restart
ou
# service ntp restart
Resolução de DNS
Como o IP foi setado manualmente, provavelmente o resolv.conf já está com a configuração correta. Caso não esteja, basta adicionar o search e o nameserver
# vim /etc/resolv.conf
search dominio.local
nameserver 192.168.0.4
nameserver 192.168.0.35
Configurar o KERBEROS
Para um usuário autenticar-se no Active Directory, é necessário editar o arquivo /etc/krb5.conf e incluir informações sobre o servidor KDC (controlador de domínio kerberos). Nesse caso, o controlador de domínio com o Active Directory possui um KDC. Use o Vim para editar o arquivo e inclua as seguintes linhas no arquivo:
# vim /etc/krb5.conf
Conteúdo acrescentado:
[libdefaults]
default_realm = DOMINIO.LOCAL
[realms]
DOMINIO.LOCAL = {
kdc = servidor.dominio.local
default_domain = DOMINIO.LOCAL
admin_server = servidor.dominio.local
}
[domain_realm]
.dominio.local = DOMINIO.LOCAL
Para fazer o teste de comunicação do nosso ubuntu com o servidor vamos utilizar o kinit. Execute o comando com o seu usuário cadastrado no servidor. No artigo estou usando o usuário “Administrator”.
# kinit Administrator
Agora vamos listar o ticket:
# klist
O retorno do klist deverá ser algo parecido com:
Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: administrator@DOMINIO.LOCAL
Valid starting Expires Service principal
10-10-2017 12:00:32 09-10-2017 04:10:07 krbtgt/DOMINIO.LOCAL@DOMINIO.LOCAL
renew until 13-10-2017 12:00:32
Configurar o SAMBA
Toda configuração é feita no/etc/samba/smb.conf. Vamos criar um arquivo de backup do smb.conf original e depois criar um arquivo novo em branco:
# mv /etc/samba/smb.conf /etc/samba/smb.conf.original
# vim /etc/samba/smb.conf
[global]
security = ads
realm= DOMINIO.LOCAL
workgroup = DOMINIO
idmap uid = 10000-15000
idmap gid = 10000-15000
winbind enum users = yes
winbind enum groups = yes
template homedir = /home/%D/%U
template shell = /bin/bash
client use spnego = yes
winbind use default domain = yes
restrict anonymous = 2
winbind refresh tickets = yes
Agora restart o winbind e o samba
# service winbind restart
# service smbd restart
# service nmbd restart
Ingressar a máquina no domínio
Depois de configurar o Samba, execute o comando abaixo como root:
# net ads join -U Administrator
Assim como no Kinit, utilize um usuário com permissão para ingressar no domínio. O retorno do comando deve ser parecido com o que está abaixo:
Using short domain name – DOMINIO
Joined ‘LINUXCLIENTE’ to realm ‘DOMINIO.LOCAL’
Reinicie o Winbind:
# service winbind restart
Agora, faça o teste e liste os grupos e usuários do domínio com o comando wbinfo. Para listar usuários execute:
# wbinfo -u
Para listar os grupos execute:
# wbinfo -g
Caso não retorne nenhum nome de usuário ou grupo, reinicie o Winbind novamente.
Edite o arquivo NSSWITCH.CONF
Depois ingressar a máquina no domínio, é necessário editar o arquivo /etc/nsswitch.conf para que o sistema possa saber onde buscar informações de login dos usuários que estão se autenticando.
Edite o arquivo usando o Vim:
# vim /etc/nsswitch.conf
passwd: compat winbind
group: compat winbind
A partir desse momento, você já pode testar a maquina normalmente no domínio. Caso apresente algum erro, refaça o processo e verifique os usuários e suas permissões.
Leituras que me ajudaram a escrever esse artigo:
Viva o Linux – Stato Blog – TecMint
Ao som de Tulipa Ruiz – Proporcional