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