我的一台服务器上有一个大型数据文件夹,由于一些原因,我无法详细阐述,我想将其移动到专用 NAS(Openmediavault),然后再共享回现有服务器。
其中包括 www-data(nextcloud 数据文件夹)、will(我)、media(plex 数据文件夹)和 cctv(摄像机记录存储器)等文件。
有没有一种简单的方法可以在共享存储中维护这样的所有权结构,或者我最好将每个文件夹分解为单独的共享并单独安装它们?
理想情况下,我只想保留文件夹和文件的现有所有者。我已经克隆了驱动器映像进行测试,但尽管选择了听起来正确的“继承权限”设置
The permissions on new files and directories are normally governed by create mask and directory mask but the inherit permissions parameter overrides this. This can be particularly useful on systems with many users to allow a single share to be used flexibly by each user.
但是通过 fstab 条目将驱动器安装到服务器上(克隆用于测试)
//10.10.10.65/willzpool /willzpool cifs credentials=/root/smbcredentials 0 0
共享中的所有内容都归 root 所有。即使作为 root,我也无法更改共享中的所有内容。
我是否缺少了什么或者我的目标是否无法实现?
好的,我可以用两种方法解决这个问题。
使用 Samba,即使 Samba 用户有权访问共享,他们仍然需要对所封闭文件的文件系统权限。
因此,为了实现我的目标,我要么需要使用多个 samba 用户,每个用户都具有不同的文件系统访问权限(包括一个可以访问 www-data 所拥有的文件夹的用户,这似乎不是一个好主意),要么我可以用一个用户来 chown 整个数据文件夹,分别共享每个文件夹,并在客户端处理文件所有权。这就是我所做的,而且成功了。我以具有 samba 访问权限的用户的身份 chown 了数据目录中的所有内容,并在客户端 fstab 中执行了此操作
这样就为客户端上的每个文件夹赋予了正确的所有权和权限,一切正常,但我对必须更改 NAS 服务器上的所有权感到不安。我希望保留从 OMV 分离驱动器并在需要时将其重新连接到 Ubuntu 服务器并直接使用它的能力,因此我希望保持实际文件夹的所有权和权限不变。
NFS 需要做更多工作,我必须在服务器上创建与客户端匹配的用户和组。导出非常简单
no_root_squash 可能不被推荐,但我想通过 chown-ing 文件和文件夹(如有必要)来保留在客户端上控制文件所有权的能力。
在客户端上,我设置了一个新的 fstab 条目
不幸的是,由于某种原因,它无法挂载共享。我怀疑它是在网络启动之前尝试挂载它。我尝试将 _netdev 添加到 fstab 条目,但没有任何效果。我想我可以解决这个问题,但我只是设置了一个 cronjob 在启动时运行
解决了这个问题。
我不得不对我的摄像机录制的共享做一些调整,我从新的 OMV 服务器将其作为 NFS 共享,但结果却是防火墙问题,因为 OMV 使用的端口与 Ubuntu 服务器不同(我的摄像机在 vlan 上,除了我特别允许的端口之外,无法访问任何其他东西,但其他一切都很轻松。
总体而言,我觉得 NFS 需要做更多工作,但我对最终结果更满意,因为所有权/权限在客户端/服务器之间是一致的。感觉它的速度也稍微快一些,但我没有对它进行基准测试。
编辑
我找到了一个更好的方法来挂载共享 - autofs
它以服务形式运行,并在主文件系统上创建一个“幽灵”目录。一旦任何东西试图访问该目录,它就会(非常快地)挂载共享。这也意味着,如果共享因任何原因被卸载,它应该会再次恢复,因为 Nextcloud 和 Deluge 总是在读取目录的内容