Назад | Перейти на главную страницу

NFS4: вызов rpc.idmapd или nfs.idmap?

https://www.kernel.org/doc/Documentation/filesystems/nfs/idmapper.txt состояния:

The file /etc/request-key.conf will need to be modified so /sbin/request-key can
direct the upcall.  The following line should be added:

#OP         TYPE    DESCRIPTION CALLOUT INFO    PROGRAM ARG1 ARG2 ARG3 ...
#====== ======= =============== =============== ===============================
create  id_resolver *   *       /usr/sbin/nfs.idmap %k %d 600

This will direct all id_resolver requests to the program /usr/sbin/nfs.idmap.

Эта запись отсутствует в request-key.conf начиная с Ubuntu 12.04. Я видел несколько разных противоречивых отчетов по этому поводу:

  1. nfs.idmap upcall устарел, вместо него следует использовать rpc.idmapd
  2. rpc.idmapd устарел, вместо него следует использовать nfs.idmap
  3. Ядро автоматически переключается между ними (что ему больше нравится?)

Может ли кто-нибудь пролить свет на это?

Спасибо.

Немного отладки стало ясно, что Ubuntu использует rpc.idmap в исходном виде (по крайней мере, до 12.04).

Археология: вам нужно ядро ​​с скомпилированным механизмом nfsidmap (опция - 'new' idmap - поэтому я предполагаю, что это замена rpc.idmap), чтобы заставить работать вызовы nfsidmap. Также, http://www.mjmwired.net/kernel/Documentation/filesystems/nfs/idmapper.txt содержит документацию ядра (3.5 на момент написания), в которой предполагается, что сначала вызывается rpcidmap, что, как я полагаю, указывает на предпочтение методов (ваша документация выглядит старой копией).

Практическая информация: nfsidmapp является частью более широкой системы безопасности с ключом запроса, которая является сравнительно недавним дополнением к ядру («сравнительно» в том смысле, что он был там более года, но это довольно мало по циклам выпуска Ubuntu). Похоже, что Ubuntu еще не поддерживает весь этот механизм.

Пакет nfs-utils включает в себя двоичные файлы как rpc.idmap, так и nfsidmap, и, конечно же, документация для nfsidmap написана так, чтобы читать как «эта вещь, которую вы используете, работает так». Так что, к сожалению, документация по командам не дает никаких подсказок относительно того, какие именно настройки установлены.

(Также, насколько я могу судить, rpc.idmap не переводит идентификаторы при вызовах open, только на stat и т.п., что приводит к странным случаям, когда вы не можете писать файлы, которые, по данным stat, принадлежат вам, но могут записывать файлы, не принадлежащие никому ... Я не знаю, изменит ли nfsidmap это поведение.)