TL;DR

TL;DR

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

información relacionada