Ситуация - сервер и клиент nfs4, использующие rpc.idmapd для сопоставления идентификаторов. Отображение идентификаторов работает на клиенте для существующих файлов, обслуживаемых сервером.
На сервере:
[root@server ~]# id user1
uid=500(user1) gid=502(user1) groups=502(user1)
[root@server ~]# ls -l /mnt/san/temp
total 0
-rw-r--r-- 1 user1 user1 0 Aug 27 11:46 test1
[root@server ~]# ls -ln /mnt/san/temp
total 0
-rw-r--r-- 1 500 502 0 Aug 27 11:46 test1
На клиенте:
[user1@client ~]$ id user1
uid=504(user1) gid=506(user1) groups=506(user1)
[user1@client ~]$ ls -l /mnt/san/temp
total 0
-rw-r--r-- 1 user1 user1 0 Aug 27 11:46 test1
[user1@client ~]$ ls -ln /mnt/san/temp
total 0
-rw-r--r-- 1 504 506 0 Aug 27 11:46 test1
Так что это нормально.
Однако создание файла от клиента:
[user1@client ~]$ touch /mnt/san/temp/test2
[user1@client ~]$ ls -l /mnt/san/temp
total 0
-rw-r--r-- 1 user1 user1 0 Aug 27 11:46 test1
-rw-rw-r-- 1 user2 user2 0 Aug 27 11:49 test2
[user1@client ~]$ ls -ln /mnt/san/temp
total 0
-rw-r--r-- 1 504 506 0 Aug 27 11:46 test1
-rw-rw-r-- 1 505 507 0 Aug 27 11:49 test2
Похоже, что на данный момент он не выполняет отображение id-> name на стороне клиента.
Обе системы - CentOS 5.x. Между прочим, файлы /proc/net/rpc/nfs4.nametoid/content и /proc/net/rpc/nfs4.idtoname/content пусты на клиенте, но имеют записи на сервере.
Я включил регистрацию на rpc.idmapd на клиенте, и / var / log / messages показывает, что он используется для сопоставления имени и идентификатора, например: 27 августа 11:49:27 fw01 rpc.idmapd [11773]: Клиент 23: ( user) name "user2 @ localdomain" -> id "505" Я ожидал, что соответствующие поиски id-> name произойдут в момент создания файла на стороне клиента.
Простое решение синхронизации идентификаторов и использования nfsv3 на самом деле не вариант (как и не просто!).
РЕДАКТИРОВАТЬ:
извините за путаницу:
[user1@client ~]$ getent passwd 504 505
user1:x:504:506::...
user2:x:505:507::...
[user1@client ~]$ getent group 506 507
user1:x:506:
user2:x:507:
[root@server ~]# getent passwd 504 505
user2:x:504:506::...
[root@server ~]# getent group 506 507
user2:x:506:
то есть происходит создание файлов на клиенте, поскольку user1 (uid 504 / gid 506) не транслируется перед созданием на сервере. Он создан на сервере как 504/506. На сервере это user2 / user2, поэтому после этого момента он возвращается клиенту неправильно.
У меня тоже была такая же проблема, и я потратил некоторое время на поиск ответа. Кажется, что rpc.idmapd не поддерживает сопоставление идентификаторов и имен, которое позволило бы вам вносить изменения в файловую систему. Однако я видел ссылку на тот факт, что это может сработать, если вы монтируете с аутентификацией Kerberos (http://permalink.gmane.org/gmane.linux.nfsv4/11363). Я сам еще не пробовал, так как Kerberos, похоже, немного сложно настроить. Сейчас я просто синхронизирую UID для простоты.