我有六台机器,一台NFS服务器和五台客户机。 三个客户端(运行Ubuntu 14.04)工作得很好。 另外两个,运行12.04,正在运行权限错误。
在映射的客户机上, ls -l /home/ returns:
drwxr-xr-x 22 testuser testuser 12288 Oct 9 18:03 testuser
这是预期的权限设置。 testuser是需要对此文件夹的权限的用户。
但是,当login到testuser ,当我touch /home/testuser/test.txt我得到这个错误:
touch: cannot touch `/home/testuser/test.txt': Permission denied
现在,数字ID不匹配IDstring,但我被告知,这不是这种情况。
客户端设置:
cat /sys/module/nfs/parameters/nfs4_disable_idmapping N
上面的设置允许NFS使用string映射用户权限,而不是数字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来匹配服务器?
问题是,只有当你做GETATTR / SETATTR(stat,chown,setacl)或者kerberos被使用时(主体对id映射),idmapd才会被涉及。 但是,当nfs客户端用auth = sys发送CREATE请求时,uid和gid是从RPC消息中获取的。 所以你需要在服务器和客户端的uid和gid匹配来解决你的权限问题。