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

LDAP + KERBEROS + NFS. Зачем мне idmapd?

Что я пытаюсь сделать

У меня есть домен freeIPA с несколькими клиентами и Synology NAS (также зарегистрированный в freeIPA).

Я создал общую папку на NAS с поддержкой NFSv4 + krb5. От клиента я получаю билет для пользователя LDAP user1@mydomain.com и монтирую эту папку.

Первоначально файлы, созданные в этой папке, будут принадлежать nobody пользователь.

Наконец-то это заработало, изменив /etc/idmapd.conf на NAS для

Вопрос

Я понимаю роль idmapd перед NFS в целом.

Однако в этом случае:

Мой нынешний idmapd.conf выглядит так:

[General]
Domain=hq.example.com

[Mapping]
Nobody-User=guest
Nobody-Group=users

[Translation]
Method=nsswitch
GSS-Methods=static,synomap

[Static]
user1@HQ.EXAMPLE.COM=user1

Я бы хотел добиться того, чтобы статическое отображение мне не нужно. user1@HQ.EXAMPLE.COM=user1 и, если возможно, мне даже не нужно создавать локального пользователя user1 на NAS.

Суть в том, что протокол NFSv4 полагается на пользователяназвание разделяется между сервером и клиентом, а не UID / GID числоs (которые использовались в более ранних версиях) и сопоставление UID <==> имени пользователя могут фактически отличаться на клиенте и сервере.

Как часть протокола NFSv4, серверу необходимо сопоставить общие контексты / разрешения безопасности, owner и owner_group с чем-то, что имеет смысл для операций локальной файловой системы. Это сопоставление выполняется IDMAPD в системах Linux.

В системе Linux многие операции локальных файловых систем основаны на UID / GID, но их необходимо преобразовать в общий контекст NFSv4, прежде чем они могут быть переданы на сервер NFS.

Может быть RFC 3530 могу объяснить это лучше:

§ 5.8. Интерпретация owner и owner_group

Рекомендуемые атрибуты "owner" и "owner_group" (а также пользователи и группы в атрибуте «acl») представлены в виде строки UTF-8. Чтобы избежать представления, привязанного к конкретной базовой реализации на клиенте или сервере, было выбрано использование строки UTF-8. Обратите внимание, что раздел 6.1 [RFC2624] дает дополнительное обоснование. Ожидается, что клиент и сервер будут иметь собственное локальное представление owner и owner_group, которое используется для локального хранения или представления конечному пользователю. Следовательно, ожидается, что при передаче этих атрибутов между клиентом и сервером локальное представление преобразуется в синтаксис формы "user@dns_domain". Это позволит клиенту и серверу, которые не используют одно и то же локальное представление, возможность переводить в общий синтаксис, который может интерпретироваться обоими.


редактировать в ответ на ваш imapd.conf.

Вы используете статическое сопоставление с локальным пользователем. Вероятно, вы захотите сопоставить идентификаторы NFSv4 с пользователями LDAP, что, вероятно, должно произойти nsswitch вариант, но видимо нет. Вы можете попытаться увидеть, что происходит, увеличив подробность idmapd на сервере NFS.

В качестве альтернативы настройте idmapd для прямого запроса вашего LDAP-сервера. Точный синтаксис может зависеть от используемой версии, но страница руководства показывает что-то вроде:

[General]

Verbosity = 0
Domain = domain.org
Local-Realms = DOMAIN.ORG,MY.DOMAIN.ORG,YOUR.DOMAIN.ORG

[Mapping]

Nobody-User = nfsnobody
Nobody-Group = nfsnobody

[Translation]

Method = umich_ldap,nsswitch
GSS-Methods = umich_ldap,static

[Static]
johndoe@OTHER.DOMAIN.ORG = johnny

[UMICH_SCHEMA]   
LDAP_server = ldap.domain.org
LDAP_base = dc=org,dc=domain