我有一个 NFS4 共享,我需要将它用于 2 台远程机器,但是在机器 1 上创建的文件夹对于机器 2 来说是不可写入的,并出现错误“权限被拒绝”。
我应该如何配置 NFS?
另外,如果仅以 root 身份签名,机器 2 也可能写入在机器 1 上创建的文件夹,但这种方式对我来说是错误的。
答案1
必须仔细配置 NFS 的写访问权限:
首先,/etc/exports 中的共享定义应该允许写入(我确信在您的设置中已经是这种情况,但共享 /etc/exports 的内容不会有什么坏处),例如
/srv/share *(rw,sync,all_squash)
接下来,您应该知道您以哪个用户身份访问服务器上的 NFS 共享。在上面的示例中,所有远程用户都映射到
nfsnobody
NFS 服务器上的一个用户(通常是)。此用户应该对您的共享目录具有写访问权限。您可以 chown 共享目录来修复此问题:chown -R nfsnobody:nfsnobody /srv/share
另外,如果您使用的是类似 RedHat 的发行版,请确保您的 SELinux 设置正确。我现在不讨论这个,因为它取决于您使用的特定发行版/版本。
答案2
使用 NFS 还要求您映射用户 ID (UID) 和组 ID (GID)。如果服务器之间的 ID 不同步,NFS 将正常工作,但 NFS 服务器将不允许 NFS 客户端上的进程访问这些 ID。
即使您有同名的用户名和组,您也必须有映射 ID,因为 UID 和 GID 号码很重要,而不是名称。
例如 /etc/passwd 中的这一行:
backmin:x:500:500:testy:/home/backmin:/bin/bash
第一个数字(第 3 个字段)是该用户的 UID。如果客户端服务器对该用户具有不同的值,则他们无法在客户端上看到相同用户名所拥有的内容。