두 서버 간에 NFS 공유를 생성한 후,파운드 1(nfs 클라이언트) 및데이터 서버 1(nfs-kernel-server), NFS 서버 권한이 있는 사용자에게는 NFS 클라이언트에 액세스할 수 있는 권한이 없습니다.
데이터 서버 1 구성:
$ cat /etc/exports
/data 10.132.246.167(rw,no_subtree_check)
$ ls -la / | grep data
drwx--x--x 3 u1 users 4.0K Sep 6 03:55 data/
$ ls -la /data
drwxr-xr-x 3 u1 users 4.0K Sep 6 02:31 prod/
drwxrwsr-x 2 www-data www-data 4.0K Sep 6 02:31 keys/
$ awk -F: '$0=$1 " uid="$3 " gid="$4' /etc/passwd | grep 'root\|u1\|ftp\|www-data'
root uid=0 gid=0
www-data uid=33 gid=33
u1 uid=115 gid=100
ftp uid=999 gid=100
lb1 구성:
$ mount 10.132.245.223:/data /data
$ mount
10.132.245.223:/data on /data type nfs4 (rw,relatime,vers=4,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=10.132.246.167,minorversion=0,local_lock=none,addr=10.132.245.223)
$ sudo -u u1 ls -la / | grep data
drwx--x--x 3 u1 users 4.0K Sep 6 03:55 data/
$ sudo -u u1 ls -la /data
drwxr-xr-x 3 u1 users 4.0K Sep 6 02:31 prod/
drwxrwsr-x 2 www-data www-data 4.0K Sep 6 02:31 keys/
$ awk -F: '$0=$1 " uid="$3 " gid="$4' /etc/passwd | grep 'root\|u1\|ftp\|www-data'
root uid=0 gid=0
www-data uid=33 gid=33
u1 uid=115 gid=100
ftp uid=999 gid=100
NFS 서버(즉, data-server1)에서 루트, u1 및 ftp 사용자는 /data 하위 디렉터리에 대한 적절한 rwx 권한을 가지며 문제 없이 파일 시스템에 액세스할 수 있습니다. 그러나 NFS 클라이언트(예: lb1)에서는 NFS 공유 내의 디렉터리 내용 permission denied
만 나열하려고 하면 루트 및 ftp 오류가 발생합니다. /data
반면에 사용자 u1은 완벽하게 실행됩니다.
NFS를 처음 사용합니다.
답변1
모든 것이 예상대로 보입니다. 이므로 소유자만 /data
나열 할 수 있습니다. 다른 사람은 해당 파일 및 하위 디렉터리에 대한 권한에 따라 해당 파일 및 하위 디렉터리에 액세스할 수 있습니다.rwx--x--x
u1
또한 내보내기 라인에 no_root_squash가 없는 경우(또는 NFSv4를 실행하는 경우 명시적인 사용자 ID 매핑 수행) NFS 클라이언트의 사용자 ID 0은 서버의 사용자 ID 65534(일부 시스템에서는 -2)로 매핑됩니다. 다음은내보내기(5) 매뉴얼 페이지:
일반적으로 NFS 서버의 파일에 액세스할 때 클라이언트 시스템의 루트 사용자가 루트로 간주되는 것을 원하지 않습니다. 이러한 이유로 uid 0은 일반적으로 소위 익명 또는 인간 uid라는 다른 ID에 매핑됩니다. 이 작동 모드("루트 스쿼시"라고 함)는 기본값이며 no_root_squash를 사용하여 끌 수 있습니다.
기본적으로 내보내기fs는 압축 액세스를 위해 uid 및 gid 65534를 선택합니다. 이 값은 anonuid 및 anongid 옵션으로 재정의될 수도 있습니다.