PRATICANDO:
Adicionando ubuntu como Membro Usando o Back end ‘rid’
Aqui iremos praticar tudo o que vimos nas partes anteriores desse artigo de número 27.
Iremos adicionar a distro ubuntu, chamada aqui também de ubuntu, como membro do domínio lab.local.
O server01 tem ip 192.168.0.40 e o server02 possui o 192.168.0.41. Esses dois são controladores do domínio.
Os Passos Abaixo São Realizados no Ubuntu:
Acesse o ubuntu.
#1 Altere o arquivo /etc/resolv.conf. No caso do ubuntu o resolv.conf é gerenciado pelo systemd. Então iremos alterar o arquivo /etc/systemd/resolved.conf ao invés de /etc/resolv.conf.
elder@ubuntu:~$ sudo cat /etc/systemd/resolved.conf # This file is part of systemd. # # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. # # Entries in this file show the compile time defaults. # You can change settings by editing this file. # Defaults can be restored by simply deleting this file. # # See resolved.conf(5) for details [Resolve] DNS=192.168.0.40 192.168.0.41 #FallbackDNS= Domains=lab.local #LLMNR=no #MulticastDNS=no #DNSSEC=no #Cache=yes #DNSStubListener=yes
Aplique as alterações executando.
Obs.: poderíamos também alterar usando netplan.
elder@ubuntu:~$ sudo systemctl restart systemd-resolved.service
elder@ubuntu:~$ sudo netplan apply
#2 Deixe o arquivo /etc/hosts da seguinte forma:
elder@ubuntu:~$ sudo cat /etc/hosts 127.0.0.1 localhost 192.168.0.47 ubuntu.lab.local ubuntu 192.168.0.40 server01.lab.local server01 192.168.0.41 server02.lab.local server02
#3 Verifique horário e data. Não podem estar desatualizados. O ubuntu20 tem que estar com horário e data sincronizados com os do server01
elder@ubuntu:~$ date qua dez 29 17:00:01 -02 2021
#4 Instale o samba, kerberos e as bibliotecas libnss-winbind e libpam-winbind
elder@ubuntu:~$ sudo apt install samba winbind krb5-user libnss-winbind libpam-winbind -y
Se aparecer telas do kerberos solicitando que digite o domínio/realm pode digitar LAB.LOCAL e para servidor digite server01. Mas não se preocupe aqui pois o arquivo gerado por essas respostas será descartado e criaremos outro. Então esses campos preenchidos não valerão de nada no final.
Configurando o kerberos
Por precaução, tire uma cópia do arquivo de configuração do kerberos
elder@ubuntu:~$ sudo cp /etc/krb5.conf /etc/krb5.conf.bkp
Agora edite o arquivo /etc/krb5.conf e deixe com o conteúdo abaixo. Editarei com o vim
elder@ubuntu:~$ sudo vim /etc/krb5.conf [libdefaults] default_realm = LAB.LOCAL dns_lookup_realm = false dns_lookup_kdc = true
Obs.: Acima está como recomenda o site wiki.samba e assim funcionou sempre. Porém em uma situação tive que colocar o conteúdo abaixo para poder ter sucesso com o comando “kinit” e “klist”:
[libdefaults]
default_realm = LAB.LOCAL
dns_lookup_realm = false
dns_lookup_kdc = true
[realms]
LAB.LOCAL = {
kdc = server01
admin_server = server01
}
Configurando o nss service
Abra o arquivi /etc/nsswitch.conf e coloque a palavra winbind nas linhas passwd e group
elder@ubuntu:~$ sudo vim /etc/nsswitch.conf passwd: compat winbind group: compat winbind shadow: compat gshadow: files hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname networks: files protocols: db files services: db files ethers: db files rpc: db files netgroup: nis
Configurando o smb.conf do samba
Abra o arquivo smb.conf, apague todo o conteúdo e adicione o texto abaixo
elder@ubuntu:~$ sudo vim /etc/samba/smb.conf [global] security = ADS workgroup = LAB realm = LAB.LOCAL idmap config * : backend = tdb idmap config * : range = 3000-7999 idmap config LAB : backend = rid idmap config LAB : range = 10000-999999 winbind refresh tickets = Yes vfs objects = acl_xattr map acl inherit = Yes store dos attributes = Yes
Testes de Comunicação com o Servidor
Realize os testes abaixo
elder@ubuntu:~$ nslookup server01.lab.local Server: 127.0.0.53 Address: 127.0.0.53#53 Non-authoritative answer: Name: server01.lab.local Address: 192.168.0.40
Teste usando o comando host
elder@ubuntu:~$ host -t SRV _ldap._tcp.lab.local _ldap._tcp.lab.local has SRV record 0 100 389 server01.lab.local. _ldap._tcp.lab.local has SRV record 0 100 389 server02.lab.local.
Se der erro verifique o conteúdo do arquivo de dns: /etc/resolv.conf ou /etc/systemd/resolved.conf ou ainda em /etc/netplan/01-netcfg.yaml. Isso dependerá muito da sua distro.
Teste o kerberos usando os comandos “kinit” e “klist”
elder@ubuntu:~$ kinit administrator Password for administrator@LAB.LOCAL: Warning: Your password will expire in 6 days on ter 11 jan 2022 19:02:35 -03
e
elder@ubuntu:~$ klist Ticket cache: FILE:/tmp/krb5cc_1000 Default principal: administrator@LAB.LOCAL Valid starting Expires Service principal 05/01/2022 09:19:25 05/01/2022 19:19:25 krbtgt/LAB.LOCAL@LAB.LOCAL renew until 06/01/2022 09:19:23
Se der erro verifique o conteúdo do arquivo /etc/krb5.conf e de /etc/hosts. Verifique também o horário, tem que está ajustado com o do servidor.
Junte(join) o ubuntu como membro do domínio lab.local
Execute: “net ads join -U administrator”
elder@ubuntu:~$ sudo net ads join -U administrator
Pode ocorrer o erro abaixo em vermelho. Mas preste atenção na linha em verde onde afirma nosso êxito.
Enter administrator's password: Using short domain name -- LAB Joined 'UBUNTU' to dns domain 'lab.local' DNS Update for ubuntu.lab.local failed: ERROR_DNS_UPDATE_FAILED DNS update failed: NT_STATUS_UNSUCCESSFUL
O erro acima pode ser ignorado. Mas se quiser resolver veja esse artigo: Testando Atualizações Dinâmicas do DNS.
Iniciando samba, winbind e buscando usuários e grupos
Inicie o samba e o winbind
elder@ubuntu:~$ sudo systemctl start smbd nmbd winbind
Teste a conectividade do winbind com o server01 controlador de domínio
elder@ubuntu:~$ wbinfo --ping-dc checking the NETLOGON for domain[LAB] dc connection to "server01.lab.local" succeeded
Busque por usuários usando winbind
elder@ubuntu:~$ wbinfo -u LAB\guest LAB\administrator LAB\joao LAB\paulo LAB\krbtgt LAB\elder LAB\lucas
Busque pelos grupos
elder@ubuntu:~$ wbinfo -g LAB\domain controllers LAB\dnsupdateproxy LAB\domain admins LAB\enterprise read-only domain controllers LAB\allowed rodc password replication group LAB\domain users LAB\group policy creator owners LAB\cert publishers LAB\denied rodc password replication group LAB\domain computers LAB\read-only domain controllers LAB\enterprise admins LAB\domain guests LAB\dnsadmins LAB\schema admins LAB\ras and ias servers
Esses usuários e grupos têm que aparecerem também dentro de /etc/passwd, mas para isso precisamos acrescentar as linhas alaranjadas abaixo dentro de smb.conf
elder@ubuntu:~$ sudo cat /etc/samba/smb.conf [global] security = ADS workgroup = LAB realm = LAB.LOCAL idmap config * : backend = tdb idmap config * : range = 3000-7999 idmap config LAB : backend = rid idmap config LAB : range = 10000-999999 winbind refresh tickets = Yes vfs objects = acl_xattr map acl inherit = Yes store dos attributes = Yes winbind enum users = yes winbind enum groups = yes
Aplica as configurações com “smbcontrol all reload-config”
elder@ubuntu:~$ sudo smbcontrol all reload-config
Atenção:
winbind enum users = yes
winbind enum groups = yes
Devem ser usados somente para testes. Retire essas linhas após concluídos os testes.
Execute “getent passwd”
elder@ubuntu:~$ getent passwd ....... LAB\guest:*:10501:10513::/home/LAB/guest:/bin/false LAB\administrator:*:10500:10513::/home/LAB/administrator:/bin/false LAB\joao:*:11605:10513::/home/LAB/joao:/bin/false LAB\paulo:*:11119:10513::/home/LAB/paulo:/bin/false LAB\krbtgt:*:10502:10513::/home/LAB/krbtgt:/bin/false LAB\elder:*:11104:10513::/home/LAB/elder:/bin/false LAB\lucas:*:11116:10513::/home/LAB/lucas:/bin/false
Criando a pasta home
percebeu que ao executar o “getent passwd” é exibida /home/LAB/ como pasta home? verifique se essa pasta foi criada, se não a crie manualmente usando “mkdir /home/LAB”
No meu caso ela foi criada automaticamente. Mas se não tivesse bastaria executar:
sudo mkdir /home/LAB
Se por acaso quiser que a pasta dos usuários fiquem dentro de /home/ e não de /home/LAB basta adicionar a linha abaixo dentro de smb.conf
template homedir = /home/%U
Teste de Proprietário do Arquivo
Podemos ainda colocar um usuário do domínio como proprietário de um arquivo. Abaixo defino o usuário paulo e o grupo “domain users” como proprietário do arquivo textos.txt.
sudo chown "LAB\paulo":"LAB\domain users" textos.txt
Configurando PAM para Logarmos Usando Usuários do Domínio
Como essa distro ubuntu possui interface gráfica, ao ligarmos o computador e nos for apresentada a tela de login talvez desejamos usar usuários do domínio para logar ao invés de usuários locais.
Para isso devemos configurar PAM. Já instalamos a biblioteca responsável ao executarmos acima o comando “apt install libpam-winbind”
Execute o comando “pam-auth-update” e marque as opções abaixo
elder@ubuntu:/etc$ sudo pam-auth-update
Configuração de pacotes +-----------------------------------------------------+ Configuração PAM +-----------------------------------------------------+ | O PAM ("Pluggable Authentication Modules") determina como a autenticação, autorização e alteração de senha são tratados no | | sistema, assim como permite a configuração de ações adicionais a serem tomadas quando sessões de usuário são iniciadas. | | | | Alguns pacotes de módulos PAM fornecem perfis que podem ser usados para ajustar automaticamente o comportamento de todas as | | aplicações que usam PAM no sistema. Por favor, indique quais destes comportamentos você deseja habilitar. | | | | Perfis PAM para habilitar: | | | | [*] Unix authentication | | [*] Winbind NT/Active Directory authentication | | [*] Register user sessions in the systemd control group hierarchy | | [*] Create home directory on login | | [*] GNOME Keyring Daemon - Login keyring management | | [*] Inheritable Capabilities Management | | | | | | <Ok> <Cancelar> | | | +------------------------------------------------------------------------------------------------------------------------------+
Prontinho, agora somos capazes de acessarmos a interface gráfica da distro com nosso usuário e senha do domínio
Logando no terminal
Quando, acima, olhamos o conteúdo de /etc/passwd executando o comando “getent passwd” vimos que o login no terminal estava desativado. Veja abaixo o final alaranjado na linha “/bin/false”
elder@ubuntu:~$ getent passwd ...... LAB\lucas:*:11116:10513::/home/LAB/lucas:/bin/false
Devemos alterar de “/bin/false” para um shell qualquer, como “/bin/bash” ou “/bin/sh”….
Para isso usamos um “template shell = /bin/bash” dentro do smb.conf
elder@ubuntu:~$ sudo vim /etc/samba/smb.conf [global] security = ADS workgroup = LAB realm = LAB.LOCAL idmap config * : backend = tdb idmap config * : range = 3000-7999 idmap config LAB : backend = rid idmap config LAB : range = 10000-999999 winbind refresh tickets = Yes vfs objects = acl_xattr map acl inherit = Yes store dos attributes = Yes winbind enum users = yes winbind enum groups = yes template shell = /bin/bash
Reinicie o winbind e o samba
elder@ubuntu:~$ sudo systemctl restart smbd nmbd winbind
Veja como nosso /etc/passwd
elder@ubuntu:~$ getent passwd ........ LAB\lucas:*:11116:10513::/home/LAB/lucas:/bin/bash
Agora, podemos acessar no terminal usando nossos usuários do domínio
Logando num sistema sem interface gráfica
logando no terminal usando su
Obs.: Quando não der certo com “LAB\joao” tente escapar o \ assim “LAB\\joao”
Fontes: ubuntu
One Comment to “Samba 27: Configurando Samba Como um Membro do Domínio – Parte 05”