Samba significa coisas diferentes para pessoas diferentes. Para alguns, é uma maneira de implementar a rede no estilo LanMan sem dízimo para a Microsoft, usando o WinBind para fornecer pseudo serviços de controlador de domínio sem realmente executar um Windows Server. Talvez seja por isso que "drookie" fez o comentário "Parece que você tem o AD em execução, mas, por algum motivo, não quer usá-lo. Por que usar o samba então? ” Por quê? Porque estou usando o Samba principalmente para o suporte básico do CIFS. Tudo o que é extra WinBind / ADS home-dir e cache de dados DC em cache é algo que eu realmente não queria. Eu estava procurando Linux para ainda definir autorização & acesso, não abri-lo para todos os usuários do domínio. Mas, para os usuários permitidos, use a autenticação Kerberos. (O Samba - especialmente o Samba4 - está se dirigindo para a emulação completa do Active Directory dos nós do Linux em um domínio do Windows AD, até a herança do SID / GUID, participação na UO etc. Seu objetivo é não ter necessidade de criar contas locais do Linux porque o Samba irá criá-los on-the-fly com base nos perfis do AD Superando minhas necessidades.)
Desde que eu estava olhando para o Samba principalmente para a funcionalidade do CIFS, eu esperava que o AD pudesse ser usado apenas para a parte de autenticação através das chamadas do Kerberos (como eu já implementei para o SSH). Se eu não precisava de junção de domínio para que o Kerberos funcionasse no nível TTY / SSH, eu realmente precisava dele para o Samba + Kerberos? Infelizmente, a resposta é sim. Mas apesar disso, eu ainda era capaz de realizar meu objetivo de AD / Kerberos authn sem transformar o host Linux em um PDC / BDC ou adiar todo o controle authz para o modo ADS. O que eu tenho funciona, e esta é a minha interpretação do porquê:
O Kerberos básico funciona no nível PAM / TTY porque o usuário está digitando sua senha interativamente, alimentado diretamente na biblioteca krb5; quando executado no contexto do usuário que faz a solicitação, nenhuma junção de domínio é necessária. No entanto, no caso de autenticar compartilhamentos do CIFS, o cliente do Windows já criptografou a senha que o usuário digitou, portanto, quando o Samba a obtiver, será o hash NTLMv2. É provavelmente por isso que o “livro de Hornbill” da O’Reilly diz que “as linhas do módulo auth PAM são completamente ignoradas” pelo Samba. Nesse caso, o Samba deve entrar em contato com o servidor do AD com segurança para recuperar os detalhes da credencial para saber com certeza se o usuário / senha está correto. Por esse motivo, uma junção de domínio é necessária. Em essência, o Samba associado a um domínio está atuando como um proxy Kerberos para entrar em contato com o AD e verificar as credenciais do cliente.
Descobri que mesmo com um domínio obrigatório, não é necessário executar um daemon WinBind local ou transformar o host Linux em um servidor AD completo. Aqui está o que eu fiz no arquivo de configuração do Samba4:
security = ADS
passdb backend = tdbsam
realm = DOMAIN.COM
password server = *
encrypt passwords = yes
lanman auth = no
ntlm auth = no # NTLMv2
kerberos method = system keytab
username map = /etc/samba/smbusers
guest account = nfsnobody
map to guest = Bad User
obey pam restrictions = yes
É provavelmente mais significativo apontar o que eu não faço:
- directivas winbind são omitidas do arquivo de configuração smb.conf
- o serviço winbind não está ativado / em execução (para armazenar em cache os dados do AD como se fossem um DC)
- O winbind não foi adicionado ao /etc/nsswitch.conf (para usar o domínio como um fonte válida de usuário local)
- winbind e mkhomedir não são adicionados ao /etc/pam.d/system-auth (para permitir que os usuários do domínio façam login e criem contas dinamicamente)
O mínimo é que uma junção de domínio é necessária para ativar a pesquisa Kerberos em relação ao acesso de usuário local:
# net ads join -U Administrator
# net ads keytab create
No entanto, nenhum serviço é habilitado para transformar o host Linux em um substituto PDC / BDC ou ADS de autorização de acesso para transporte de cartão. Eu estou usando o Samba + Kerberos estritamente para validação de usuário local e nada mais.