В Ubuntu (xenial aka 16.04) все клиенты показывают владельцев директорий и файлов во всех подключенных каталогах NFS4 как никто: никто.
База данных пользователей и групп поступает через sssd из ldap и клиент, и сервер используют одни и те же источники / деревья ldap и getent passwd $user
, показывает правильную запись ($user
является нелокальной, т.е. пользовательской записью ldap, поэтому похоже, что ldap работает).
Пользователи могут писать в принадлежащие им каталоги (даже если ОС показывает никто: никто), а новые файлы также получают правильное право собственности на сервере, т.е. UID: GID как определено в дереве ldap. Однако довольно странно, что пользователи Ubuntu не могут видеть, кому принадлежат файлы. Кроме того, похоже, что ssh выполняет некоторые проверки, и, таким образом, нельзя войти в систему, используя метод авторизованного ключа (т.е.без пароля), и при этом он не использует никаких настроек из ~ / .ssh / * если явно не указано в CLI. Это кошмар. У клиентов Solaris нет никаких проблем, поэтому проблема должна быть связана с Ubuntu / Linux.
files [SUCCESS=return] sss
для passwd
, group
, shadow
, services
, netgroup
, automount
и hosts
устанавливать. NEED_GSSD
, NEED_STATD
установлен в нет, STATDOPTS
к ''.Что еще мне не хватает?
Это из-за NFSv4 idmap пропустить конфигурацию. Согласно спецификации nfs, клиент и сервер используют принципалов на основе строк в качестве идентификаторов для владельцев и групп. Локальная конфигурация idmapd отвечает за преобразование этих принципалов в локальные uid и gids. Обычно это включает LDAP или NIS.
Вы можете заставить клиент и сервер использовать числовой идентификатор:
$ echo Y > /sys/module/nfs/parameters/nfs4_disable_idmapping
$ nfsidmap -c
на клиенте, и
# echo Y > /sys/module/nfsd/parameters/nfs4_disable_idmapping
на сервере. И / или, чтобы изменения были постоянными, используйте соответствующую конфигурацию модуля:
$ echo "options nfs nfs4_disable_idmapping=1" > /etc/modprobe.d/nfs.conf
и
$ echo "options nfsd nfs4_disable_idmapping=1" > /etc/modprobe.d/nfsd.conf
Если копнуть немного глубже, выясняется, что клиент Linux NFS4 не поддерживает зоны / cgroup / LXC. Т.е. он слепо использует конфигурацию ключа запроса из глобальной зоны (/etc/request-key.d/id_resolver.conf), что приводит к вызову / usr / sbin / nfsidmap. Поскольку глобальная зона (GZ) является минимальной зоной, она ничего не знает об идентификаторах, используемых в контейнерах псевдонимов неглобальных зон (NGZ). И BTW: сопоставление собственных идентификаторов GZ с NGZ 1: 1 в любом случае может рассматриваться как проблема / ошибка безопасности.
Если ключ запроса предоставит информацию, позволяющую определить, из какой зоны или контрольной группы был инициирован запрос, можно, конечно, написать простую оболочку для GZ / usr / sbin / nfsidmap, которая вызывает соответствующий / usr / sbin / nfsidmap в соответствующей зоне. К сожалению, кажется, что нет никакого способа «восстановить» эту недостающую информацию.
Итак, пока ответ: не может работать должным образом из-за недостатка дизайна.