Что именно означает параметр nfs4_disable_idmapping do?

Я экспериментировал с отображением (переводом) идентификаторов пользователей и групп в 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 , если он не оказывает заметного влияния на сопоставление идентификаторов?

2
задан 18 January 2019 в 05:11
1 ответ

Вы выполнили неудачный тест. Согласно документации ядра параметр nfs4_disable_idmapping имеет смысл только при использовании sec = sys .

3
ответ дан 3 December 2019 в 10:32

Теги

Похожие вопросы