NFSv4を介して共有ディレクトリをエクスポートするSynologyDiskStation(DSM 6.0.2)があります。 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
そこで、ドメインITET-PHO
にあるSynologyのユーザーerikhe
をローカルユーザーerik
に静的にマッピングしようとしています。他のすべてのユーザーはnobody
にマップする必要があります。ただし、共有ディレクトリをマウントすると、SynologyからのUID番号が表示されます。
drwxr-xr-x 4 1566874442 1566573057 4096 Okt 5 10:21 erikhe-301898
また、nobody
の代わりに他のすべてのUIDが表示されます。ログファイルで、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
DebianでIDマッピング(少なくとも静的)を機能させるにはどうすればよいですか? IDマッピングは一般的にSynologyで機能するはずです。最終的には、SynologyユーザーをLinuxマシンのLDAPユーザーに自動的にマッピングしたいと思います。
免責事項:Kerberosサーバーを使用しないIDマッピングは、NFSv4では途中でしか機能しないようです。ファイルを一覧表示するときにクライアントに表示される正しいユーザー名を取得できましたが、新しいファイルを作成すると、Synologyは何もマップしないため、常にユーザーnobodyとして作成されます。 。 このバグレポート および リンクされたスレッド は、何らかの理由でKerberosを使用していない場合のidmapd
の正常な動作であることを示唆しています。 (編集: より詳細な説明。 )
しかし、私がしたこと:
まず、NFSサービスをロードした後、idmappingを有効にする必要があります。そのためには、Synologyでファイル/usr/syno/etc/rc.sysv/S83nfsd.sh
を編集する必要があります。行を見つける
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の巧妙な方法では、手動でSudo systemctl start nfs-idmapd
を実行する必要があったと思います。)そしてもちろん、マウントオプションとしてnfsvers=4
を使用します。
(Synologyでは、killall idmapd
を使用してフォアグラウンドで実行し、idmapd -f -vvv
を使用して何かを実行しているかどうかを確認できます。)