9

好的,我对这些东西感到非常困惑,所以真正描述性的答案将不胜感激,特别是如果它们使整个安装的东西变得不那么神奇和更可预测的话。

我正在尝试使用 nfs 安装我的 Drobo-FS NAS,以获得比使用 cifs 更好的性能。

drobo 正在运行一些精简的 linux 发行版。

在客户端机器上的 /etc/fstab 中(Ubuntu 的 IP:192.168.1.150)

# Mount Drobo
192.168.1.100:/mnt/DroboFS/Shares/public /media/drobonfs nfs rw,soft,proto=tcp,users 0 0

我在 drobo 上安装了 unfsd 并通过 ssh 访问。这是服务器机器上的导出文件(IP 为 192.168.1.100 的 Drobo-FS):

# Allow access for client machine
/mnt/DroboFS/Shares 192.168.1.150(rw,no_root_squash)

挂载工作正常,除了挂载的文件都归root所有,大部分文件权限设置为744。客户端上挂载中显示的文件权限与服务器上的实际权限匹配。例如:

client$ sudo chmod 123 /media/drobonfs/somefile
client$ ls -l /media/drobonfs/somefile
---x-w--wx 1 root root 0 2012-01-04 14:15 /media/drobonfs/somefile

drobo$ ls -l /mnt/DroboFS/Shares/public/somefile
---x-w--wx    1 root     root            0 Jan  4 14:15 /mnt/DroboFS/Shares/public/somefile

在每个命令前面写 sudo 是一个拖累,我想了解发生了什么,那么我该怎么做才能将它安装在客户端机器上,并将所有者/组设置为我的帐户而不是 root?

4

3 回答 3

8

挂载共享时,主机系统的用户 ID (UID) 映射到客户端的用户 ID (UID)。

在客户端,映射的用户(基于用户 ID)将成为已安装共享的所有者。

您的问题是由于主机使用其他 UID 而不是客户端引起的。

您可以通过定义 /etc/nfs.map 文件来解决此问题:

/etc/nfs.map

这看起来像:

# remote local gid 500 1000 # drobo client uid 500 2003 # drobo client

因此,在使用 NFS 时,您需要确保主机和客户端上的用户之间存在 UID/GID 匹配。另请阅读以下文章:http ://www.kernelcrash.com/blog/nfs-uidgid-mapping/2007/09/10/

解决此问题的另一个好方法是通过查看/etc/passwd两个系统上的此文件来查看主机和客户端系统上的 UID。

或键入:

id tom

更改 UID:

usermod -u 10000 tom

祝你好运!

于 2015-01-04T19:27:24.163 回答
2

似乎这应该适用于 Drobo 上的导出:

/mnt/DroboFS/Shares 192.168.1.150(rw,all_squash,anonuid=NNN)

NNN您在客户端上的数字用户 ID 在哪里。

于 2012-01-05T01:35:25.137 回答
-1

将/etc/exports更改为:

/mnt/DroboFS/Shares 192.168.1.150(rw,insecure)

然后,在 NFS 服务器上,运行:

$ sudo exportfs -a

现在,当您在 NFS 客户端上以非 root 用户身份挂载目录时,它将使用适当的所有者和组进行挂载。

于 2014-01-14T12:42:46.163 回答