Я экспериментировал с отображением (переводом) идентификатора пользователя / группы в NFSv4. Я хочу добиться преобразования идентификатора на основе имени, который не зависит от фактического UID / GID на сервере и клиентах.
Во многих руководствах и статьях упоминается, что для работы сопоставления идентификаторов необходимо установить nfs4_disable_idmapping
параметр для 0
(он же N) в nfs
модуль на клиенте, и nfsd
модуль на сервере. Однако я не нашел никакой информации или документации о том, что именно делает этот параметр.
В качестве эксперимента я настроил сервер и клиент NFSv4 (с sec=krb5
), и я намеренно оставил для этих параметров значения по умолчанию (отображение отключено). Я могу проверить, что отображение отключено на сервере:
$ cat /sys/module/nfsd/parameters/nfs4_disable_idmapping
Y
и на клиенте:
$ cat /sys/module/nfs/parameters/nfs4_disable_idmapping
Y
Я создал пользователей bob(uid=1002)
и sam(uid=1001)
на сервере, а пользователи bob(uid=1003)
и sam(uid=1004)
на клиенте. Как видите, UID не совпадают, однако пользователи по-прежнему отображаются правильно. Файл, созданный bob
пользователь рассматривается как владелец bob
на сервере, и наоборот.
Более того, если я посмотрю логи на клиенте:
nfsidmap[1874]: key: 0x322c739a type: uid value: bob@home.lan timeout 600
nfsidmap[1874]: nfs4_name_to_uid: calling nsswitch->name_to_uid
nfsidmap[1874]: nss_getpwnam: name 'bob@home.lan' domain 'home.lan': resulting localname 'bob'
nfsidmap[1874]: nfs4_name_to_uid: nsswitch->name_to_uid returned 0
nfsidmap[1874]: nfs4_name_to_uid: final return value is 0
и на сервере:
rpc.idmapd[1717]: nfsdcb: authbuf=gss/krb5p authtype=user
rpc.idmapd[1717]: nfs4_uid_to_name: calling nsswitch->uid_to_name
rpc.idmapd[1717]: nfs4_uid_to_name: nsswitch->uid_to_name returned 0
rpc.idmapd[1717]: nfs4_uid_to_name: final return value is 0
rpc.idmapd[1717]: Server : (user) id "1002" -> name "bob@home.lan"
они оба предполагают, что сопоставление идентификаторов действительно работает "по имени" скорее тогда "по идентификатору".
Итак, мой вопрос: что такое nfs4_disable_idmapping
параметр для этого, если кажется, что он не оказывает заметного влияния на сопоставление идентификаторов?
Вы попали в плохой тестовый пример. По ядру документация nfs4_disable_idmapping
вариант имеет смысл только тогда, когда sec=sys
используется.