Я пытаюсь заставить клиентскую машину OS X автоматически аутентифицироваться в общем ресурсе QNAP, используя отдельный сервер LDAP Open Directory.
(Примечание: я использую example.com ниже, чтобы скрыть настоящее имя сервера в том виде, в котором оно отображается в данный момент)
В сети есть:
Компьютер OSX Server с запущенным Open Directory (например, сервер master.example.com)
Несколько клиентских машин OSX подключаются к серверу и проходят аутентификацию с помощью сетевых учетных записей.
Эта часть пока работает хорошо.
Теперь я добавляю отдельный NAS от QNAP в качестве файлового сервера (TVS-871T для справки), например называется server.example.com
Я настроил QNAP Nas на использование сервера OSX для аутентификации LDAP на панели управления в разделе «Безопасность домена».
Server: master.example.com
Base DN: dc=master,dc=example,dc=com
Root DN is the Open directory admin: uid=keymaster,dc=master,dc=example,dc=com
Users Base DN is: cn=users,dc=master,dc=example,dc=com
Groups Base DN is: cn=groups,dc=master,dc=example,dc=com
Я могу видеть сетевых пользователей и группы в интерфейсе QNAP и предоставлять им доступ к общим ресурсам.
Я могу вручную смонтировать общий ресурс из клиента afp (Cmd + K) и ввести имя пользователя и пароль.
Все идет нормально.
Теперь о проблеме ... Я пытаюсь заставить все сетевые учетные записи автоматически монтировать общий ресурс при входе в систему.
Обычно я бы настроил это в диспетчере профилей сервера OSX как аутентифицированное сетевое монтирование (которое автоматически использует сетевую учетную запись пользователя для аутентификации во время операции монтирования). Это проверено и хорошо работает, если оно принадлежит самому мастеру открытого каталога.
Однако, когда я пытаюсь автоматически смонтировать общий ресурс на диске QNAP, клиент выскакивает окно аутентификации.
Кажется, что он не может войти в систему. Даже если я повторно введу пароль, он все равно не захочет входить в систему.
Консоль показывает ошибку в NetAuthSysAgent AFP_OpenSession – Login failed with 80
Теперь, что интересно, если я попытаюсь войти в систему с коротким именем пользователя - например, joesmith в этом случае - тогда он входит в общий ресурс.
Таким образом, я могу получить частичную аутентификацию с использованием имени пользователя, но не могу выполнить автоматическое монтирование, потому что, как я предполагаю, клиент пытается использовать немного другой метод (с полным именем, отображаемым в поле входа).
Есть ли способ заставить это работать? Мне не хватает настройки в конфигурации QNAP ldap, чтобы это работало?
Следует ли настраивать соединение LDAP на сервере QNAP иначе, чтобы разрешить систему аутентификации от клиентов OSX?
Редактировать:
Я немного покопался с помощью Wireshark на сервере OD, чтобы увидеть, что отправляет устройство QNAP (я явно в отчаянии), и я вижу, что устройство QNAP выполняет (&(objectClass=posixAccount)(uid=Joe Smith))
запрос к мастеру OD, который подтверждает предположение, что он отправляет неправильные учетные данные.
Используя ldapsearch, я тоже могу это воспроизвести. Если я изменю запрос с uid
к cn
затем он работает в командной строке. Не уверен, что смогу изменить способ отправки QNAP своего поискового фильтра.
Изменить 2:
Я могу заставить диск QNAP использовать CN вместо uid, отредактировав:
/mnt/HDA_ROOT/.config/nss_ldap.conf
и добавление
nss_map_attribute uid cn
к нему.
затем /etc/init.d/ldap.sh restart
Это позволяет мне войти в систему с полным именем.
Однако это нарушает ACL групп.
Если снова взглянуть на Wireshark, то для проверки подлинности ldap теперь также используется CN для проверки членства в группе: (&(objectClass=posixGroup)(memberUid=Joe Smith))
Работает, если вы даете отдельным пользователям общий доступ, но я хочу использовать групповые ACL :(
Изменить 3:
пам лдап похоже, есть опция под названием pam_login_attribute
это было бы именно то, что мне нужно, но nss ldap, похоже, не использует его или не имеет аналогичной альтернативы.