我有以下设置 -
我试图将Home Server目录〜/ Documents导出为可以从我的Mac笔记本电脑访问的NFS挂载
我在Ubuntu上使用Webmin来创建NFS导出。为了暂时只测试访问权限,我允许任何主机名连接读/写访问权。
Webmin在/etc/exports
/home/jeeves/Documents (insecure,no_subtree_check,no_root_squash,rw,nohide)
我将远程目录挂载到本地目录/private/nfs
sudo mount -t nfs 192.168.1.219:/home/jeeves/Documents /private/nfs
一切正常,我可以看到" Dcouments"在Finder中安装在/private
下。
但是,我无法进入该目录
jeeves:~ $ cd /private/nfs/
-bash: cd: /private/nfs/: Permission denied
我让webmin将权限设置为读/写(rw
)并且它不会过滤任何IP或主机名,那么访问该目录还需要什么?
提前感谢您的帮助!
这是我的Webmin设置。
Webmin不会让我选择4版的NFS版本,大概是因为我只安装了NFS v3,按照nfsstat
jeeves@HAL:~$ nfsstat
...
Server nfs v3:
null getattr setattr lookup access readlink
25 5% 28 6% 0 0% 126 29% 211 48% 0 0%
...
答案 0 :(得分:6)
您可能遇到数字用户ID问题:您的ubuntu系统上的数字用户ID与Mac上的数字用户ID不匹配。使用NFS,您通常必须确保您的数字用户ID在所有系统中以某种方式变得相同。在家庭/个人系统上,用户ID往往随意分配,没有任何同步,这会导致NFS出现问题。
由于这是一个家庭服务器,并且如果你相信每个连接到你的NFS服务器的人,一个可能的快速,简单和肮脏,丑陋和kludgy修复是打开权限,并允许每个人以及读取/写入/删除文件的所有内容(显然,不在企业环境中执行此操作):
在您的Ubuntu系统上,以
jeeves
(请勿sudo
或使用任何其他帐户)登录,打开终端窗口,然后按给定顺序运行命令:cd /home/jeeves/Documents find . -type d -print0 | xargs -0 chmod 777 find . -type f -print0 | xargs -0 chmod a+rw
但是,这假设NFS设置为允许访问不受信任的用户(在webmin中,"将不受信任的用户视为"设置为默认值,并且我不确定这是什么)
请注意,使用上述命令,Mac创建的文件和目录的所有者将在Ubuntu上显示为数字用户(因为Ubuntu系统可能不会在/etc/passwd
中与Mac数字对应的任何用户ids,Ubuntu只会显示原始数字ID。
答案很长:
当您在Ubuntu系统上创建jeeves
帐户时,Ubuntu会为其分配一些数字用户ID。当您在Mac上创建用户帐户时,Mac为其分配了一个数字用户ID,这可能与在Ubuntu系统上分配的数字不同。注意,用户名(例如," jeeves")是用户便利的; Ubuntu和Mac都没有在内部使用它们,而是使用用户ID。 NFS使用这些数字ID来确定所有权/权限(在Ubuntu框中)。
如果ids匹配,"用户"使用权限。
如果ids不匹配:
("群组"权限可以使用,但这不太可能,我也不打算讨论。)
"其他"使用权限。请注意,在创建文件/目录时,如果在Ubuntu框中找不到(Mac)用户ID,您通常会获得看起来属于"数字"的文件。所有者;您看到的数字是Mac正在使用的数字,您看到的数字是因为该ID不会出现在Ubuntu的/etc/passwd
中。
IIRC,Ubuntu使用022的umask,这意味着只有/home/jeeves/Documents
的所有者才能编写/创建文件和目录;其他人都拥有只读权限。除非您以某种方式在您的框之间同步用户ID,否则您不太可能拥有相同的用户ID,因此您将获得权限问题。
由于这是一个家庭服务器,上面提到的最简单的解决方法是摆脱安全性并允许每个人和所有人访问您的文件。当然,出于显而易见的原因,这是令人反感的。
正确的解决方法是确保所有用户ID在所有系统之间同步,但这可能是家庭环境中的问题。此外,一旦使用帐户,更改用户ID是有问题的;虽然这可以做到,但必须小心谨慎,因为你可能会把你的系统搞得一团糟。我不打算详细介绍。
编辑:修复部分句子。