我在使用 Samba 和 Active Directory 组时遇到了问题,其中包含特殊字符,例如“@”(空格)。
例如,我有一个名为“名字姓[电子邮件保护]',我在 Samba 中分享:
[share_city]
path = /data/share_city
create mask = 0660
directory mask = 2771
force create mode = 0660
create mode = 0660
browseable = Yes
browsable = Yes
recycle:repository = .RecycleBin$/%U
vfs object = recycle:repository recycle:keeptree
write list = @"name.surname [email protected]"
recycle:keeptree = yes
recycle:versions = yes
recycle:touch = no
recycle:exclude = *.tmp|*.temp|*.obj|~$*
recycle:exclude_dir = /tmp|/temp|/cache
recycle:maxsize = 1073741824
recycle:noversions = *.mdb
admin users = adminad
使用 smbclient 我可以连接共享:=> ls 没问题
smb: \> ls
. D 0 Fri Nov 25 18:55:31 2011
.. D 0 Fri Nov 25 17:34:39 2011
test3 D 0 Fri Nov 25 18:55:31 2011
56569 blocks of size 8388608. 52263 blocks available
=> mkdir 不起作用
smb: \> mkdir test4
NT_STATUS_MEDIA_WRITE_PROTECTED making remote directory \test4
因此,如果我使用系统访问进行测试,则一切都正常,并且 acl 继承也能正常工作
并且对于同一活动目录中不包含字符的组,一切运行良好。
我所尝试做的事情有可能实现吗?
答案1
从 AD 的角度来看,组/安全主体名称中禁止使用的字符非常少。特别是 @ 符号是允许的。禁止使用的字符包括:
前导空格;尾随空格;以及以下任意字符:
# , + " \ < > ;
但是,如果您希望“Pre-Windows 2000”名称与 CN 匹配,则您可能不会使用:
/ \ [ ] : ; | = , + * ? < > "
请注意,实际上,AD 允许您使用井号 (#) 创建组。还请注意,“samAccountName”属性是“Windows 2000 之前”的名称,因此大多数人会坚持使用该不允许的字符列表。
更多信息:
Active Directory 对象名称
http://technet.microsoft.com/en-us/library/cc776019%28WS.10%29.aspx