编辑

编辑

我有两台机器A,并且B都在本地网络上(都是 Ubuntu 21.10)。

我在机器上A安装了一个仅用于存储数据(音乐、照片、电影、文档等)的驱动器/media/data。机器上的每个用户(共有 2 个)都可以读取/写入驱动器内容。

我需要能够从我的机器B(只有一个用户)执行相同操作,即读/写访问。

在这种情况下,什么是适当的方法来实现这一目标?考虑到:

  • 我需要机器上的用户B不要给机器上的用户造成权限问题A
  • 我需要机器上的程序B具有正确的权限来读取/写入驱动器

我之前尝试的设置并没有完全满足这两个需求。这就是我指定这个的原因。虽然它们可能因为我的设置不正确而没有得到满足……我不知道。过去一年我一直在学习和尝试。

以下是我已经尝试过的:

  • 分享桑巴本地网络共享 --> 访问文件(例如播放音乐)很慢

  • SSHFS

    • 我从来没有设法正确设置它在启动时自动挂载
    • 我有权限问题。例如:使用甜菜(用于管理我的音乐库),beets 创建文件夹/文件,这些文件夹/文件(在机器上B)由 列出的用户拥有#user 1001。此用户在系统中是未知的,但它是uid我在机器上与之 ssh 的用户(并且它与我的机器上A的 不同),并且我没有修改任何内容的权限(所有权、删除文件等)。我没有设法解决这个问题,所以 sshfs 解决方案对我来说是不可接受的。uidB
  • NFS:我今天刚刚尝试过,没有成功传递mount.nfs: access denied by server while mounting (null)错误

所以现在我决定停止尝试,因为我有点迷茫,真的不知道我实际上应该尝试什么:更好地理解 sshfs 来解决权限问题?让 NFS 工作?...并决定寻求帮助:)

到目前为止,使用 sshfs 对我来说是最好的解决方案(访问文件快速而稳定),但如果不解决这些权限问题,它还不够好,而且如果我能在启动时正确设置自动挂载,那就更好了……

感谢您的帮助 !

编辑

关于 NFS,我做了以下事情:

  • 安装nfs-kernel-server在机器上A
  • 安装nfs-common在机器上B
  • 在机器中添加了一行/media/data 00.00.00.00(rw,sync,no_subtree_check)(包含机器的 IP 地址B/etc/exportfsA
  • 跑了sudo exportfs -a
  • 我检查了修改sudo exportfs
  • 我允许防火墙中的 nfs(ufw)
  • 我检查了一下,我可以看到从机器导出Bshowmount,也可以看到
  • sudo mount 00.00.00.00:/media/data ~/data当尝试使用(使用机器的 IP 地址)挂载文件夹时A,它会返回mount.nfs: access denied by server while mounting (null)

答案1

因此我选择了 NFS 方法,并使其运行良好,这要感谢上面评论中 @PonJar 发布的 Arch Linux wiki 链接:https://wiki.archlinux.org/title/NFS 主要的区别在于您需要nfs-kernel-server服务器计算机和nfs-common客户端计算机的软件包。

我所做的与我所揭露的不同之处编辑问题中有关NFS的主要内容是:

  • 我创建了一个 nfs 文件夹和数据子文件夹来共享/srv/nfs/data
  • 我将/srv/nfs/data文件夹绑定到我想要导出的文件夹/media/data

否则,我检查导出是否正确,并且我可以从我的客户端机器上看到它(注意:当服务器机器上的防火墙处于活动状态时,showmount 不起作用,因此在设置之前请检查)并且我在 ufw 防火墙中打开了 nfs 端口。

然后我成功安装了驱动器sudo mount -t nfs -v 192.168.1.108:/srv/nfs/data ~/data

最后,我添加了以下行/etc/fstab192.168.1.108:/srv/nfs/data /home/myuser/data nfs defaults,_netdev 0 0现在该文件夹会在启动时自动挂载。

这种方法似乎解决了我有时遇到的权限问题。

相关内容