NFS服务器uid/gid映射
案例说明
在云计算环境中,每个虚拟机中的相同用户账号,可能分配的uid/gid都是不同的。如果这些虚拟机想通过一个共享的存储,例如NAS来交换文件,就会遇到一个问题:NFS协议是通过uid来控制文件读写权限的,如果每个vm中用户写入的文件uid和其他vm不同,就无法被其他vm中的应用进程读取或修改。
所以就产生了本文说描述的解决方案,将不同的uid/gid映射成NAS上相同的uid/gid,以提供文件交换功能。
user-mode NFS服务器的uid/gid映射
user-mode NFS服务器支持特别的uid/gid重映射功能,可以将客户端访问不同的uid/gid映射成相同的服务器上的uid/gid,这样在一些特殊的应用场景中,可以实现文件交换。但是,很不幸,现在主要的发行版本使用的是基于内核的NFS服务器,不包含这个uid/gid重映射功能。 [1]
我没有实际测试,根据参考文档,主要有两个要求:
服务器端必须是user-mode NFS
配置文件需要针对每个客户端来分开设置(这点对于海量NFS客户端不现实) - 原文测试使用同一个map_static文件针对多个客户端则只有一个客户端生效
如果使用user-mode NFS服务器,可以简单如下设置客户端uid 501 和 502 都映射成NFS服务器上的uid 500
设置NFS服务器的 /etc/exports
/somedir 10.1.2.1 (rw,insecure,map_static=/etc/nfs.map.linux) 10.1.2.2(rw,insecure,map_static=/etc/nfs.map.mac)
案例说明
在云计算环境中,每个虚拟机中的相同用户账号,可能分配的uid/gid都是不同的。如果这些虚拟机想通过一个共享的存储,例如NAS来交换文件,就会遇到一个问题:NFS协议是通过uid来控制文件读写权限的,如果每个vm中用户写入的文件uid和其他vm不同,就无法被其他vm中的应用进程读取或修改。
所以就产生了本文说描述的解决方案,将不同的uid/gid映射成NAS上相同的uid/gid,以提供文件交换功能。
user-mode NFS服务器的uid/gid映射
user-mode NFS服务器支持特别的uid/gid重映射功能,可以将客户端访问不同的uid/gid映射成相同的服务器上的uid/gid,这样在一些特殊的应用场景中,可以实现文件交换。但是,很不幸,现在主要的发行版本使用的是基于内核的NFS服务器,不包含这个uid/gid重映射功能。 [1]
我没有实际测试,根据参考文档,主要有两个要求:
服务器端必须是user-mode NFS
配置文件需要针对每个客户端来分开设置(这点对于海量NFS客户端不现实) - 原文测试使用同一个map_static文件针对多个客户端则只有一个客户端生效
如果使用user-mode NFS服务器,可以简单如下设置客户端uid 501 和 502 都映射成NFS服务器上的uid 500
设置NFS服务器的 /etc/exports
/somedir 10.1.2.1 (rw,insecure,map_static=/etc/nfs.map.linux) 10.1.2.2(rw,insecure,map_static=/etc/nfs.map.mac)