我正在尝试为我的家庭网络创建一些 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
导出rw
到nas
以及matt-pc
到ro
所有其他,您可以在 `/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
它掩盖了备份的更容易)