Настройка 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
.
-
Убедитесь, что домен в
/etc/idmapd.conf
одинаков как на клиенте, так и на сервере.- На клиенте и сервере выполните:
sudo /sbin/nfsidmap -d mytestdomain.xyz
- На клиенте и сервере выполните:
- Перезапустите сервер idmapd:
sudo systemctl daemon-reload; sudo systemctl restart nfs-idmapd; nfsidmap -c
Обратите внимание: между перезапуском сервера и появлением правильного отображения в nfs4_getfacl
может пройти некоторое время, поэтому важно оставаться терпеливым.
Включение отображения идентификаторов в ядре
Ключевым моментом является необходимость включения отображения идентификаторов на уровне ядра, так как по умолчанию оно отключено для монтирования NFSv4 с параметрами sec=sys
. Для этого введите следующие команды:
-
На сервере:
echo "N" > /sys/module/nfsd/parameters/nfs4_disable_idmapping
- На клиенте:
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 отображали ожидаемое имя пользователя, улучшая управляемость и удобство работы с системой.