标签: nfsv4

如何让 NFSv4 idmap 与 sec=sys 一起工作?

我有一个服务器(Debian),它通过 NFS 为某些文件夹提供服务,还有一个客户端(Debian),它连接到 NFS 服务器(使用 NFSv4)并安装导出的文件夹。到目前为止一切都很好,我可以连接和修改文件夹的内容。但用户完全搞砸了。据我了解,这是由于 NFS 使用 UID 来设置权限,并且由于来自客户端服务器的用户的 UID不同,因此会发生这种情况,这仍然是意料之中的。但据我所知,通过启用 NFSv4,IDMAPD 应该启动并使用用户名而不是 UID。用户确实存在于服务器客户端上方面,他们只是有不同的 UID。但无论出于何种原因 IDMAPD 不起作用或似乎没有做任何事情。

所以这是我到目前为止所做的:

在服务器端:

  • 已安装 nfs-kernel-server
  • 使用正确的导出设置填充 /etc/exports --> /rfolder ip/24(rw,sync,no_subtree_check,no_root_squash)
  • 并将 /etc/default/nfs-common 更改为NEED_IDMAPD=yes

在客户端

  • 已安装 nfs-common
  • 并将 /etc/default/nfs-common 更改为NEED_IDMAPD=yes
  • 并使用“ mount -t nfs4 ip:/rfolder /media/lfolder ”挂载文件夹

重新启动并重新启动了几次,但仍然没有。当我从服务器创建一个带有用户A的文件夹时,在客户端上我看到文件夹所有者是某个用户X。当我使用用户A客户端创建文件时,在服务器端它说它来自某个用户Y

我用 HTOP 检查了 rpc.idmap 进程正在服务器上运行,确实如此。尽管在 …

linux users nfsv4

12
推荐指数
1
解决办法
2万
查看次数

使用 NFSv4 fsid=0 并将 NFS 根导出到整个 LAN(或不导出)的影响

在NFSv4的教程是经常可以看到的建议,一个共享的根目录导出到类似于整个子网从拱门维基:

/etc/出口:

/srv/nfs        192.168.1.0/24(rw,sync,crossmnt,fsid=0,no_subtree_check)
/srv/nfs/music  192.168.1.0/24(rw,sync,no_subtree_check)
/srv/nfs/public 192.168.1.0/24(ro,all_squash,insecure,no_subtree_check) desktop(rw,sync,all_squash,anonuid=99,anongid=99,no_subtree_check)
Run Code Online (Sandbox Code Playgroud)

根本没有第一行会更安全吗?(在我的问题中,当我提到“第一行”时,我指的是上面代码段中的第一行导出行。)

在 NFSv4 中,fsid=0 是可选的,它似乎主要是为了方便缩短路径(通过将 /srv/nfs 转换为 /)。在我的初步测试中,只要您使用 /srv/nfs,导出就可以在没有第一行的情况下正常工作。第一行提供哪些重要功能(如果有)?

当我们知道至少还有一个像这样的绑定安装时,我还想考虑这个例子:

/srv/nfs/projects
Run Code Online (Sandbox Code Playgroud)

(假设与音乐绑定安装不同,“项目”的内容是敏感的。)

第一个导出行,正如上面所写的,似乎让 LAN 上的每个客户端都可以访问整个导出的文件系统,尤其是使用 crossmnt 和 no_subtree_check。我并不是建议忽略所有者和组权限,但我认为导出在没有第一行的情况下也能正常工作,并且其他绑定安装在 /srv/nfs 下(例如 /srv/nfs/projects)不会对整个子网不必要地开放,从而暴露有关所有者和组权限的任何潜在疏忽。

当然,可以添加类似于此正确共享“项目”的导出:

/etc/出口:

/srv/nfs/projects 192.168.1.123(rw,sync,root_squash,subtree_check)
Run Code Online (Sandbox Code Playgroud)

这条新线路是否受到第一条线路的任何影响?我看不出第一条出口线是如何起到任何重要作用的。

如果这条线帮助或推荐,那么做这样的事情是否明智?

/srv/nfs        192.168.1.0/24(ro,sync,fsid=0,subtree_check,all_squash)
Run Code Online (Sandbox Code Playgroud)

接下来的更具体的导出将覆盖这个导出是否正确?例如,即使第一行更改为 ro 并使其更具限制性(如下例所示),以下行是否会正确授予对“音乐”的 rw 访问权限?

/srv/nfs        192.168.1.0/24(ro,sync,fsid=0,subtree_check,all_squash)
/srv/nfs/music  192.168.1.2(rw,sync,no_subtree_check)
Run Code Online (Sandbox Code Playgroud)

列出出口的顺序重要吗?什么决定优先级?更具体的地址(例如,192.168.1.2)是否会覆盖更通用的地址(192.168.1.0/24)?

注意:这个问题有一个重点主题,它可能会使用更好的标题来说明这一点,但到目前为止我还没有想出正确的标题。我欢迎编辑。

nfsv4

11
推荐指数
1
解决办法
1万
查看次数

archlinux netboot 无盘节点/系统,NFS (v4) 上的 systemd 失败,rpc.idmapd

更新:5 (20171209)

更新:5 (20171210)

  • mount -t nfs4 [SERVER IP]:/archlinux /mnt 作品。
  • ss -ntp | grep 2049 客户端在 systemd 开始之前建立到服务器的连接。
  • NSF4 id 映射器只能与 Kerberos 一起使用吗?

问题

我正在尝试设置无盘节点/工作站/系统。操作系统 (4.13.12-1-ARCH) 安装在 SERVER 上/srv/archlinux。经过一个从GRUB到NFSv4的成功网络启动,systemd开始,但未能在多个阶段,例如:

  • 无法挂载内核配置文件系统。
  • 无法挂载内核调试文件系统。
  • 无法挂载大页面文件系统
  • 无法启动加载/保存随机种子。
  • 无法挂载 /tmp。
  • 无法启动重建日志目录。
  • 然后以 Not tainted 4.13.12-1-ARCH #1...

或者,

  • 无法挂载 POSIX 消息队列文件系统。
  • 无法启动重新安装根和内核文件系统。
  • 无法挂载大页面文件系统。
  • 无法挂载内核调试文件系统。
  • 无法挂载内核配置文件系统。
  • 然后以 Not tainted 4.13.12-1-ARCH #1...

我怀疑这些故障是由 NFSv4 或本地网络的错误配置引起的。

rpc.idmapd

/etc/idmapd.conf
  [General]
  Verbosity = 7
  Pipefs-Directory = /var/lib/nfs/rpc_pipefs
  Domain = localdomain
  [Mapping]
  Nobody-User = nobody
  Nobody-Group = …
Run Code Online (Sandbox Code Playgroud)

arch-linux nfs systemd netboot nfsv4

5
推荐指数
1
解决办法
1195
查看次数

高延迟下的 NFS 性能很差,ssh 上的 rsync 大约快 100 倍

我们使用 rsync 来同步两个 NFS 服务器的数据。一台 NFS 服务器位于东海岸,另一台位于西海岸。RTT约为110ms。

在东海岸 NFS 服务器上,我安装了西海岸 NFS 服务器安装点。

<server>:/home/backups on /mnt/backups type nfs4 (rw,relatime,vers=4.1,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=krb5,clientaddr=x.x.x.x,local_lock=none,addr=y.y.y.y)

数据已经在两台服务器上,只是为了验证数据(例如同步文件夹以及何时不需要更改)。以下是验证 7GB 文件夹的东海岸服务器与西海岸服务器相同所需的时间。

以下大约需要8分钟才能完成超过7GB的数据。

rsync -r -vvvv --info=progress2 --size-only /<local_path>/ /<remote_path>/

以下(避免使用NFS挂载)大约需要15秒才能完成超过7GB的数据(同上)。

rsync -r -vvvv --info=progress2 --size-only /<local_path>/ <user>@<west_cost_NFS>:/<remote_path>/

同样,上面的内容不会移动任何数据,因为文件夹已经同步,它只是验证数据是否相同(基于文件的大小)。

我尝试-o async在客户端和服务器上使用,但当我在客户端上运行“mount”时,/etc/exports async客户端永远不会显示。async我认为async是默认的。我尝试过将 rsize、wsize 也更改为更大的值,但性能并没有变得更好。我是否完全可以从 NFS 中获得更好的性能?

rsync nfsv4

5
推荐指数
1
解决办法
4032
查看次数

NFSv4 错误的有效用户/所有者,sec=krb5 安装压缩为匿名用户

我正在设置 Kerberized NFSv4 供个人使用

  • 手动配置NFS、KDC
  • 没有名称服务器(使用/etc/hosts替代),没有 LDAP
  • 所有计算机上的相同用户(不一定是相同的 id)并对所有安全模式使用 id 映射(nfs4_disable_idmapping设置为“N”)

我有两台机器,都运行 Ubuntu 20.04 LTS

  • arhiv.pecar(本地地址192.168.56.200)有 NFS 服务器和 KDC
  • client.pecar(本地地址192.158.56.100)是客户端

所有管道似乎都可以工作,我可以很好地安装共享,但是

  • 如果共享导出为sec=sys

    服务器exportfs -v输出

    /srv/export     <world>(rw,async,wdelay,no_root_squash,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
    
    Run Code Online (Sandbox Code Playgroud)

    客户端mount输出

    arhiv.pecar:/srv/export on /mnt type nfs4 (rw,relatime,vers=4.2,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=krb5,clientaddr=192.168.56.100,local_lock=none,addr=192.168.56.200)
    
    Run Code Online (Sandbox Code Playgroud)
    • root 拥有完全的读/写访问权限
    • 如果设置了足够的权限,其他用户可以读/写文件
    • nfsidmap处于活动状态,客户端上的列表文件可以正确翻译用户名/组
    • chown来自客户端是可能的,并正确翻译用户名/组

    文件是在客户端的 uid/gid 下创建的,这意味着它们是在服务器上使用错误的uid/gid 创建的

    如果服务器碰巧有具有相同 uid 的用户,它会映射到错误的所有者,否则所有者是nobody:4294967294

    有效用户似乎是由客户端 uid 指定的用户。

    我想这是使用时的一个已知缺点sec=sys

  • 如果共享导出为sec=krb5

    服务器exportfs -v …

linux kerberos nfsv4

3
推荐指数
1
解决办法
2424
查看次数

安装 NFS - Proxmox 容器中“不允许操作”

我正在尝试挂载一个简单的 NFS 共享,但它一直显示“不允许操作”。

NFS 服务器具有以下共享。

/mnt/share_dir 192.168.7.101(ro,fsid=0,all_squash,async,no_subtree_check) 192.168.7.11(ro,fsid=0,all_squash,async,no_subtree_check)
Run Code Online (Sandbox Code Playgroud)

该共享似乎对两个客户都很活跃。

# exportfs -s
/mnt/share_dir  192.168.7.101(ro,async,wdelay,root_squash,all_squash,no_subtree_check,fsid=0,sec=sys,ro,secure,root_squash,all_squash)
/mnt/share_dir  192.168.7.11(ro,async,wdelay,root_squash,all_squash,no_subtree_check,fsid=0,sec=sys,ro,secure,root_squash,all_squash)
Run Code Online (Sandbox Code Playgroud)

客户端192.168.7.101可以看到共享。

$ sudo showmount -e 192.168.7.10
Export list for 192.168.7.10:
/mnt/share_dir 192.168.7.101
Run Code Online (Sandbox Code Playgroud)

192.168.7.101 的挂载目标:

# ls -lah /mnt/share_dir/
total 8.0K
drwxr-xr-x 2 me me 4.0K Aug 28 19:21 .
drwxr-xr-x 3 root root 4.0K Aug 28 19:21 ..
Run Code Online (Sandbox Code Playgroud)

当我尝试挂载共享时,客户端使用nfsnfs4类型显示“不允许操作”。

$ sudo mount -vvv -t nfs 192.168.7.10:/mnt/share_dir  /mnt/share_dir
mount.nfs: timeout set for Sun Aug 28 21:56:03 2022
mount.nfs: trying text-based options …
Run Code Online (Sandbox Code Playgroud)

nfs container shared-folders proxmox nfsv4

3
推荐指数
1
解决办法
4万
查看次数

NFS proto 和 mountproto 的区别

在 RHEL 8.8 中,当我尝试测试 NFS tcp 与 udp 以及版本 3 与 4.0、4.1 和 4.2 时,mountproto=除了proto=键入mount. 这有什么意义和意义呢?

在 RHEL 8.8 中,我是否可以在 nfs 客户端上vers=3专门显示 NFS 操作?proto=udp

proto=tcp在 nfs 客户端上,当我看到和时,这意味着什么mountproto=udp

rhel nfs udp protocols nfsv4

2
推荐指数
1
解决办法
879
查看次数