idmap이 있는 NFSv4

idmap이 있는 NFSv4

NFS 서버에 다음 오류가 나타납니다. 이 문제를 해결할 수 있는 방법을 알려주시겠습니까?

세부:

시스템: CentOS 릴리스 6.4, NFS: nfs-utils-1.2.3-36

# cat /etc/idmapd.conf

[General]
Domain = domain.com

[Mapping]
Nobody-User = nobody
Nobody-Group = nobody

[Translation]
Method = nsswitch

Sep  3 08:25:28 snode1 rpc.idmapd[1382]: nss_getpwnam: name '0' does not map into domain 'domain.com'
Sep  3 08:25:29 snode1 rpc.idmapd[1382]: nss_getpwnam: name '500' does not map into domain 'domain.com'

편집: 2013년 9월 3일 10:41

저는 NFSv4를 사용하고 있으며 이러한 오류는 NFS 서버에만 나타납니다(NFS 클라이언트는 아님).

섬기는 사람:

# cat /etc/sysconfig/nfs

MOUNTD_NFS_V2="no"
MOUNTD_NFS_V3="no"
...
RPCNFSDARGS="-N 2 -N 3"

클라이언트:

# cat /etc/fstab

server:/     /data  nfs4    defaults,hard,intr,timeo=15,_netdev,noatime,nodiratime,nosuid    0 0

편집: 2014년 6월 11일 수요일 14:52:50 BST

# getent passwd "0" | cut -d: -f1
root
# getent passwd "500" | cut -d: -f1
user1

-

# grep "^passwd" /etc/nsswitch.conf 
passwd:     files

답변1

조금 추측해 보도록 하겠습니다. NFS 서버에서 UID '0' 또는 '500'을 확인하면 무엇을 얻게 됩니까? 혹시 로컬 계정인가요?

제가 제안하는 이유는 NFSv4가 설계상 도메인 내의 계정 이름을 참조하고 이전 NFS 버전의 '로컬 인증'을 피하려고 하기 때문입니다. 따라서 NFS 패킷으로 전달되는 계정 이름을 변환하여 사용자 이름을 UID/GID로 변환하는 idmapd를 사용합니다.

올바르게 결정한 대로 여기에 문제가 있는 것 같습니다. 따라서 제 질문은 어떤 인증 도메인을 사용하고 있는지, 쿼리할 때 UID 0과 500에 대한 답변을 얻느냐는 것입니다.

예를 들어 서버가 클라이언트와 비교했을 때 LDAP(Active Directory) 디렉토리의 잘못된 분기를 보고 있을 때 유사한 현상을 본 적이 있습니다. UID/사용자 이름 관계를 해결할 수 없기 때문에 문제가 발생하고 결과적으로 이러한 사용자를 '아무도 아닌'으로 변환했습니다.

nsswitch를 통해 해상도가 구성되었습니다. nsswitch는 'passwd'에 대해 무엇을 말합니까? (주로 서버에서 문제가 발생하는 것 같습니다.)

편집: 좋습니다. 'passwd'에 따르면 로컬 데이터베이스로 '파일'이 있습니다. 예: /etc/passwd. 이는 로컬 계정을 통해 UID/GID를 매핑한다는 의미입니다. 너해서는 안 된다NFSv4에서 UID를 사용하고 있다면 사용자 이름이어야 합니다.

그러나 인터넷 검색을 통해 다음과 같은 정보를 얻을 수 있습니다. http://www.spinics.net/lists/linux-nfs/msg38598.html

따라서 다음 질문은 'sys' 인증을 사용하고 있습니까? 나는 귀하의 fstab을 기반으로 추측하고 있습니다. 어느 시점에서 이것은 예상되는 동작으로 보입니다. 귀하의 클라이언트는 'sys'를 사용하여 UID/GID를 전달하고 있습니다. idmapd는 유효한 사용자(UID)가 아니기 때문에 불평합니다.

클라이언트에서 파일을 UID 500 또는 0으로 '터치'하면 클라이언트와 서버에서는 어떻게 보일까요(사용자 이름을 얻으려면 ls -l, uid를 얻으려면 ls -ln)? 제대로 작동한다면 이는 NFSv3 인증 시스템과 NFSv4 간의 이전 버전과의 호환성으로 인해 발생한 것으로 보이며 메시지는 무해합니다.

Kerberos 인증이나 이와 유사한 인증으로 업그레이드하는 것을 고려할 수 있지만 경험상 이는 쉽지 않은 작업입니다. (비록 다소 편리한 장점이 있지만). 내가 링크한 메시지(트레일)는 이 오류 메시지가 이후 커널 버전에서 더 이상 나타나지 않는다는 것을 의미합니다.

답변2

네트워크를 통해 숫자로 된 사용자 및 그룹 식별자만 보내는 NFSv3을 사용하고 있는 것 같습니다.

idmapd가 작동하도록 하려면 idmapper가 이해하고 로컬 계정에 매핑된 user@domain 식별자를 보내는 NFSv4를 사용해야 합니다(따라서 서버와 클라이언트 모두에서 동일한 uid/gid가 필요하지 않습니다).

-t 옵션을 사용하여 해당 공유를 마운트해 보십시오.

mount -t nfs4 server:/path /mountpoint

답변3

다음 솔루션이 다음에서 제공되는지 확인하십시오.젠투 포럼당신을 도와주세요:

 1. On the NFS server, /etc/hostname did not contain the FQDN, just the local hostname.
 2. This particular client had an unconfigured /etc/idmapd.conf. It had Domain = localdomain instead of Domain = FQDN-minus-hostname. 

설정에서는 두 번째 옵션처럼 보입니다.

Google에서 "nss_getpwnam: 이름 '0'이 도메인에 매핑되지 않습니다"라는 정확한 오류 메시지를 검색하면 도움이 될 수 있는 많은 결과가 제공됩니다(가장 유망한 항목만 지적함).

관련 정보