NFSv3からNFSv4に切り替えたいのですが、一部のシステムでは、よく知られているuidが通常のユーザーに割り当てられているため、NFSv4ユーザーマッピングに問題があります。
設定手順については、下記をご覧ください。
33
問題は、インストールされたディレクトリをuidの代わりに実際のuidに属させる方法です1000
。
保存
/mnt/web_dir
ユーザーに属しますwww-data (uid 33)
。
ネットワークサーバー
storage:/mnt/web_dir
にインストールされます/var/www
- ユーザーが
www-data
uidを持っています33
管理サーバー
storage:/mnt/web_dir
にインストールされます/mnt/web_dir
- ユーザーが
www-data
uidを持っています1000
- ユーザーが
admin
uidを持っています33
これで問題は、実際のuidを表示するのではなく、管理サーバーのuidとユーザー名が混在していることです。たとえば、これはrsyncに問題を引き起こす可能性があります。
NFSリポジトリのローカルディレクトリ
root@stor /mnt/web_dir $ ls -la
total 8
drwxr-xr-x 2 root root 4096 Jul 3 14:01 .
drwxr-xr-x 4 root root 4096 Jul 3 14:01 ..
-rw-r--r-- 1 www-data www-data 0 Jul 3 14:01 index.html
root@stor /mnt/web_dir $ id -u www-data
33
管理サーバーのNFSインストールディレクトリ
root@admin /mnt/webdir $ ls -lah
insgesamt 8,0K
drwxr-xr-x 2 root root 4,0K Jul 3 13:43 .
drwxr-xr-x 6 root root 4,0K Jul 3 13:43 ..
-rw-r--r-- 1 www-data www-data 0 Jul 3 13:43 testfile
root@admin /mnt/web_dir $ id -u www-data
1000
root@admin /mnt/web_dir $ ls -ln
insgesamt 0
-rw-r--r-- 1 1000 1000 0 Jul 3 13:43 testfile
構成は次のとおりです。
root@admin / $ cat /proc/mounts
storage:/mnt/web_dir /var/www nfs4 rw,relatime,vers=4,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=10.x.x.x,minorversion=0,local_lock=none,addr=10.x.x.x 0 0
そして
root@stor / $ exportfs -v
/mnt/web_dir
10.x.x.x(rw,async,wdelay,no_root_squash,no_subtree_check)
そして
root@admin /mnt/web_dir $ cat /etc/idmapd.conf
[General]
Verbosity = 0
Pipefs-Directory = /var/lib/nfs/rpc_pipefs
# set your own domain here, if id differs from FQDN minus hostname
# Domain = localdomain
[Mapping]
Nobody-User = nobody
Nobody-Group = nogroup
そして
root@admin /mnt/web_dir $ dpkg -l | grep nfs
ii libnfsidmap2:amd64 0.25-4 amd64 NFS idmapping library
ii nfs-common 1:1.2.6-4 amd64 NFS support files common to client and server
root@stor / $ dpkg -l | grep nfs
ii libnfsidmap2:amd64 0.25-4 amd64 NFS idmapping library
ii nfs-common 1:1.2.6-4 amd64 NFS support files common to client and server
ii nfs-kernel-server 1:1.2.6-4 amd64 support for NFS kernel server
明らかに、Debian Jessieを使用して設定をテストし、実際のuidがnfs4クライアントに渡されるので、バージョンが重要です。しかし、問題のサーバーにはDebian 7があり、最新の状態です。
助けてくれてありがとう。ありがとうございます!
答え1
ここでの問題は、有効になっている最も高いNFSバージョンがNFS 4.0であることです。
root@stor / $ cat /proc/fs/nfsd/versions
+2 +3 +4 -4.1
したがって、クライアントがNFS 4.0(またはminorversion=0
)に接続すると、デフォルトのバージョンはNFS 4.0(または)です。
解決策は、実際にオプションを使用してディレクトリをマウントすることです。minorversion=1
root@admin / $ cat /proc/mounts
storage:/mnt/web_dir /var/www nfs4 rw,relatime,vers=4,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=10.x.x.x,minorversion=1,local_lock=none,addr=10.x.x.x 0 0