Se você tem mais de um servidor Samba em seu ambiente AD e eles sincronizados entre si, saiba que essa sincronização não garante que os IDs de usuários e grupos sejam também compartilhados. Assim, pode acontecer de pastas compartilhadas ficarem inacessíveis para alguns usuários dos demais servidores.
O samba guarda os IDs de usuários e grupos em um arquivo chamado idmap.ldb. Em um samba compilado sem alterar as configurações padrões, esse arquivo fica em /usr/local/samba/private/idmap.ldb
Precisamos copiar o arquivo idmap.ldb do servidor que tem o FSMO chamado PDC_Emulador para os outros servidores samba.
Para ver o servidor que está com a FSMO PDC_Emulator, execute os comandos:
root@debian11vm:~# cd /usr/local/samba/bin
root@debian11vm:/usr/local/samba/bin# ./samba-tool fsmo show
Em meu caso, tive esse resultado, informando que o servidor chamado DEBIAN11VM está responsável pela FSMO PdcEmulationMasterRole
root@debian1:/usr/local/samba/bin# ./samba-tool fsmo show SchemaMasterRole owner: CN=NTDS Settings,CN=DEBIAN11VM,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=empresa100,DC=interno InfrastructureMasterRole owner: CN=NTDS Settings,CN=DEBIAN11VM,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=empresa100,DC=interno RidAllocationMasterRole owner: CN=NTDS Settings,CN=DEBIAN11VM,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=empresa100,DC=interno PdcEmulationMasterRole owner: CN=NTDS Settings,CN=DEBIAN11VM,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=empresa100,DC=interno DomainNamingMasterRole owner: CN=NTDS Settings,CN=DEBIAN11VM,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=empresa100,DC=interno DomainDnsZonesMasterRole owner: CN=NTDS Settings,CN=DEBIAN11VM,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=empresa100,DC=interno ForestDnsZonesMasterRole owner: CN=NTDS Settings,CN=DEBIAN11VM,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=empresa100,DC=interno
Dica sobre Editar idmap.ldb
Você também pode editar idmap.ldb usando “ldbedit -H idmap.ldb”.
sudo /usr/local/samba/bin/ldbedit -H /usr/local/samba/private/idmap.ldb
Vendo Qual Servidor Samba Tem o FSMO PDC_Emulaor
Para saber qual servidor tem o FSMO chamado PDC_Emulador basta executar o comanado abaixo em qualquer um dos servidores AD DC.
#1 acesse a pasta pasta /usr/local/samba/bin
maria@debian11VM:~$ cd /usr/local/samba/bin
#2 execute sudo ./samba-tool fsmo show
maria@debian11VM:/usr/local/samba/bin$ sudo ./samba-tool fsmo show SchemaMasterRole owner: CN=NTDS Settings,CN=DEBIAN11VM,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=lab,DC=local InfrastructureMasterRole owner: CN=NTDS Settings,CN=DEBIAN11VM,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=lab,DC=local RidAllocationMasterRole owner: CN=NTDS Settings,CN=DEBIAN11VM,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=lab,DC=local PdcEmulationMasterRole owner: CN=NTDS Settings,CN=DEBIAN11VM,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=lab,DC=local DomainNamingMasterRole owner: CN=NTDS Settings,CN=DEBIAN11VM,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=lab,DC=local DomainDnsZonesMasterRole owner: CN=NTDS Settings,CN=DEBIAN11VM,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=lab,DC=local ForestDnsZonesMasterRole owner: CN=NTDS Settings,CN=DEBIAN11VM,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=lab,DC=local
Veja que DEBIAN11VM é quem detém todos os FSMO, inclusive nosso PDC_Emulador ou PdcEmulationMasterRole
Copiando idmap.ldb do Samba
Por padrão, um Samba DC armazena os IDs de usuário e grupo nos atributos ‘xidNumber’ em ‘idmap.ldb’. Devido à maneira como o ‘idmap.ldb’ funciona, você não pode garantir que cada DC usará o mesmo ID para um determinado usuário ou grupo. Para garantir que você use os mesmos IDs, você deve:
#1 Crie um hot-backup do arquivo /usr/local/samba/private/idmap.ldb no controlador de domínio existente e que é detentor do PCD_Emulador:
tdbbackup -s .bak /usr/local/samba/private/idmap.ldb
Isso cria um arquivo de backup /usr/local/samba/private/idmap.ldb.bak.
#2 Mova o arquivo de backup para a pasta /usr/local/samba/private/ no novo controlador de domínio associado e remova o sufixo .bak para substituir o arquivo existente.
#3 Execute o net cache flush no novo controlador de domínio.
para isso esteja acessado na pasta /usr/local/samba/bin no outro DC que terá o idmap.ldb substituído
Explicação da Página Wiki do Samba
Na homepage oficial do samba está escrito em relação ao samba versão 4.4.6 ou mais novo:
Por padrão, o serviço winbindd em um controlador de domínio (DC) Samba Active Directory (AD) gera IDs localmente no DC e os armazena no banco de dados idmap.ldb.
samba