NFSv4 사용자 매핑 문제

NFSv4 사용자 매핑 문제

NFSv3에서 NFSv4로 전환하고 싶지만 일부 시스템에서는 잘 알려진 uid가 일반 사용자에게 할당되어 있기 때문에 NFSv4 사용자 매핑에 문제가 있습니다.

설정 지침은 아래를 참조하세요.

33문제는 설치된 디렉토리를 uid 대신 실제 uid에 속하게 하는 방법입니다 1000.


저장

/mnt/web_dir사용자에게 속합니다 www-data (uid 33).

네트워크 서버

  • storage:/mnt/web_dir에 설치됩니다/var/www
  • 사용자가 www-datauid를 가지고 있습니다33

관리서버

  • storage:/mnt/web_dir에 설치됩니다/mnt/web_dir
  • 사용자가 www-datauid를 가지고 있습니다1000
  • 사용자가 adminuid를 가지고 있습니다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

관련 정보