NFSv4 ACL: getfacl показывает UID вместо имени пользователя – как исправить проблему?

Настройка NFSv4: от UID к пользовательским именам в ACL

Настройка сервера и клиента NFSv4 может быть непростой задачей, особенно когда дело доходит до управления разрешениями и отображением идентификаторов пользователей. В этой статье мы рассмотрим шаги, которые помогут вам правильно настроить систему, чтобы отображать имена пользователей вместо UID в списках ACL (Access Control List).

Настройка аутентификации через SSSD/AD

Первым шагом в настройке является аутентификация пользователей. В данном случае мы используем SSSD (System Security Services Daemon) для интеграции с Active Directory (AD). Например, пользователь «Пользователь1» аутентифицируется через SSSD, и его UID определяется на основе учетной записи в AD. Важно отметить, что этот пользователь не является локальным пользователем на сервере NFS, что значит, что аутентификация проходит как на клиенте, так и на сервере.

nfs4_setfacl -a A::[email protected]:rwaDxtTcCy test

Однако, при считывании ACL, вместо имени пользователя мы видим его UID:

nfs4_getfacl test

Решение проблемы с отображением UID

Проблема заключается в том, что мы хотим видеть имя пользователя, а не его числовой идентификатор во время работы с ACL. Для решения этой проблемы необходимо проверить настройки в файле конфигурации idmap.conf и перезапустить службу nfs-idmapd.

  1. Убедитесь, что домен в /etc/idmapd.conf одинаков как на клиенте, так и на сервере.

    • На клиенте и сервере выполните:
      sudo /sbin/nfsidmap -d mytestdomain.xyz
  2. Перезапустите сервер idmapd:
    sudo systemctl daemon-reload; sudo systemctl restart nfs-idmapd; nfsidmap -c

Обратите внимание: между перезапуском сервера и появлением правильного отображения в nfs4_getfacl может пройти некоторое время, поэтому важно оставаться терпеливым.

Включение отображения идентификаторов в ядре

Ключевым моментом является необходимость включения отображения идентификаторов на уровне ядра, так как по умолчанию оно отключено для монтирования NFSv4 с параметрами sec=sys. Для этого введите следующие команды:

  1. На сервере:

    echo "N" > /sys/module/nfsd/parameters/nfs4_disable_idmapping
  2. На клиенте:
    echo "N" > /sys/module/nfs/parameters/nfs4_disable_idmapping

После этого очистите кеш idmap на клиенте:

sudo /sbin/nfsidmap -c

Теперь, когда вы попробуете запрашивать ACL, вы увидите, что показываются имена пользователей.

Постоянное применение изменений

Чтобы изменения были постоянными, создайте файлы конфигурации в /etc/modprobe.d/ на обоих узлах.

На сервере (файл modprobe.d/nfsd.conf):

options nfsd nfs4_disable_idmapping=N

На клиенте (файл modprobe.d/nfs.conf):

options nfs nfs4_disable_idmapping=N

Заключение

Перевод UID в имена пользователей является задачей сервера NFS, а не клиента. Для этого сервер должен использовать службу rpc.idmapd, которая отвечает за преобразование UID в имена, при этом используя одинаковое доменное имя для сопоставления как на клиенте, так и на сервере.

Для проверки корректности сопоставления вы можете использовать следующую команду:

sudo cat /proc/net/rpc/nfs4.idtoname/content

Таким образом, следуя данным рекомендациям, вы сможете настроить NFSv4 так, чтобы ваши списки ACL отображали ожидаемое имя пользователя, улучшая управляемость и удобство работы с системой.

Источник

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *