如何让NFS服务器上客户端创建的文件统一使用指定UID/GID
实现NFS共享目录固定UID/GID(不受客户端权限影响)
可以实现,通过NFS的导出参数配置,就能强制让客户端创建/修改的所有文件归服务器端指定的UID/GID(比如plex用户)所有,完全不受客户端自身UID/GID的限制。核心方案如下:
一、核心配置:all_squash + anonuid/anongid
这是NFS官方提供的标准方法,直接将所有客户端的用户身份映射到服务器端的指定用户。
1. 获取plex用户的UID和GID
在NFS服务器上执行命令,查看目标用户的UID和GID:
id plex
输出示例:uid=1001(plex) gid=1001(plex),记下这里的UID(如1001)和GID(如1001)。
2. 修改NFS导出配置
编辑NFS的导出配置文件/etc/exports,找到对应Plex库的共享条目,添加all_squash、anonuid、anongid参数:
原条目示例:
/mnt/plex-library 192.168.1.0/24(rw,sync)
修改后:
/mnt/plex-library 192.168.1.0/24(rw,sync,all_squash,anonuid=1001,anongid=1001)
参数说明:
all_squash:强制将所有客户端用户(包括root)的身份映射为服务器端的匿名用户anonuid:指定匿名用户对应的UID(这里填plex的UID)anongid:指定匿名用户对应的GID(这里填plex的GID)
3. 生效配置
执行命令重新加载NFS导出配置:
exportfs -ra
如果是systemd系统,也可以重启NFS服务确保配置完全生效:
systemctl restart nfs-server
二、验证效果
在客户端挂载该共享后,创建或上传文件,回到服务器端查看文件权限:
ls -l /mnt/plex-library/新文件名称
输出中的所有者应显示为plex:plex,和客户端使用的本地用户无关。
三、额外注意事项
- 确保共享目录本身的权限正确,避免因目录权限问题导致写入失败:
chown -R plex:plex /mnt/plex-library chmod -R 755 /mnt/plex-library
- 如果需要保留客户端root用户的权限(不推荐Plex场景),可以用
root_squash代替all_squash,但all_squash能避免客户端root篡改共享文件,安全性更高。
内容的提问来源于stack exchange,提问作者Milad
相关产品推荐
相关产品推荐

