欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

nfs关于用户写权限的配置

程序员文章站 2022-06-10 13:47:53
1 说明nfs是很常用的网络共享盘方式,访问客户端数量多了之后,为确保安全,会做权限控制,一般都是放开读权限,而控制写权限。本文将在几种场景下说明 nfs 关于用户写权限的配置。2 配置2.1 nfs一些细节原理nfs 服务端即便在 exports 配置文件中配置了 rw,在客户端挂载时,往往也无法正常写入。这个是因为 nfs 客户端挂载访问时是用 uid 映射的方式访问,默认转换成 nobody / nfsnobody 账号,也就是说,客户端不管你是以什么账号访问到 nfs 的挂载...

1 说明

nfs是很常用的网络共享盘方式,访问客户端数量多了之后,为确保安全,会做权限控制,一般都是放开读权限,而控制写权限。

本文将在几种场景下说明 nfs 关于用户写权限的配置。

2 配置

2.1 nfs一些细节原理

nfs 服务端即便在 exports 配置文件中配置了 rw,在客户端挂载时,往往也无法正常写入。

这个是因为 nfs 客户端挂载访问时是用 uid 映射的方式访问:

对于 root 用户,默认转换成 nobody 账号,也就是说,客户端不管你是以什么账号访问到 nfs 的挂载路径,在服务端,都是识别类似为 nobody@<clinet ip> ,实际访问到服务端上面的共享目录时,是以 nobody 账号的身份访问。

对于非 root 用户,则使用其账号访问,即如果 root 用户挂载,但是使用 user1 用户(假设 uid 为1000)访问,则在 nfs 服务端也是识别为 uid 为 1000 的用户访问,如果本地有对应的 uid ,则映射为对应的用户,即:如果服务端 uid 1000 对应为 testuser1,则最后客户端 user1 所对应的权限实际为服务端 testuser1 的权限

这部分建议查看链接:https://www.cnblogs.com/f-ck-need-u/p/7305755.html 

2.2 单独配置 root 用户写权限

对于 root 账号,可以在 exports 配置文件中添加 no_root_squash 选项即可,这样在客户端访问时,root 账号不会权限不会被冲刷成 nobody / nfsnobody ,直接映射为服务端 root 账号权限。

但是这样的配置权限太大,存在安全风险,实际生产中比较少这么配置。

2.3 配置非 root 普通用户写权限

nfs 并没有类似 no_root_squash 这种针对非 root 普通用户的配置选项,所以需要使用其他的方式配置。

2.3.1 所有用户(包括root)

如果要允许所有用户,则在服务端,修改共享目录的基础权限,更改777,即要保证 other 位的需要有 rwx 所有的权限。

这样配置后,并且 exportfs -r 重新读取配置文件生效后,即可有写权限。客户端原先已经挂载的,则需 umount ,再 mount ,即生效。

(注:对于服务端来说,nobody 对于共享目录来说,也是应用 other 位的权限,所以此方法也适用于 root 账号,但影响不大,非root账号在此配置下,对于此共享目录也拥有所有的权限,跟 root 一致。所以,一般也不建议对所有用户开放写权限。)

以下图中操作是在服务端配置。

nfs关于用户写权限的配置

2.3.2 个别非 root 普通用户

如果只允许个别非 root 普通用户,则可使用 anonuid 和 anongid 配置项,然后对共享目录配置 acl 权限,根据所授权的 uid 或 gid 配置。

  • 如果使用 anonuid ,则客户端需要授权的用户账号的 uid 需要跟 anonuid 一致。
  • 如果使用 anongid ,则客户端需要授权的用户账号的 groups 中需要有对应的 gid 。

一般需要挂载的客户端比较多,为了便于后续的配置管理,不需要经常调整配置,建议使用 anongid (如501)来配置,然后在客户端创建用户组,其 gid 跟服务端 anongid 一致,对于需要授权的用户账号,将新创建的用户组添加至用户的附属组中。

以下为服务端配置:

nfs关于用户写权限的配置

nfs关于用户写权限的配置

以下为客户端配置(服务端使用 anongid 时)

nfs关于用户写权限的配置

本文地址:https://blog.csdn.net/iamwayne10/article/details/107509098

相关标签: linux nfs