我有一个运行 OpenIndiana 的文件服务器,并且有各种类型的多个客户端。Windows、OSX 和 Linux(主要是 Ubuntu)。我通过 AFP、CIFS、NFS 共享一些 ZFS 文件系统。我了解本地文件系统上的标准 777 样式权限,并且在一定程度上了解 ACL。
我不明白的是,当引入共享层时会发生什么,权限如何工作?我主要对基于 Unix 的系统之间的 CIFS 感兴趣,因为这是我最常用的,但一般的理解也会很好。
举个例子,我有多个应用程序 ubuntu 机器,它们需要在启动时访问共享上的某些文件夹结构。管理它们的访问权限的最佳方法是什么?
答案1
文件系统权限适用于本地系统用户。
所有网络共享协议都必须依靠转换层将网络访问凭证转换为本地用户帐户。
对于较大的网络,如果可以使用 LDAP 或 NIS 或类似技术进行集中化,则会很有帮助。
添加:您特别询问了 *nix 机器之间的 CIFS - 嗯,除非两者都支持 winbindd 内容,否则任何权限和所有权都仅限于挂载点上设置的内容。
也就是说,使用用户 Joe 通过 CIFS 在主机 A 上共享 /mnt/foo,只有在主机 B 上用户 = Joe 的挂载上设置的权限才相关。
原始位置上的任何权限均被安装时设置的全局权限所取代。
答案2
权限相互堆叠。
例如:授予 Joe 访问共享但不访问底层磁盘结构的权限 => 拒绝访问。授予 Joe 访问磁盘但不访问共享本身的权限 => 拒绝访问。授予 Joe 访问两者的权限 => 允许访问。
这在 CIFS / SMB 配置中最容易看到。
其他产品(来宾模式下的 NFS 或 CIFS)也可能将一个特定帐户下的所有入站用户伪装到本地文件系统。
即使对于使用访客模式的设置,本地文件系统仍然需要向与访客访问相关的帐户提供权限。