nfs4 权限被拒绝:显示所有者的 UID GID 号码。我期望的是字符串

nfs4 权限被拒绝:显示所有者的 UID GID 号码。我期望的是字符串

我没有从使用 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 的登录凭据,但用户必须在连接到可访问的服务器后登录。

相关内容