nfs 공유의 krb5p 및 sys에 대한 질문

nfs 공유의 krb5p 및 sys에 대한 질문

nfs와 일부 공유가 있습니다. 여기에 /etc/exports 파일이 있습니다. (no_root_squash가 위험하다는 것을 알고 있지만 테스트를 위해 일시적일 뿐입니다.)

/srv/nfs4              10.3.0.0/24(ro,no_subtree_check,fsid=0,sec=krb5p:sys) 192.168.0.0/24(ro,no_subtree_check,fsid=0,sec=krb5p:sys)
/srv/nfs4/kernels  10.3.0.0/24(rw,no_subtree_check,async,no_root_squash,nohide,sec=krb5p:sys) 192.168.0.0/24(rw,no_subtree_check,async,no_root_squash,nohide,sec=krb5p:sys)

sys 옵션을 사용하여 디렉터리를 마운트하면 posix acl이 존중되고 파일을 루트로 생성하면 권한이 루트(내가 원하는 것)로 보고됩니다.

mount -vvv -o sec=sys myserver:/kernels /mnt/
mount.nfs: timeout set for Tue Dec 28 07:18:41 2021
mount.nfs: trying text-based options 'sec=sys,proto=tcp,retrans=2,retry=1,acl,ac,rsize=32768,wsize=32768,bsize=32768,port=2049,vers=4,addr=10.3.0.1,clientaddr=10.3.0.1'

cd /mnt
mkdir 44944
root@server:/mnt$ ls -lhd *
drwxr-xr-x 2 nobody nogroup 4,0K 28 dic 06.52 33/
drwxr-xr-x 2 root   root    4,0K 28 dic 07.10 449/
drwxr-xr-x 2 nobody nogroup 4,0K 28 dic 07.17 4494/
drwxr-xr-x 2 root   root    4,0K 28 dic 07.18 44944/

문제는 sec=krb5p를 사용하여 디렉토리를 마운트하면 none:nogroup(sic!)으로 마운트가 강제로 적용되고 디렉토리에 777 권한을 부여한 다음 Kerberos화된 사용자로 입력하고(먼저 kinit를 수행했습니다) 생성을 시도했다는 것입니다. dir..it는 권한을 none:nogroup으로 보고합니다.

mount -vvv -o sec=krb5p myserver:/kernels  /mnt/
mount.nfs: timeout set for Tue Dec 28 07:21:45 2021
mount.nfs: trying text-based options 'sec=krb5p,proto=tcp,retrans=2,retry=1,acl,ac,rsize=32768,wsize=32768,bsize=32768,port=2049,vers=4,addr=10.3.0.1,clientaddr=10.3.0.1'

mkdir 449444
root@myserver:/mnt$ ls -lhd *
drwxr-xr-x 2 nobody nogroup 4,0K 28 dic 06.52 33/
drwxr-xr-x 2 root   root    4,0K 28 dic 07.10 449/
drwxr-xr-x 2 nobody nogroup 4,0K 28 dic 07.17 4494/
drwxr-xr-x 2 root   root    4,0K 28 dic 07.18 44944/
drwxr-xr-x 2 nobody nogroup 4,0K 28 dic 07.21 449444/

보시다시피 디렉토리는 none nogroup으로 생성되었습니다(chmod 777을 사용하지 않으면 올바른 권한이 거부됩니다).

무엇을 확인해야 합니까? 서버와 클라이언트 모두 Debian 11입니다.

답변1

해결책을 찾으세요. 저는 하나의 인터페이스를 통해 하나의 네트워크에 연결되고 다른 인터페이스를 통해 다른 네트워크에 연결되는 다중 네트워크 서버를 사용하고 있습니다. 네트워크당 두 개의 "다른" 호스트 이름을 사용하기 전에(네트워크 A는 내 서버를 virt.domain.example로 확인하고 네트워크 B는 내 서버를 router.domain.example로 확인했습니다) 동일한 호스트 이름(그러나 다른 도메인)을 사용하여 이 변경을 수행했습니다. 물론 각 네트워크의)는 이제 데몬을 다시 시작한 후에도 완벽하게 작동합니다.

관련 정보