我有六台机器,一台 NFS 服务器和五台客户端。三台客户端(运行 Ubuntu 14.04)运行正常。另外两台运行 12.04,遇到权限错误。
在映射的客户端计算机上,ls -l /home/
返回:
drwxr-xr-x 22 testuser testuser 12288 Oct 9 18:03 testuser
这是预期的权限设置。testuser
是需要此文件夹权限的用户。
但是,当我登录时testuser
,我touch /home/testuser/test.txt
收到此错误:
touch: cannot touch `/home/testuser/test.txt': Permission denied
现在,数字 ID 与 ID 字符串不匹配,但是有人告诉我,情况没必要如此。
客户端设置:
cat /sys/module/nfs/parameters/nfs4_disable_idmapping
N
上述设置允许 NFS 使用字符串而不是数字 UID 和 GID 来映射用户权限。
cat /etc/idmapd.conf
[General]
Verbosity = 0
Pipefs-Directory = /run/rpc_pipefs
# set your own domain here, if id differs from FQDN minus hostname
Domain = localdomain
[Mapping]
Nobody-User = nobody
Nobody-Group = nogroup
服务器设置:
cat /etc/exports
/raid/nfs/home server1(rw,sync,no_root_squash,no_subtree_check)
/raid/nfs/home server2(rw,sync,no_root_squash,no_subtree_check)
是否有错误或我需要采取额外步骤才能使 12.04 机器正常工作?或者我应该咬紧牙关进行升级,或者只是更改所有 UID 以匹配服务器?
答案1
问题是,只有当您执行 GETATTR/SETATTR(stat、chown、setacl)或使用 kerberos(用于主体到 id 映射)时,才会涉及 idmapd。但是,当 nfs 客户端发送带有 auth=sys 的 CREATE 请求时,uid 和 gid 将从 RPC 消息中获取。因此,您需要在服务器和客户端上匹配 uid 和 gid 来解决您的权限问题。