У меня есть домен freeIPA с несколькими клиентами и Synology NAS (также зарегистрированный в freeIPA).
Я создал общую папку на NAS с поддержкой NFSv4 + krb5. От клиента я получаю билет для пользователя LDAP user1@mydomain.com
и монтирую эту папку.
Первоначально файлы, созданные в этой папке, будут принадлежать nobody
пользователь.
Наконец-то это заработало, изменив /etc/idmapd.conf
на NAS для
user1@mydomain.com
и локальный пользовательЯ понимаю роль idmapd
перед NFS в целом.
Однако в этом случае:
user1@mydomain.com
почему он не может просто использовать ЭТО uid для владения файлом в этой папке вместо uid локального пользователя? Могу ли я избежать создания локальных пользователей?Мой нынешний 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