Samba использует аутентификацию freeipa для клиентов Windows, которые обращаются к общему ресурсу cifs
TL;DR
Я хочу, чтобы клиент Windows мог получить доступ к общему ресурсу samba с помощью учетных данных freeipa.
проблема
Это на суперпользователе, а не на сервере, потому что это не рабочая производственная среда; это моя домашняя сеть. Существует много руководств по использованию GNU/Linux samba для взаимодействия с Windows. Но я не хочу иметь междоменное доверие (мой домен Windows AD в конце концов уходит).
Могу ли я настроить samba для указания на freeipa (ipasam? Ldapsam?), Чтобы на моем клиенте Windows (я хожу по играм) я мог использовать "bgstack15@myfreeipadomain.example.com" для подключения к \linuxserver\sharename?
Я знаю, как настроить samba для использования существующего домена AD для присоединенного к домену хоста GNU / Linux, но это не то, что я здесь делаю. На этот раз моим хостом является контроллер домена freeipa, но я могу сделать клиент freeipa моим файловым сервером. У меня есть nfs для других хостов Linux, но мой быстрый поиск по "окнам nfs" не показал ничего, что могло бы быть лучше / проще, чем моя цель здесь.
Возможности
- Могу ли я использовать бэкэнды 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 месяцев я наконец-то решил проблему!
Самба делится с freeipa auth
Полный набор информации находится по адресу 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 для своих паролей.
На сервере самбы:
yum -y install ipa-server-trust-ad
Откройте запрашиваемые порты брандмауэра (TCP 135,138,139,445,1024-1300; UDP 138,139,389,445)
Разрешить самбе читать пароли
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
Подготовьте конфу самбы и перезапустите самбу.
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