TL;DR

TL;DR

TL;DR

Я хочу, чтобы клиент Windows мог получить доступ к общему ресурсу Samba, используя учетные данные freeipa.

Проблема

Это на суперпользователе, а не на serverfault, потому что это не рабочая производственная среда; это моя домашняя сеть. Существует множество руководств по использованию GNU/Linux samba для взаимодействия с Windows. Но я не хочу иметь кросс-доменное доверие (мой домен Windows AD в конечном итоге исчезнет).

Могу ли я настроить samba так, чтобы она указывала на freeipa (ipasam? ldapsam?), чтобы на моем клиенте Windows (который я держу для игр) я мог использовать "[email protected]" для подключения к \linuxserver\sharename?

Я знаю, как настроить samba для использования существующего домена AD для присоединенного к домену хоста GNU/Linux, но это не то, что я делаю здесь. На этот раз мой хост — контроллер домена freeipa, но я могу сделать клиент freeipa своим файловым сервером. У меня есть nfs для других хостов Linux, но мой быстрый поиск по "nfs windows" не показал ничего, что было бы лучше/проще, чем моя желаемая цель здесь.

Возможности

  • Могу ли я использовать бэкэнды ipasam или ldapsam?
  • Могу ли я использовать Samba в качестве «контроллера домена Windows» и сделать так, чтобы он доверял домену ipa и сопоставлял пользователей?

обновление 7 сентября

я нашелhttps://techslaves.org/2011/08/24/freeipa-and-samba-3-integration/и следовал его шагам, которые показывают, как изменить схему freeipa, чтобы включить свойства samba. Но я все еще получаю ошибки: NT_STATUS_WRONG_PASSWORD.

решение1

Спустя 8 месяцев я наконец решил проблему!

Поделиться Samba с аутентификацией freeipa

Полный набор информации находится по адресуhttps://bgstack15.wordpress.com/2017/05/10/samba-share-with-freeipa-auth/.

На контроллере freeipa:

yum -y install ipa-server-trust-ad
ipa-adtrust-install --add-sids

После запуска --add-sids пользователям необходимо сбросить свои пароли, чтобы freeipa сгенерировала значение ipaNTHash их паролей.

На сервере Samba:

yum -y install ipa-server-trust-ad

Откройте запрашиваемые порты брандмауэра (TCP 135,138,139,445,1024-1300; UDP 138,139,389,445)

Разрешить samba читать пароли

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

Подготовьте конфигурацию Samba и перезапустите 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

Связанный контент