Сопоставление пользователей/групп Linux с NFS-доступом Windows 2019

Вопрос или проблема

У меня есть сервер Windows Server 2019 и сервер CentOS 8 в одной сети. Сервер CentOS хостит веб-приложение, которое использует файлы с машины Windows.

Чтобы получить доступ к этим файлам, я настроил общий доступ Samba на стороне Windows и смонтировал его на стороне CentOS с помощью mount -t cifs //myserver/share /media/windows.

Это работало, но я заметил некоторые проблемы. Иногда при попытке доступа к файлам из этой общей папки Samba, система просто зависала. Демонтирование и повторное монтирование, похоже, не помогало, так как проблема снова возникала.

Я решил попробовать использовать NFS вместо Samba для обмена файлами между Windows 2019 и CentOS. После настройки той же папки, но уже как общего доступа NFS, и используя mount -t nfs myserver:/share /media/windows, я смог получить доступ к файлам, которые заставляли Samba зависать.

Проблема, с которой я столкнулся, заключается в том, что когда я создаю новый файл в NFS общей папке с стороне CentOS, права доступа на стороне Windows неправильные, и пользователи на сервере Windows не могут получить доступ к файлам.

Я изучил это и попытался настроить отображение пользователей NFS, но, похоже, сделал это неправильно.

С помощью PowerShell я выполнил:

Install-NfsMappingStore -InstanceName "NFSMappingStore" -LdapPort 10389

и увидел:

Успешно создан экземпляр ADLDS с именем NFSMappingStore на сервере MYSERVER, экземпляр работает на порту 10389, а раздел – CN=nfs,DC=nfs.

Затем я выполнил:

Set-NfsMappingStore -EnableLdapLookup $true -LdapNamingContext "CN=nfs,DC=nfs"
    -LdapServer localhost:10389

Так как это сработало, я затем попытался добавить пользователя:

New-NfsMappedIdentity -MappingStore LDAP -Server localhost:10389
    -UserIdentifier 980 -GroupIdentifier 1001
    -UserName CentOsUser -PrimaryGroup "Domain Users"

Это, похоже, сработало правильно, поэтому затем на стороне CentOS я смонтировал NFS общую папку как пользователь CentOsUser с помощью:

sudo -u CentOsUser -g CentOsGroup mount -t nfs myserver:/share /media/windows

Это сработало, и я смог создать и записать файл. Но на стороне Windows я вижу, что (новый) файл принадлежит S-1-5-88-1-980 вместо CentOsUser.

Я также вижу S-1-5-88-2-1001, а также S-1-5-88-3-420 и S-1-5-88-4.

Почему отображается S-1-5-88-1-980? Я думал, что сопоставил 980 с пользователем CentOsUser? Я также думал, что сопоставил 1001 с группой Domain Users, так почему отображается S-1-5-88-2-1001?

У меня была такая же проблема, и я долго с ней боролся…

  • Теперь я интегрировал сервер Linux с AD.
  • Управление всеми файлами и разрешениями на уровне каталогов из Windows
  • Пользователь приложения, получающий доступ к файлам из NFS общей папки Windows, является аутентифицированным пользователем AD.

Вышеуказанная процедура по-прежнему работает для меня.

Лучшее и самое простое решение, которое я нашел, это https://github.com/billziss-gh/sshfs-win, подключенные серверы отображаются как полностью функциональные сетевые диски

Исправление:
Монтирование NTFS общей папки на Linux

mkdir /mnt/win1
mount -t cifs //10.10.1.100/share -o username=myUser,password=myPassword /mnt/win1

Ответ или решение

Для решения проблемы сопоставления пользователей и групп Linux с общими ресурсами NFS на Windows Server 2019 необходимо обратить внимание на несколько ключевых моментов.

Настройка NFS и сопоставление пользователей

  1. Установите и настройте NFS на Windows Server:
    Убедитесь, что вы правильно настроили NFS на вашем сервере Windows. Выбор правильного порта и привязки LDAP имеет важное значение для успешной работы маппинга пользователей.

  2. Создайте хранилище маппинга:
    Вы уже создали хранилище маппинга и включили поиск LDAP. Убедитесь, что хранилище настроено правильно и вы сможете добавлять записи для пользователей и групп.

  3. Добавление маппинга пользователей:
    Вы добавили пользователя с помощью следующей команды:

    New-NfsMappedIdentity -MappingStore LDAP -Server localhost:10389 -UserIdentifier 980 -GroupIdentifier 1001 -UserName CentOsUser -PrimaryGroup "Domain Users"

    Убедитесь, что идентификаторы (UID и GID) правильные. Если CentOS использует другие уникальные идентификаторы, это может вызвать проблемы.

  4. Проверка SID после создания файлов:
    Обратите внимание, что вы видите идентификаторы SID вместо имен пользователей. Это указывает на то, что маппинг был выполнен, но Windows не может корректно перевести UID/GID в SID. Убедитесь, что ваш NFS сервер правильно настроен для работы с идентификаторами пользователей Linux.

Настройка NFS на CentOS

  1. Монтаж NFS:
    Когда вы монтируете NFS-ресурс, вы можете выставить в качестве пользователя и группы параметры anonuid и anongid, чтобы указать, какие аккаунты использовать для анонимных пользователей:

    mount -t nfs -o anonuid=980,anongid=1001 myserver:/share /media/windows

    Это позволит вам создать файлы с правильными правами и владельцем.

  2. Проверьте права доступа:
    Убедитесь, что права доступа на Windows для папки, которую вы делаете общим, настроены правильно, чтобы разрешить доступ конкретным пользователям или группам, особенно "Domain Users".

Проблемы с SID

Если вы видите S-1-5-88-* вместо имени пользователя, это говорит о том, что Windows не может найти соответствующий SID для вашего UID. Чтобы это исправить, выполните следующие действия:

  • Убедитесь, что LDAP работает корректно:
    Проверьте, что LDAP-сервер правильно настроен и доступен из Windows. Если есть какие-либо проблемы с доступом, убедитесь, что служба работает и принимает запросы.

  • Перезапустите службы NFS:
    Иногда перезапуск служб NFS на Windows может помочь обновить маппинг.

Альтернативные варианты

Если проблемы продолжаются, вы можете рассмотреть альтернативные подходы, такие как использование Samba для обмена файлами. Хотя вы упоминали проблемы с Samba, правильно настроенная Samba с соответствующими параметрами разрешений может также отлично работать и обеспечивать стабильный доступ к файлам.

Также вы можете использовать инструменты, такие как sshfs-win, которые обеспечивают более легкий и гибкий доступ к файловым системам через SSH, что может быть актуально для вашего сценария.

Заключение

Решение проблемы маппинга пользователей и групп между Linux и Windows требует тщательной настройки и проверки всех компонентов. Следуя приведенным выше шагам и рекомендации, вы сможете настроить NFS так, чтобы он корректно работал с вашими пользователями и файлами. Если у вас есть дополнительные вопросы или проблемы, не стесняйтесь обращаться за помощью.

Оцените материал
Добавить комментарий

Капча загружается...