Samba 与 Windows AD 共享选择错误的用户名

Samba 与 Windows AD 共享选择错误的用户名

我遇到了一个奇怪的问题,在网上找不到任何答案。

我有带有 Samba 3.6.3 的 ubuntu 12.04 LTS(ntp krb5-user smbfs smbclient winbind)

一开始一切正常,AD 中的组具有适当的文件访问权限,并且用户权限正常,但有一个异常情况除外:

有 2 个用户的名字相同:

西蒙·福利和西蒙·沃利

如果我以 simon wally 的身份登录 Windows 并尝试访问他的共享,则会被拒绝权限。当我查看 samba.log 时,它显示:

[2014/03/24 20:39:04.702632, 2] smbd/service.c:627(create_connection_session_info) 用户‘WINDOMAIN\simon folly’(来自会话设置)无权访问此共享(simonw)

如上所示,验证了错误的用户名。它似乎从列表中找到了第一个名字并选了那个。

因此,为了验证我的理论,我将 smb.conf 文件中的用户名更改为“simon folly”,并且当以 simon wally 身份登录时,我可以完全访问我的共享???

有人遇到过这种情况吗?如何解决?

以下是我在 smb.conf 中的分享

note: when I change wally to folly then wally has full access.
otherwise below gets denied.    

[simonw]
    comment = Simon Only
    path = /sharing/ceo
    valid users = "WINDOMAIN\simon wally"
    force group = "domain users"
    writable = yes
    read only = no
    force create mode = 0660
    create mask = 0777
    directory mask = 0777
    force directory mode = 0770
    access based share enum = yes
    hide unreadable = yes

预先感谢您的帮助 :)

答案1

该问题是由于 samba 不支持用户名内的空格而引起的,因为它们被用作分隔符。

可以使用以下解决方案来解决此问题,这将为带有空格的用户名创建一个别名:

  1. 通过将以下内容放入您的 samba 配置中来定义用户名映射:

    username map = /usr/local/private/usermap.txt
    
  2. 添加以下内容到/usr/local/private/usermap.txt

    WINDOMAIN\simonwally = "WINDOMAIN\simon wally"
    WINDOMAIN\simonfolly = "WINDOMAIN\simon folly"
    

    这将创建一个别名,因此名称可以是不带空格的用户

  3. 将配置中的有效用户部分更改为:

    valid users = "WINDOMAIN\simonwally"
    

    由于我们之前所做的映射,这将映射到具有空间的用户帐户,因此,它将接受用户共享。

  4. 检查 samba 配置是否包含错误(修改后总是建议这样做)在 bash 等终端上运行以下代码:

    testparm && echo "Syntax OK" || echo "Syntax Error"
    
  5. 重启 Samba:

    sudo service smbd restart
    

参考文献 1:解释如何在配置中使用空格。

参考文献 2:用于检查 samba 配置是否包含错误的代码。

相关内容