我使用以下设置:
NFS 服务器(Ubuntu 16.04 LTS)
- nfs-common 1:1.2.8-6ubuntu1.2
- nfs 内核服务器 1:1.2.8-6ubuntu1.2
- 用户:测试(uid=1300)
NFS 客户端
- nfs 通用 1:1.3.4-2.1
- 用户:testmf (uid=1350)
在客户端,用户test
存在与服务器端相同的 UID。但我需要使用用户testmf
而不是那个test
。
我已经阅读了很多文档,以及来自 StackOverflow/StackExchange 的答案,但由于某些原因,我没有任何用处。
众多答案之一是更改文件/etc/idmapd.conf
。
所以这里是两边:
服务器
[General]
Verbosity = 0
Pipefs-Directory = /run/rpc_pipefs
# set your own domain here, if id differs from FQDN minus hostname
# Domain = localdomain
[Mapping]
Nobody-User = nobody
Nobody-Group = nogroup
在客户端:
[General]
Verbosity = 9
Pipefs-Directory = /run/rpc_pipefs
# set your own domain here, if it differs from FQDN minus hostname
# Domain = localdomain
Domain = example.com
[Mapping]
Nobody-User = nobody
Nobody-Group = nogroup
[Translation]
Method = static
[Static]
[email protected] = testmf
[email protected] = testmf
test@nfsserver = testmf
我使用这样的命令在客户端上挂载目录:
mount 192.168.0.1:/home/test/my_exp_dir /home/testmf/my_imp_dir
当我这样做时,ls -l /home/testmf/my_imp_dir
我会得到类似的东西:
-rw-r--r-- 1 test test 326025780 May 9 2017 allCountries.zip
并不是
-rw-r--r-- 1 testmf testmf 326025780 May 9 2017 allCountries.zip
如果我这样做,touch testfile
我会明白:
-rw-r--r-- 1 test test 326025780 May 9 2017 allCountries.zip
-rw-r--r-- 1 testmf testmf 0 Jun 9 18:57 testfile
或者ls -ln
-rw-r--r-- 1 1300 1300 326025780 May 9 2017 allCountries.zip
-rw-r--r-- 1 1350 1350 0 Jun 9 18:57 testfile
我试图提高详细程度,但在我的日志中,我看不到用户从一个 UID 到另一个 UID 的映射,就像我在某些答案中看到的那样。我可以看到的两件事是内核设置/sys/module/nfs/parameters/nfs4_disable_idmapping
被设置为Y
,即使更改为N
,似乎也没有任何效果。
我发现的第二件事是我的客户端服务器上不存在 2 个条目:
- /proc/net/rpc/nfs4.nametoid
- /proc/net/rpc/nfs4.idtoname
而且我不知道如何添加它,尤其是在 nfsidmap 不可用的情况下。
我已经读到我还需要idmapd
在更改后重新启动服务。但是在 Debian 9 中这是不可能的......或者至少我还没有找到如何去做......
我还更改了文件/etc/default/nfs-common
以设置变量NEED_IDMAPD=yes
,即使重新启动后它也没有做任何事情......
所以我的问题可能很愚蠢,但是如何在 Debian Stretch 上激活 nfsidmapd?我真的没有选择,搜索关键字和 Debian 的官方文档在这里并没有真正的帮助,除非我完全失明!
预先感谢您的帮助。