DR
Quero que um cliente Windows possa acessar um compartilhamento de samba usando uma credencial freeipa.
Problema
Isso ocorre no superusuário e não no servidor porque não é um ambiente de produção de trabalho; esta é minha rede doméstica. Existem muitos guias para usar o samba GNU/Linux para interoperabilidade com o Windows. Mas não quero ter confiança entre domínios (meu domínio do Windows AD acabará desaparecendo).
Posso configurar o samba para apontar para freeipa (ipasam? ldapsam?) para que no meu cliente Windows (que mantenho por perto para jogos) eu possa usar "[e-mail protegido]"para conectar-se ao \linuxserver\sharename?
Eu sei como configurar o samba para usar um domínio AD existente para um host GNU/Linux associado ao domínio, mas não é isso que estou fazendo aqui. Meu host desta vez é o controlador de domínio freeipa, mas posso transformar um cliente freeipa em meu servidor de arquivos. Eu tenho nfs para outros hosts Linux, mas minha pesquisa rápida em "nfs windows" não mostrou nada que fosse melhor/mais fácil do que meu objetivo desejado aqui.
Possibilidades
- Posso usar back-ends ipasam ou ldapsam?
- Posso usar o samba como um "controlador de domínio do Windows" e fazer com que ele confie no domínio ipa e mapeie os usuários?
atualização em 7 de setembro
eu encontreihttps://techslaves.org/2011/08/24/freeipa-and-samba-3-integration/e segui os passos que mostram como modificar o esquema do freeipa para incluir propriedades do samba. Mas ainda estou recebendo erros: NT_STATUS_WRONG_PASSWORD.
Responder1
Após 8 meses, finalmente resolvi o problema!
Compartilhamento de samba com autenticação freeipa
O conjunto completo de informações está emhttps://bgstack15.wordpress.com/2017/05/10/samba-share-with-freeipa-auth/.
No controlador freeipa:
yum -y install ipa-server-trust-ad
ipa-adtrust-install --add-sids
Após executar --add-sids, os usuários precisam redefinir suas senhas, para que o freeipa gere o valor ipaNTHash de suas senhas.
No servidor samba:
yum -y install ipa-server-trust-ad
Abra as portas do firewall solicitadas (TCP 135.138.139.445.1024-1300; UDP 138.139.389.445)
Permitir que o samba leia senhas
ipa permission-add "CIFS server can read user passwords" \
--attrs={ipaNTHash,ipaNTSecurityIdentifier} \
--type=user --right={read,search,compare} --bindtype=permission
ipa privilege-add "CIFS server privilege"
ipa privilege-add-permission "CIFS server privilege" \
--permission="CIFS server can read user passwords"
ipa role-add "CIFS server"
ipa role-add-privilege "CIFS server" --privilege="CIFS server privilege"
ipa role-add-member "CIFS server" --services=cifs/host2.vm.example.com
Prepare o samba conf e reinicie o samba.
tf=/etc/samba/smb.conf
touch "${tf}"; chmod 0644 "${tf}"; chown root:root "${tf}"; restorecon "${tf}"
cat < "${tf}"
[global]
debug pid = yes
realm = VM.EXAMPLE.COM
workgroup = VM
domain master = Yes
ldap group suffix = cn=groups,cn=accounts
ldap machine suffix = cn=computers,cn=accounts
ldap ssl = off
ldap suffix = dc=vm,dc=example,dc=com
ldap user suffix = cn=users,cn=accounts
log file = /var/log/samba/log
max log size = 100000
domain logons = Yes
registry shares = Yes
disable spoolss = Yes
dedicated keytab file = FILE:/etc/samba/samba.keytab
kerberos method = dedicated keytab
#passdb backend = ipasam:ldapi://%2fvar%2frun%2fslapd-VM-EXAMPLE-COM.socket
#passdb backend = ldapsam:ldapi://%2fvar%2frun%2fslapd-VM-EXAMPLE-COM.socket
passdb backend = ipasam:ldap://host2.vm.example.com ldap://host1.vm.example.com
security = USER
create krb5 conf = No
rpc_daemon:lsasd = fork
rpc_daemon:epmd = fork
rpc_server:tcpip = yes
rpc_server:netlogon = external
rpc_server:samr = external
rpc_server:lsasd = external
rpc_server:lsass = external
rpc_server:lsarpc = external
rpc_server:epmapper = external
ldapsam:trusted = yes
idmap config * : backend = tdb
ldap admin dn = cn=Directory Manager
[homes]
comment = Home Directories
valid users = %S, %D%w%S
browseable = No
read only = No
inherit acls = Yes
EOFCONF
systemctl restart smb.service