NFS 共享 - 一个 IP 读/写,其余 IP 只读

NFS 共享 - 一个 IP 读/写,其余 IP 只读

我正在尝试为我的家庭网络创建一些 NFS 共享,以便更轻松地管理我的 NAS。我目前在家中使用 Samba,但由于我使用 Ubuntu(除 NAS 外,其他人都在运行 Windows),因此 NFS 对我来说更快。

我想要做的是创建一些 NFS 共享,这些共享对于除我的计算机之外的所有人都是只读的。我的 NFS 共享工作正常,因为我可以将它们安装到我的计算机上并浏览文件夹,但我被强制对它们进行只读,这很令人沮丧,因为我已在 config/export 中声明我的计算机是读/写的。

我的 /etc/exports 文件如下所示(例如,一行中有几行结果相同):

/mnt/TVShows    matt-pc.*(rw,sync,no_root_squash,no_subtree_check) 192.168.1.0/25(ro,sync,no_root_squash,no_subtree_check)

matt-pc.1 和 matt-pc.2 均在 NAS 的 hosts 文件中定义。但无论如何,对 IP 进行硬编码也不起作用。

这也不起作用:

/mnt/TVShows    matt-pc.*(rw,sync,no_root_squash,no_subtree_check) *(ro,sync,no_root_squash,no_subtree_check)

我仍然只能进行只读挂载。

驱动器在 NAS 上以读/写方式安装,并且我的 Samba 共享设置工作正常(我可以强制以我的用户帐户身份登录 NAS,并且能够读取和写入文件)。

如果我像这样格式化共享:

/mnt/TVShows    matt-pc.*(rw,sync,no_root_squash,no_subtree_check)

当我尝试在客户端机器(我的机器)上安装时,出现权限错误。

这是我在客户端机器上的安装方式:

nas.local:/mnt/TVShows  /mnt/NFS/TVShows nfs auto,noatime,nolock,bg,nfsvers=4,intr,tcp,actimeo=1800 0 0

我可以做这个吗?

答案1

要从/mnt/TVShows导出rwnas以及matt-pcro所有其他,您可以在 `/etc/exports:

#
/mnt/TVShows matt-pc(rw,no_subtree_check) 192.168.1.0/24(ro)

请注意顺序很重要。导出到一台机器时,将使用匹配的第一个机器名称/IP/网络,因此将最具体的机器放在最前面,将最通用的机器放在最后。不要以授予过多权限的“全部捕获”结尾。

还要记住,每组选项都是下一组所固有的,因此您只需具体说明第一组。其余的只是对以前设置的变化。还要避免设置您不需要的意见。(并且始终阅读相关man(1)页面和文档/usr/share/doc/"package name"/

还要检查您使用的名称是否正确解析。要使用此功能,请使用getent(1) 命令。如下所示:

$ getent hosts matt-pc

其工作原理取决于和resolv.conf/etc/hosts 或者实际上是的内容/etc/nsswitch.conf)。

要在每台机器上安装,请执行以下操作:

/etc/fstab
# ro, that is this line in all but matt-pc
nas.local:/mnt/TVShows  /mnt/NFS/TVShows nfs auto,ro,noatime,nolock,bg,nfsvers=4,intr,tcp 0 0
# rw, that is this line in only matt-pc
nas:/mnt/TVShows  /mnt/NFS/TVShows nfs auto,rw,noatime,nfsvers=4,tcp 0 0

但请注意,不要使用超出实际需要的参数。

(是的,我更喜欢在服务器上安装磁盘/srv/,因为那是用于服务器资源,并且/mnt/更多是用于临时安装。我通常有/srv/web/,等/srv/files/music//srv/files/video它掩盖了备份的更容易)

相关内容