6개의 머신, 1개의 NFS 서버, 5개의 클라이언트가 있습니다. 세 개의 클라이언트(Ubuntu 14.04 실행)가 제대로 작동합니다. 12.04를 실행하는 다른 두 개에서는 권한 오류가 발생합니다.
매핑된 클라이언트 컴퓨터에서 ls -l /home/
다음을 반환합니다.
drwxr-xr-x 22 testuser testuser 12288 Oct 9 18:03 testuser
이는 예상되는 권한 설정입니다. testuser
이 폴더에 대한 권한이 필요한 사용자입니다.
하지만 에 로그인하면 다음 오류가 발생 testuser
합니다 touch /home/testuser/test.txt
.
touch: cannot touch `/home/testuser/test.txt': Permission denied
이제 숫자 ID는 ID 문자열과 일치하지 않지만나는 이것이 사실이 될 필요가 없다고 들었습니다.
클라이언트 설정:
cat /sys/module/nfs/parameters/nfs4_disable_idmapping
N
위 설정을 사용하면 NFS가 숫자 UID 및 GID가 아닌 문자열을 사용하여 사용자 권한을 매핑할 수 있습니다.
cat /etc/idmapd.conf
[General]
Verbosity = 0
Pipefs-Directory = /run/rpc_pipefs
# set your own domain here, if id differs from FQDN minus hostname
Domain = localdomain
[Mapping]
Nobody-User = nobody
Nobody-Group = nogroup
서버 설정:
cat /etc/exports
/raid/nfs/home server1(rw,sync,no_root_squash,no_subtree_check)
/raid/nfs/home server2(rw,sync,no_root_squash,no_subtree_check)
12.04 시스템이 제대로 작동하도록 하려면 버그나 추가 단계를 수행해야 합니까? 아니면 그냥 과감하게 업그레이드해야 할까요, 아니면 서버에 맞게 모든 UID를 변경해야 할까요?
답변1
문제는 GETATTR/SETATTR(stat, chown, setacl)을 수행하거나 kerberos가 사용되는 경우에만 idmapd가 관련된다는 것입니다(주체와 ID 매핑용). 그러나 nfs 클라이언트가 auth=sys로 CREATE 요청을 보내면 uid와 gid는 RPC 메시지에서 가져옵니다. 따라서 권한 문제를 해결하려면 서버와 클라이언트에서 uid와 gid가 일치해야 합니다.