我有一台 Synology DiskStation (DSM 6.0.2),它通过 NFSv4 导出共享目录。我指定了一个 NFSv4 域ITET-PHO
。
在另一台 Linux 机器 (Debian Wheezy) 上,我想使用 idmapping 挂载此导出。我有以下配置/etc/idmapd.conf
:
[General]
Verbosity = 2
Pipefs-Directory = /run/rpc_pipefs
# set your own domain here, if id differs from FQDN minus hostname
Domain = ITET-PHO
[Mapping]
Nobody-User = nobody
Nobody-Group = nogroup
[Translation]
Method = static
[Static]
erikhe@ITET-PHO = erik
erikhe
因此,我尝试将域中的 Synology 上的用户静态映射ITET-PHO
到本地用户erik
。所有其他用户都应映射到nobody
。但是,当我挂载共享目录时,我只看到来自 Synology 的 UID 号:
drwxr-xr-x 4 1566874442 1566573057 4096 Okt 5 10:21 erikhe-301898
此外,还会显示所有其他 UID,而不是nobody
。在日志文件中,我看到 idmap 正在执行某些操作。这是在执行 时service nfs-common restart
:
Oct 5 15:11:07 sisyphous systemd[1]: Stopping LSB: NFS support files common to client and server...
Oct 5 15:11:07 sisyphous nfs-common[6520]: Stopping NFS common utilities: idmapd statd.
Oct 5 15:11:07 sisyphous systemd[1]: Stopped LSB: NFS support files common to client and server.
Oct 5 15:11:07 sisyphous systemd[1]: Starting LSB: NFS support files common to client and server...
Oct 5 15:11:07 sisyphous rpc.statd[6539]: Version 1.2.8 starting
Oct 5 15:11:07 sisyphous sm-notify[6540]: Version 1.2.8 starting
Oct 5 15:11:07 sisyphous sm-notify[6540]: Already notifying clients; Exiting!
Oct 5 15:11:07 sisyphous rpc.idmapd[6551]: libnfsidmap: using domain: ITET-PHO
Oct 5 15:11:07 sisyphous nfs-common[6530]: Starting NFS common utilities: statd idmapdrpc.idmapd: libnfsidmap: using domain: ITET-PHO
Oct 5 15:11:07 sisyphous nfs-common[6530]: rpc.idmapd: libnfsidmap: Realms list: 'ITET-PHO'
Oct 5 15:11:07 sisyphous nfs-common[6530]: rpc.idmapd: libnfsidmap: processing 'Method' list
Oct 5 15:11:07 sisyphous nfs-common[6530]: rpc.idmapd: libnfsidmap: loaded plugin /lib/x86_64-linux-gnu/libnfsidmap/static.so for method static
Oct 5 15:11:07 sisyphous rpc.idmapd[6551]: libnfsidmap: Realms list: 'ITET-PHO'
Oct 5 15:11:07 sisyphous rpc.idmapd[6551]: libnfsidmap: processing 'Method' list
Oct 5 15:11:07 sisyphous rpc.idmapd[6551]: libnfsidmap: loaded plugin /lib/x86_64-linux-gnu/libnfsidmap/static.so for method static
Oct 5 15:11:07 sisyphous rpc.idmapd[6552]: Expiration time is 600 seconds.
Oct 5 15:11:07 sisyphous rpc.idmapd[6552]: Opened /proc/net/rpc/nfs4.nametoid/channel
Oct 5 15:11:07 sisyphous nfs-common[6530]: .
Oct 5 15:11:07 sisyphous rpc.idmapd[6552]: Opened /proc/net/rpc/nfs4.idtoname/channel
Oct 5 15:11:07 sisyphous systemd[1]: Started LSB: NFS support files common to client and server.
Oct 5 15:11:07 sisyphous rpc.idmapd[6552]: New client: fa
Oct 5 15:11:07 sisyphous rpc.idmapd[6552]: New client: fb
Oct 5 15:11:07 sisyphous rpc.idmapd[6552]: Opened /run/rpc_pipefs/nfs/clntfb/idmap
当我挂载导出时,mount.nfs4 cerberous:/volume1/homes /mnt/test
我得到:
Oct 5 15:11:19 sisyphous rpc.idmapd[6552]: New client: fc
Oct 5 15:11:19 sisyphous rpc.idmapd[6552]: New client: fd
Oct 5 15:11:19 sisyphous rpc.idmapd[6552]: New client: fe
Oct 5 15:11:19 sisyphous rpc.idmapd[6552]: Stale client: fe
Oct 5 15:11:19 sisyphous rpc.idmapd[6552]: #011-> closed /run/rpc_pipefs/nfs/clntfe/idmap
Oct 5 15:11:19 sisyphous rpc.idmapd[6552]: Stale client: fd
Oct 5 15:11:19 sisyphous rpc.idmapd[6552]: #011-> closed /run/rpc_pipefs/nfs/clntfd/idmap
Oct 5 15:11:19 sisyphous rpc.idmapd[6552]: Stale client: fc
Oct 5 15:11:19 sisyphous rpc.idmapd[6552]: #011-> closed /run/rpc_pipefs/nfs/clntfc/idmap
如何使 ID 映射(至少是静态的)在 Debian 上工作?ID 映射通常应该与 Synology 配合使用。最终,我想自动将 Synology 用户映射到 Linux 计算机上的 LDAP 用户。
答案1
免责声明:看来,没有 Kerberos 服务器的 ID 映射在 NFSv4 中只能部分起作用。我设法在列出文件时让正确的用户名显示在客户端上,但创建新文件时总是将它们创建为用户没有人因为在这种情况下 Synology 不会映射任何内容。此错误报告和链接线程idmapd
建议这是由于某种原因不使用 Kerberos 时的正常行为。(编辑:更详细的解释。)
然而,我所做的是:
首先,您必须在加载 NFS 服务后启用 idmapping。为此,您必须/usr/syno/etc/rc.sysv/S83nfsd.sh
在 Synology 上编辑文件。找到以下行
SYNOLoadModules $KERNELMODULE
并在其后添加以下行:
echo "N" > /sys/module/nfsd/parameters/nfs4_disable_idmapping
然后,仍然在 Synology 上,编辑/etc/idmap.conf
并将设置Domain
为您的(ITET-PHO
如果尚未设置)。禁用 NFS,应用并重新启用(+应用),然后在 Synology 的控制中心重新加载nfds
。
/etc/modprobe.d/nfs-idmap.conf
在您的客户端计算机上,创建一个包含以下内容的文件:
options nfs nfs4_disable_idmapping=0
options nfsd nfs4_disable_idmapping=0
之后重新加载nfs
内核模块以应用选项。
还要确保idmapd
在客户端上运行。(在 Ubuntu artful 上,我想我必须sudo systemctl start nfs-idmapd
手动运行。)当然,使用它nfsvers=4
作为挂载选项。
(在 Synology 上,您可以killall idmapd
使用它在前台运行它,idmapd -f -vvv
看看它是否在执行任何操作。)