设置如下:
- Windows 2008 服务器
c:\share
具有以下权限的文件夹(我认为,读取、读/写此时并不重要):- 用户1
- 用户2
c:\share\add_user3
具有以下权限的文件夹:- User3(在此文件夹级别明确添加)
- 用户 1(继承自
c:\share
) - 用户2(继承自
c:\share
)
share
要求c:\share
服务器本地管理员具有读/写权限的共享- 混合客户端环境:
- Windows XP 客户端
- Windows 7 客户端
- Mac 客户端(OSX v10.8.4)
Windows 客户端行为(XP 和 Windows 7):
- 用户创建文件
c:\share\test.txt
- 该文件的有效权限从文件夹继承:
- 用户1
- 用户2
- 用户创建文件
c:\share\add_user3\test.txt
- 该文件的有效权限从文件夹继承:
- 用户1
- 用户2
- 用户3
Mac 客户端行为:
- 用户创建文件
c:\share\test.txt
- 该文件的有效权限:
- 用户1
- 用户2
- 用户创建文件或用户编辑在 Windows 客户端上创建的
c:\share\add_user3\test.txt
现有文件c:\share\add_user3\test.txt
- 该文件的有效权限变为:
- 用户1
- 用户2
就像 Mac 客户端在共享文件夹级别 ( c:\share
) 上获取 NTFS 权限并将其直接应用于c:\share\add_user3\test.txt
。 的权限 c:\share\add_user3
未被遵守/继承。
Mac 客户端用户都是服务器上的本地管理员(因此拥有完全控制权)。从操作角度来看,这是必要的,因为所有客户端(甚至 Mac 用户)都需要以管理身份(主要是 IIS 管理员)访问服务器。
我主要使用 Windows,所以看起来 Mac 是“错误的”,但也许这只是不同的行为(即这里没有违反“标准”)。有什么想法为什么会发生这种情况?而且,考虑到我们希望权限像 Windows 客户端一样运行,有什么想法可以在 Mac 端强制执行吗?
后续答案
- 至于不同的编辑器,已尝试使用 XCode 和 TextEdit。两者的行为相同。
- 在与一名用户进行测试后不是在本地管理员中,似乎已应用/保留了适当的权限,除了对于以下行为:
- 当用户从 Windows 计算机创建文件时,文件所有者将设置为相关用户的帐户
- 当用户从 Mac 创建文件时,文件所有者被设置为
MACHINE\Administrators
答案1
这是由某事引起的苹果称“安全保存”“。当 Mac 在 SMB 共享上保存文件时,它实际上会将文件写入名为.TemporaryItems在共享的根目录中,删除原始文件(如果存在),然后将文件移动到实际文件夹。由于保存的文件是新的,因此它有一个新的所有者,其权限继承自.TemporaryItems。
我使用的解决方案很简单:删除写入权限.TemporaryItems。这似乎禁用了安全保存。
我读过创造com.apple.desktopservices使用“DSDontWriteNetworkStores”属性将阻止客户创建.TemporaryItems,但根据我的经验,这在 OS X 10.8 及更新版本上不起作用。