我遇到了一个奇怪的问题,在网上找不到任何答案。
我有带有 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 不支持用户名内的空格而引起的,因为它们被用作分隔符。
可以使用以下解决方案来解决此问题,这将为带有空格的用户名创建一个别名:
通过将以下内容放入您的 samba 配置中来定义用户名映射:
username map = /usr/local/private/usermap.txt
添加以下内容到
/usr/local/private/usermap.txt
WINDOMAIN\simonwally = "WINDOMAIN\simon wally" WINDOMAIN\simonfolly = "WINDOMAIN\simon folly"
这将创建一个别名,因此名称可以是不带空格的用户
将配置中的有效用户部分更改为:
valid users = "WINDOMAIN\simonwally"
由于我们之前所做的映射,这将映射到具有空间的用户帐户,因此,它将接受用户共享。
检查 samba 配置是否包含错误(修改后总是建议这样做)在 bash 等终端上运行以下代码:
testparm && echo "Syntax OK" || echo "Syntax Error"
重启 Samba:
sudo service smbd restart
参考文献 1:解释如何在配置中使用空格。
参考文献 2:用于检查 samba 配置是否包含错误的代码。