TL;DR
Quiero que un cliente de Windows pueda acceder a un recurso compartido de samba utilizando una credencial freeipa.
Problema
Esto es un superusuario y no un error del servidor porque no es un entorno de producción de trabajo; esta es mi red doméstica. Hay muchas guías para usar GNU/Linux samba para la interoperabilidad con Windows. Pero no quiero tener confianza entre dominios (mi dominio de Windows AD eventualmente desaparecerá).
¿Puedo configurar samba para que apunte a freeipa (ipasam? ldapsam?) para que en mi cliente de Windows (lo guardo para juegos) pueda usar "[correo electrónico protegido]"para conectarse al \linuxserver\sharename?
Sé cómo configurar samba para usar un dominio AD existente para un host GNU/Linux unido a un dominio, pero eso no es lo que estoy haciendo aquí. Esta vez mi servidor es el controlador de dominio freeipa, pero podría convertir un cliente freeipa en mi servidor de archivos. Tengo nfs para los otros hosts Linux, pero mi búsqueda rápida en "nfs windows" no mostró nada que fuera mejor o más fácil que mi objetivo deseado aquí.
Posibilidades
- ¿Puedo usar backends ipasam o ldapsam?
- ¿Puedo usar samba como "controlador de dominio de Windows" y hacer que confíe en el dominio ipa y asigne a los usuarios?
actualización el 7 de septiembre
encontréhttps://techslaves.org/2011/08/24/freeipa-and-samba-3-integration/y seguí sus pasos que muestran cómo modificar el esquema de freeipa para incluir propiedades de samba. Pero sigo recibiendo errores: NT_STATUS_WRONG_PASSWORD.
Respuesta1
¡Después de 8 meses, finalmente resolví el problema!
Samba comparte con autenticación freeipa
El conjunto completo de información está enhttps://bgstack15.wordpress.com/2017/05/10/samba-share-with-freeipa-auth/.
En el controlador freeipa:
yum -y install ipa-server-trust-ad
ipa-adtrust-install --add-sids
Después de ejecutar --add-sids, los usuarios deben restablecer sus contraseñas para que freeipa genere el valor ipaNTHash de sus contraseñas.
En el servidor samba:
yum -y install ipa-server-trust-ad
Abra los puertos del firewall que solicita (TCP 135.138.139.445.1024-1300; UDP 138.139.389.445)
Permitir que samba lea contraseñas
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 samba conf y reinicie 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