我有两台服务器,client
它们server
的角色相当明显:server
托管 NFS 共享并client
安装它。在client
call上的多个用户之间有一个共享组,shared
该组也存在于 上server
。我对共享的权限server
如下所示:
user@server $ ls -al /export/share/
drwxrwsr-x+ 3 shared shared 4096 Apr 19 01:25 .
drwxr-xr-x 3 root root 4096 Apr 12 20:10 ..
目标非常清楚地显示,我希望该shared
组的所有成员都能够在该目录中创建、写入和删除文件。在客户端上,ls -la
挂载的目录会导致相同的结果。
NFS 导出文件server
如下所示:
/export/share 10.0.0.0/24(rw,nohide,insecure,no_subtree_check,async)
安装在里面client
看起来/etc/fstab
像这样:
10.0.0.1:/export/share /mnt/share nfs _netdev,noatime,intr,auto 0 0
mount
的输出client
:
10.0.0.1:/export/share on /mnt/streams type nfs (rw,noatime,intr,vers=4,addr=10.0.0.1,clientaddr=10.0.0.2)
但是,我似乎仍然无法使用组中的用户在该目录中创建文件。
例如,一个用户jack
:
user@server $ id jack
uid=1001(jack) gid=1001(jack) groups=1001(jack),1010(shared)
如果我尝试触摸 上已安装文件夹中的文件client
,权限将被拒绝:
user@client $ sudo -u jack touch /mnt/share/a
touch: cannot touch `/mnt/share/a': Permission denied
为什么这没有按预期工作?jack
既然他是该组的成员,我是否应该能够创建此文件夹中的文件和文件夹shared
?
答案1
您如何传播/etc/passwd
/etc/group 中包含的用户/组信息?您通常需要使用 NIS、LDAP 或 rsync 将文件同步/etc/passwd
/etc/group
到自动挂载这些挂载的所有计算机。否则,客户端对文件系统的权限一无所知。
您可能想仔细阅读NIS 指南。
答案2
NFS 使用“groupid”和“userid”,即实际数字而不是名称。确保组和用户在服务器和客户端上具有相同的 ID。在服务器和客户端上检查/etc/passwd
和。/etc/group
理想的设置是通过 NIS 或 LDAP 服务器共享所有用户和组。