OS X:在绑定到 AD 的 Samba 服务器上使用 SMB 共享时,Finder 错误 -36

Fre*_*hie 5 finder samba mac-osx winbind

我们正在考虑在 Debian (5.0.3) 上为我们的 mac 客户端部署 SMB 家庭,而不是购买四个新的 Xserve。我们已经建立了我们的测试服务器并正常运行。Windows 客户端运行良好,但我们遇到了 OS X(10.6.x 和 10.5.x)问题。由于采用这种方式时会出现一系列其他问题,我们将采用这种方式而不是 Windows 文件服务器。

具体来说,当挂载一个 SMB 共享并打开 unix 扩展并且远程服务器绑定到 AD 时,finder 无法将文件保存在共享上,而是触摸文件然后用 -36 IO 错误轰炸,创建文件夹就可以了。在终端中复制文件表现良好,问题似乎仅限于查找器。

问题出现(我认为)是因为在使用 unix 扩展时会传递远程 UID/GID。OS X 使用自己的 winbind idmap (odsam) 来计算 AD 用户和组的有效 UID/GID,同时我们在服务器上使用rid 映射。因此,发现者选择尊重的所有权不匹配。

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,add_file,search,delete,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,writesecurity,chown,file_inherit,directory_inherit,only_inherit
 4: group:group allow list,add_file,search,delete,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,writesecurity,chown,file_inherit,directory_inherit,only_inherit
 5: group:everyone allow list,add_file,search,delete,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,writesecurity,chown,file_inherit,directory_inherit,only_inherit
Run Code Online (Sandbox Code Playgroud)

我们尝试了以下方法但没有任何运气:

  • 设置 Linux 端文件所有者以匹配 OS X GID/UID
  • 在授予 OS X GID/UID 权限的 linux 文件系统上添加 ACL
  • 禁用扩展属性
  • 在客户端的 /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
Run Code Online (Sandbox Code Playgroud)

小智 1

该问题可能是由于 Finder 将资源分叉作为扩展属性处理的方式存在缺陷。

我会尝试:

EA 支持 = 否

这可能会产生 ._ 文件,但在 Apple 足够关心使其文件管理器具有互操作性之前,这就是您必须处理的问题。

编辑:我刚刚注意到你确实尝试禁用它们。这就是我遇到所有 Finder 问题的地方。经过一些简短的搜索后,似乎关闭 unix 扩展是唯一报告的修复方法。