운영 체제: 리눅스 CentOS 7, NFSv4
한 컴퓨터에서 다음이 소유한 NFS 공유 그룹을 내보냈습니다.국가 금융 서비스 그룹2770 그룹 공동 작업 권한이 있습니다:
groupadd -g 5000 nfsgroup
chown nobody:nfsgroup /home/groupshare
chmod 2770 /home/groupshare
그런 다음 다른 컴퓨터에 동일한 그룹을 추가하고 이를 루트 사용자에게 할당합니다. 그런 다음 마운트된 NFS 공유에 액세스하려고 시도했는데 "권한 거부" 오류가 발생했습니다.
groupadd -g 5000 nfsgroup
usermod -a -G nfsgroup root
ls -l /mnt/groupshare # Permission denied!
참고: 이를 위해 루트로 다시 로그인을 시도하고 컴퓨터를 다시 시작해도 결과는 동일했습니다. 권한이 거부되었습니다.
그런 다음 일반 계정(이름:사용자) 및 액세스 문제 없음
usermod -a -G nfsgroup user
su - user
ls -l /mnt/groupshare # Works as expected, no permission errors
루트 아래의 공유에 액세스할 수 있는 유일한 방법은 유효 그룹을 변경하는 것입니다(추가하는 경우에도).국가 금융 서비스 그룹당신은):
su - root
newgrp nfsgroup
ls -l /mnt/groupshare # No permission errors
나는 이 행동이 일관성이 없고 이상하다고 생각합니다. 누군가 왜 이렇게 동작하는지 설명할 수 있나요?
어떤 면에서 관련이 있을 수 있는 정보는 다음과 같습니다. 둘 다 id
(낮은사용자계정), id user
특히 동일한 출력을 반환합니다.그룹=1000(사용자), 5000(nfs 그룹), 및 id
(아래뿌리계정) 생성그룹=0(루트)id root
예상대로 출력은 다음과 같습니다 .그룹=0(루트),5000(nfs그룹).
답변1
문제의 원인을 찾은 것 같아요. NFS 클라이언트가 NFS 공유에 액세스하면 서버는 액세스하는 사용자의 UID와 GID를 확인합니다. 기본적으로 NFS 서버에는 root_squash
공유에 루트로 액세스하는 NFS 클라이언트에 UID/GID를 할당하는 옵션이 활성화 되어 있습니다.무인.
no_root_squash
파일 내보내기에 옵션을 추가한 후 /etc/exports
문제가 사라졌습니다.
분명히 NFS 서버가 루트의 UID/GID를 "압축"할 때 보충 그룹을 완전히 무시합니다(나에게는 잘못된 것처럼 보이지만 NFSv4 표준에는 다른 아이디어가 있을 수 있습니다).