我没有从使用 NFS4 的 Lan 服务器获取预期的文件权限。
作为客户端安装“exports”目录可以正常工作。ls
输出正确的文件夹内容。但如果客户端尝试cd
进入目录,他会得到一个“没有权限”。
如果客户端使用ls -l
列出已安装文件夹的内容,他将获得每个文件所有者的 GID:UID 编号。我原本希望 NFS4 以字符串而不是数字的形式为客户端用户名:组名提供信息。显示的 UID 与客户端用户的 UID 不匹配。我想这就是我得到“没有权限”。
我在服务器上有一个用户“Paul”(UID=1004),在客户端上有一个用户“Paul”(UID=1000)。我想通过名称而不是 ID 来处理 NFS4 文件权限。
这是当前设置:
作为客户端安装:
如何在 Ubuntu 14.04 客户端上安装导出:
sudo mount.nfs4 192.168.178.10:/ /fs_data -o soft,intr,rsize=8192,wsize=8192
NFS 服务器设置:
安装后,我对 Raspbian 上的 NFS4 服务器所做的所有更改‘nfs 内核服务器’、‘rpcbind’、‘nfs 通用’
/etc/默认/rpcbind
OPTIONS=""
/etc/hosts.deny
rpcbind:ALL
/etc/hosts.allow
rpcbind: 192.168.178.20 , 192.168.178.21
/etc/default/nfs 内核服务器
NEED_SVCGSSD=NO
/etc/default/nfs 常用
NEED_IDMAPD=YES
NEED_GSSD=no
/etc/exports
/exports 192.168.178.20(rw,sync,fsid=0,crossmnt,no_subtree_check,no_root_squash,insecure) 192.168.178.21(rw,sync,fsid=0,crossmnt,no_subtree_check,no_root_squash,insecure)
/exports/paul 192.168.178.20(rw,sync,no_subtree_check,no_root_squash,insecure) 192.168.178.21(rw,sync,no_subtree_check,no_root_squash,insecure)
有什么线索吗?我错过了什么?
答案1
我认为这是 nfs4 中的一个陷阱,包括我在内,很多人都遇到过这种情况。在 nfs4 中,您可以指定一种sec=
风格,如果未指定,则默认AUTH_SYS
为将本地 UID 和 GID 发送到服务器,然后进行比较。
据我了解,仅当使用krb5*
系列的安全风格时,客户端才会将身份验证作为字符串发送<username>:<groupname>
这里更详细地解释幕后发生的事情。
在 nfs 的手册页中,还有一个部分“使用非特权源端口”,其中提到,如果服务器接受非特权端口,任何用户都可以伪装身份,这听起来像是一个可以用作解决方法的安全问题。但我不知道这是否那么容易,或者是否需要一些技巧才能使其可用。但最终它仍然是一个安全问题。
也许最简单的方法是手动保持 UID 和 GID 同步,或者设置简单的 NIS 或 LDAP。使用时,sssd
您还可以缓存来自 NIS 或 LDAP 的登录凭据,但用户必须在连接到可访问的服务器后登录。