San Storage에 연결된 IBM AIX 서버(serverA)가 있습니다. 볼륨 그룹과 파일 시스템(jfs2)을 생성하고 이를 /profit 디렉토리에 마운트했습니다.
그런 다음 디렉터리에 대한 NFS 공유를 생성하고 NFS 데몬을 시작했습니다.
다른 서버(또한 IBM AIX(serverB))에서 마운트 지점 /profit을 생성하고 다음 명령을 사용하여 nfs 공유를 serverA에서 serverB로 마운트했습니다. mount 192.168.10.1:/profit /profit
serverB에서는 디렉토리에 액세스하여 그 안에 있는 파일을 나열할 수 있습니다. 그러나 이상한 점은 serverA에서 디렉토리와 파일이 oracle 사용자 소유라는 것입니다. 하지만 serverB에서는 이들을 다른 사용자로 봅니다.
serverB, serverA의 해당 디렉토리에 있는 파일을 터치하면 해당 파일이 다른 사용자 ID로 표시됩니다.
이 문제를 어떻게 해결할 수 있는지 단서가 있습니까?
다음은 serverB의 파일 목록입니다.
$ ls -l
total 0
-rwxrwxrwx 1 root system 0 Mar 16 15:00 haha
-rwxrwxrwx 1 radiusd radiusd 0 Mar 16 15:19 haha2
-rwxrwxrwx 1 radiusd radiusd 0 Mar 16 15:31 haha3
-rw-r--r-- 1 oracle oinstall 0 Mar 17 2011 hahah3
drwxrwxrwx 2 radiusd radiusd 256 Mar 16 14:40 lost+found
serverA에서는 다음과 같습니다.
# ls -l /profit
total 0
-rwxrwxrwx 1 root system 0 Mar 16 15:00 haha
-rwxrwxrwx 1 oracle dba 0 Mar 16 15:19 haha2
-rwxrwxrwx 1 oracle dba 0 Mar 16 15:31 haha3
-rw-r--r-- 1 10 sshd 0 Mar 17 16:01 hahah3
drwxrwxrwx 2 oracle dba 256 Mar 16 14:40 lost+found
다음은 serverA의 /etc/exports 파일입니다.
# more /etc/exports
/profit -vers=3,sec=sys:krb5p:krb5i:krb5:dh,rw
감사해요.
답변1
각 NFS 클라이언트 시스템은 로컬 시스템의 로컬 UID를 사용하여 숫자 UID를 조회하여 사용자 이름을 결정한다는 점을 기억하십시오./etc/비밀번호, 또는 중앙 집중식 사용자 데이터베이스에 있습니다. NFS 서버는 UID를 숫자 형식으로만 저장하며 사용자 이름은 모릅니다. 그룹 이름과 GID도 마찬가지입니다.
귀하의 경우, serverA와 serverB는 /etc/passwd에 나열된 사용자 이름이 달라야 합니다.
이를 테스트하려면 ls -n
긴(-l) 출력에서 사용자 또는 그룹 이름으로 변환하는 대신 를 사용하여 사용자 및 그룹 ID를 숫자로 표시합니다. ls -n
AIX에서 이 옵션을 사용할 수 없는 경우 이 기능에 대한 맨페이지를 참조하십시오.
사용자 이름과 uid 매핑을 보려면 serverA 및 serverB에서 다음 작업 중 하나를 수행합니다.
grep $THEUSERID /etc/passwd
getent
또는 /etc/password 및 디렉토리 서비스(LDAP 등)와 함께 작동하므로 를 사용하는 것이 좋습니다 .
getent passwd $THEUSERID
UID는 두 시스템 모두에서 동일해야 하지만 사용자 이름은 다릅니다.
답변2
NFS 내보내기의 첫 번째 규칙이라고 부르는 것을 접했습니다.
클라이언트가 서버와 동일한 UID 매핑을 사용하지 않는 한 쓰기 가능한 마운트를 클라이언트에 내보내지 마십시오.
즉, 파일 서버 소유자는 모든 잠재적 NFS 클라이언트가 동일한 중앙 집중식 사용자 데이터베이스(NIS, NIS+, LDAP, Kerberos 등)를 사용하도록 요구해야 합니다.
답변3
나는 또한 당신의 문제에 직면했고이것으로 해결해보세요:
실제로 클라이언트 파일 NEED_IDMAPD
에는 설정이 없습니다 ./etc/default/nfs-common
클라이언트 설정 NEED_IDMAPD=yes
도 이 문제를 해결합니다. 이제 클라이언트에 사용자 이름과 그룹이 올바르게 표시됩니다.