我有两台机器A
,并且B
都在本地网络上(都是 Ubuntu 21.10)。
我在机器上A
安装了一个仅用于存储数据(音乐、照片、电影、文档等)的驱动器/media/data
。机器上的每个用户(共有 2 个)都可以读取/写入驱动器内容。
我需要能够从我的机器B
(只有一个用户)执行相同操作,即读/写访问。
在这种情况下,什么是适当的方法来实现这一目标?考虑到:
- 我需要机器上的用户
B
不要给机器上的用户造成权限问题A
- 我需要机器上的程序
B
具有正确的权限来读取/写入驱动器
我之前尝试的设置并没有完全满足这两个需求。这就是我指定这个的原因。虽然它们可能因为我的设置不正确而没有得到满足……我不知道。过去一年我一直在学习和尝试。
以下是我已经尝试过的:
分享桑巴本地网络共享 --> 访问文件(例如播放音乐)很慢
SSHFS:
- 我从来没有设法正确设置它在启动时自动挂载
- 我有权限问题。例如:使用甜菜(用于管理我的音乐库),beets 创建文件夹/文件,这些文件夹/文件(在机器上
B
)由 列出的用户拥有#user 1001
。此用户在系统中是未知的,但它是uid
我在机器上与之 ssh 的用户(并且它与我的机器上A
的 不同),并且我没有修改任何内容的权限(所有权、删除文件等)。我没有设法解决这个问题,所以 sshfs 解决方案对我来说是不可接受的。uid
B
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/exportfs
A
- 跑了
sudo exportfs -a
- 我检查了修改
sudo exportfs
- 我允许防火墙中的 nfs(ufw)
- 我检查了一下,我可以看到从机器导出
B
的showmount
,也可以看到 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/fstab
:192.168.1.108:/srv/nfs/data /home/myuser/data nfs defaults,_netdev 0 0
现在该文件夹会在启动时自动挂载。
这种方法似乎解决了我有时遇到的权限问题。