总结
我希望 Windows 客户端能够使用 freeipa 凭据访问 samba 共享。
问题
这是超级用户而不是 serverfault,因为它不是工作生产环境;这是我的家庭网络。有许多使用 GNU/Linux samba 与 Windows 互操作的指南。但我不想有跨域信任(我的 Windows AD 域最终会消失)。
我可以将 samba 配置为指向 freeipa(ipasam?ldapsam?),以便在我的 Windows 客户端(我用来玩游戏)上可以使用“[电子邮件保护]“连接到 \linuxserver\sharename?
我知道如何配置 samba 以将现有 AD 域用于已加入域的 GNU/Linux 主机,但这不是我在这里要做的。我这次的主机是 freeipa 域控制器,但我可能会将 freeipa 客户端作为我的文件服务器。我有其他 Linux 主机的 nfs,但我在“nfs windows”上快速搜索没有显示任何比我在这里期望的目标更好/更容易的东西。
可能性
- 我可以使用 ipasam 或 ldapsam 后端吗?
- 我可以使用 samba 作为“Windows 域控制器”并让其信任 ipa 域并映射用户吗?
9 月 7 日更新
我发现https://techslaves.org/2011/08/24/freeipa-and-samba-3-integration/并按照其步骤操作,这些步骤显示了如何修改 freeipa 的架构以包含 samba 属性。但我仍然收到错误:NT_STATUS_WRONG_PASSWORD。
答案1
经过8个月的时间,我终于解决了这个问题!
Samba 与 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值。
在 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 conf 并重新启动 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