解释为什么文件夹的权限因用户访问服务器的方式(AFP 和 SSH)而异

解释为什么文件夹的权限因用户访问服务器的方式(AFP 和 SSH)而异

希望有人可以解释一下这个相当明显但让我困惑的事情。

假设我们的服务器 (Mac OS X Server 10.5) 上有两个具有管理员权限的用户。称他们为 joe 和 bob。

两个用户都是以下组的成员:

 Staff       Group ID: 20
 Workgroup   Group ID: 1025
 Admin       Group ID: 80 (assuming "[X] Administer Server" in Workgroup Manager sets this)

共享文件夹“devfolder”的共享设置如下:

POSIX:

 Owner: joe     read & write
 Group: admin   read & write
 Other          no access

访问控制列表(ACL):

 Workgroup  Allow  Read & write

问题是,为什么在查看同一个文件夹时,所有权似乎会根据查看者的不同而发生变化?!两者都在查看服务器上的同一个文件夹:

从 Joe 的角度来看:

xserve:devfolder joe$ ls -l
drwxrwxr-x   6 joe  workgroup    204 May 20 19:32 app
drwxrwxr-x   9 joe  workgroup    306 May 20 19:32 config
drwxrwxr-x   3 joe  workgroup    102 May 20 19:32 db
drwxrwxr-x   3 joe  workgroup    102 May 20 19:32 doc
drwxrwxr-x   3 joe  workgroup    102 May 20 19:32 lib

从 Bob 的角度来看(文件夹通过 AFP 安装到他的机器上):

bobmac:devfolder bob$ ls -l
drwxrwxr-x   6 bob  _bob    264 May 20 19:32 app
drwxrwxr-x   9 bob  _bob    264 May 20 19:32 config
drwxrwxr-x   3 bob  _bob    264 May 20 19:32 db
drwxrwxr-x   3 bob  _bob    264 May 20 19:32 doc
drwxrwxr-x   3 bob  _bob    264 May 20 19:32 lib

现在,如果 Bob 通过 SSH 连接到服务器,那么他的输出将与 Joe 的相同,正如预期的那样。

有人能告诉我客户端在这种情况下在做什么,以及当 bob 在此文件夹中创建或更新文件时应该期待什么吗?我有什么工具可以从命令行更好地理解这一点?这是正常的吗?也许是一种不会与“bob _bob”混淆的“更干净”的方法?!?

答案1

AFP 使用的权限模型与 NFS 截然不同。客户端使用其凭据进行连接,然后文件访问由服务器控制。在某些情况下,会发生“权限映射”,这就是您所描述的现象。

好处

  1. 比传统 NFS 更安全
  2. 非常简单的模型,非常适合只有一个用户登录的客户端

缺点

  1. 客户端上的两个用户无法同时访问同一个已安装的 AFP 文件系统。他们能做的最好的事情就是都使用第一个安装它的用户的权限来访问文件系统(即使这样也需要另一个用户拥有客户端 root 权限)
  2. 报告的权限不是服务器角度的“真实”权限

缺点 #2 已在 Snow Leopard 10.6 中修复。安全模型的其余影响仍然适用,但客户端不知何故知道要报告“真实”权限,而不仅仅是像以前一样只报告“有效”权限。

更多信息请访问:

答案2

我认为,当您可以直接访问所有文件时,您就拥有了这些文件的真正权限。当您通过 AFP 安装它时,它似乎会显示本地权限。(可能它不知道远程系统上的其他用户是谁,只是确定您是否具有文件的读写权限,如果有,则授予您所有权,如果没有,则不显示。)

如果 bob 修改了一个文件,我认为你会发现权限保持不变,从服务器的角度来看。我真的不确定当他创建文件时会发生什么。我怀疑所有权属性将与用于访问 AFP 共享的凭据相匹配。

相关内容