与 reald/sssd 和 AD 集成共享文件夹

Nic*_*los 5 linux active-directory samba4 centos7

我已经设置了一台 CentOS 7 机器,并realmd通过以下方式将它加入我们的 AD :

yum install realmd samba-common oddjob oddjob-mkhomedir sssd
realm join --user=myuser@mydomain.local mydomain.local
Run Code Online (Sandbox Code Playgroud)

之后,realm list返回预期的输出

[root@webdev samba]# realm list
  mydomain.local
  type: kerberos
  realm-name: MYDOMAIN.LOCAL
  domain-name: mydomain.local
  configured: kerberos-member
  server-software: active-directory
  client-software: sssd
  required-package: oddjob
  required-package: oddjob-mkhomedir
  required-package: sssd
  required-package: adcli
  required-package: samba-common
  login-formats: %U@mydomain.local
  login-policy: allow-realm-logins
Run Code Online (Sandbox Code Playgroud)

我可以使用我的 AD 凭据通过 SSH 登录(所以我得到 myuser@mydomain.local@hostname)。

我现在需要允许 Windows 用户访问机器上的文件夹,但是 Samba 似乎不愿意合作 - 所有组合或用户名和密码都返回错误。我不知道如何调试这个,或者我是否遗漏了什么。

smb.conf文件基本上是:

 [root@webdev samba]# testparm
 Load smb config files from /etc/samba/smb.conf
 rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
 Processing section "[vHosts]"
 Loaded services file OK.
 Server role: ROLE_DOMAIN_MEMBER
 Press enter to see a dump of your service definitions

 [global]
    workgroup = MYDOMAINLOCAL
    realm = MYDOMAIN.LOCAL
    server string = Samba Server Version %v
    security = DOMAIN
    log file = /var/log/samba/log.%m
    max log size = 50
    load printers = No
    idmap config * : backend = tdb
    hosts allow = 127., 10.0.
    cups options = raw

  [vHosts]
    comment = Virtual Host repository
    path = /var/www/vhosts
    valid users = MYDOMAINLOCAL\%S
    read only = No
Run Code Online (Sandbox Code Playgroud)

我应该注意到我已将目录 ( /var/www/vhosts) 系统权限更改为 777。

任何帮助将不胜感激。提前致谢!

更新:

  • DC 是 Windows 2003 R2,客户端是 Windows 7
  • 已尝试将安全性设置为adsdomain,结果相似(没有雪茄)
  • 在 Windows 凭据对话框中收到的错误消息是“访问被拒绝”
  • 在禁用和启用防火墙的情况下都尝试过,没有区别
  • SELinux 被禁用

搜索 krb* 包:

[root@webdev logs]# rpm -qa | grep krb
sssd-krb5-common-1.11.2-68.el7_0.5.x86_64
sssd-krb5-1.11.2-68.el7_0.5.x86_64
samba-winbind-krb5-locator-4.1.1-35.el7_0.x86_64
krb5-libs-1.11.3-49.el7.x86_64
Run Code Online (Sandbox Code Playgroud)

和命令输出getent passwd MYDOMAINLOCAL\myusergetent passwd mydomain.local\myuser返回空白(无输出)。

Nic*_*los 10

回答我自己的问题:

唯一错误的是其中的valid users部分smb.conf- 似乎%S根本不起作用。

因此,对于 Windows 中名为“WebDevGrp”的安全组,在 CentOS 上它将显示为webdevgrp@mydomain.local(您可以通过 测试groups myuser@mydomain.local),然后您可以像这样进行 Samba 共享:

[vHosts]
  comment = Virtual Host repository
  path = /var/www/vhosts
  public = no
  writable = yes
  guest ok = no
  valid users = @"webdevgrp@mydomain.local"
Run Code Online (Sandbox Code Playgroud)

你甚至不会被提示输入密码 - 这一切都是无缝的!

附注。在调试 Samba 时,添加log level = 3到您的配置中,会有很大的不同!。

聚苯乙烯。我已经编写了整个过程的指南 - 从新安装的 CentOS 7 到使用 AD 身份验证/授权的 Samba 共享,您可以在我的博客中找到