我们正在考虑在Debian(5.0.3)上为我们的mac客户端部署SMB家庭,而不是购买四个新的Xserve.我们已经构建了测试服务器并且运行正常.
Windows客户端表现完美,但我们遇到OS X(10.6.x和10.5.x)的问题.我们正在使用这条路线而不是Windows文件服务器,因为在这种情况下出现了一大堆其他问题.
具体来说,当安装启用了unix扩展且远程服务器绑定到AD的SMB共享时,查找程序无法将文件保存在共享上,而是触摸文件,然后使用-36 IO错误进行轰炸,文件夹创建就可以了.在终端中复制文件表现良好,问题似乎仅限于查找程序.
问题出现(我认为),因为使用unix扩展时传递了远程UID / GID. OS X使用自己的winbind idmap(odsam)来计算AD用户和组的有效UID / GID,同时我们在服务器上使用rid map.因此,发现者选择尊重所有权的不匹配.
OS X似乎如何处理这个问题是在文件权限级别使用远程uid和gid(见下文),然后设置OS X acl,授予本地uid / gid对文件具有适当权限的权限.我认为finder接触文件(内核允许因为ACL),然后检查文件系统权限并丢弃IO错误.
在客户端
fc-003353-d:homes2 root# ls -led test/ drwx------+ 2 135978 100513 16384 Feb 3 15:14 test/ 0: user:jfrench allow list,add_file,search,delete,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,writesecurity,chown,file_inherit,directory_inherit 1: group:ARTS\domain users allow 2: group:everyone allow 3: group:owner allow list,directory_inherit,only_inherit 4: group:group allow list,only_inherit 5: group:everyone allow list,only_inherit
我们尝试了以下没有任何运气:
>设置Linux端文件所有者以匹配OS X GID / UID
>在linux文件系统上添加ACL,授予OS X GID / UID权限
>禁用扩展属性
>在客户端的/etc/nsmb.conf中设置steams = no
我们目前正在运行一种解决方法,即关闭unix扩展,强制mac只是以u = rwx perms的本地用户挂载共享.这适用于大多数事情,但导致一些应用程序期望某些权限以微妙的方式打破.最糟糕的情况是我们将继续以这种方式运行,但我们希望启用unix扩展.
问候.
下面的相关SMB配置:
[global] workgroup = ARTS realm = *snip* security = ADS password server = *snip* unix extensions = yes panic action = /usr/share/panic-action %d idmap backend = rid:ARTS=100000-10000000 idmap uid = 100000-10000000 idmap gid = 100000-10000000 winbind enum users = Yes winbind enum groups = Yes veto files = /lost+found/aquota.*/ hide files = /desktop.ini/$RECYCLE.BIN/.*/AppData/Library/ ea support = yes store dos attributes = yes map system = no map archive = no map readonly = no