Форум проекта Pro-LDAP.ru
Интеграция => Учётные записи в *nix системах => Тема начата: marawu от 22 Июль 2016, 13:17:32
-
Добрый день, прошу совета. Имеется парк машин работающих на OS X. Есть сервер openLDAP (debian) использующийся для аутентификации на локальных сайтах. На компьютерах люди работают под локальными учетными записями. Хотелось это исправить. С LDAP я только начинаю знакомится, поэтому хотел бы спросить насколько сложно это реализовать? Нужно ли вносить какие-то изменения на сервер или клиенты?
-
Здравствуйте! С Mac-ами сталкиваться не приходилось, но люди настраивали, вот 2 разных способа:
http://pig.made-it.com/ldap-mac.html (http://pig.made-it.com/ldap-mac.html)
http://vuksan.com/linux/mac-os-x-ldap/openldap-mac-os-x-authentication.html (http://vuksan.com/linux/mac-os-x-ldap/openldap-mac-os-x-authentication.html)
Сложность зависит от текущих настроек Вашего OpenLDAP и опыта. К сожалению, помочь чем-то более конкретным вряд ли получится, никаких mac-ов под рукой нет =( . Могу ответить на теоретические вопросы.
Егор
-
У меня уже есть работающий openLDAP, испотльзующийся для авторизации на корп. сайтах. Я знаком с ссылками, которые Вы отправили, по ним у меня сделать не получилось. MAC говорит, что не может подключится к серверу. К примеру он ищет по пути /LDAPv3/myserver/. Этот путь есть по-умолчанию или его необходимо добавить в ручную?
-
Здравствуйте! То, что у Вас есть работающий OpenLDAP на Debian я понял ещё с первого раза =) . Но, видно, я плохо объяснил, что с OS X я НИКОГДА не работал, поэтому в настойке этой операционки помочь не смогу =( . С другой стороны, у меня приличный опыт работы с Linux и OpenLDAP, поэтому с серверной частью готов Вам помочь.
Что касается /LDAPv3/myserver/, то при более-менее внимательном изучении материала по первой ссылке можно сделать вывод, что это некий набор конфигурационных файлов в директории /Library/Preferences/OpenDirectory/Configurations/, который образуется после настроек в утилите Users & Groups.
Егор
-
Здравствуйте! То, что у Вас есть работающий OpenLDAP на Debian я понял ещё с первого раза =) . Но, видно, я плохо объяснил, что с OS X я НИКОГДА не работал, поэтому в настойке этой операционки помочь не смогу =( . С другой стороны, у меня приличный опыт работы с Linux и OpenLDAP, поэтому с серверной частью готов Вам помочь.
Что касается /LDAPv3/myserver/, то при более-менее внимательном изучении материала по первой ссылке можно сделать вывод, что это некий набор конфигурационных файлов в директории /Library/Preferences/OpenDirectory/Configurations/, который образуется после настроек в утилите Users & Groups.
Егор
Егор, добрый день, извините за оффтоп, я был занят на другом проекте, но вернулся к этому. Скажите, Вы ещё имеете желание помочь мне? :D
-
Если смогу, попробую помочь. Пишите.
Егор
-
Если смогу, попробую помочь. Пишите.
Егор
Добрый день, Егор. В очередной раз потратил пару дней на настройку аутентификации, но пока прогресс не большой. Мне удалось найти способ решения для того, чтобы моё MAC-устройство получило данные с сервера:
/usr/libexec/PlistBuddy -c "add ':module options:ldap:Denied SASL Methods:' string CRAM-MD5" /Library/Preferences/OpenDirectory/Configurations/LDAPv3/yourldapserver.plist
/usr/libexec/PlistBuddy -c "add ':module options:ldap:Denied SASL Methods:' string NTLM" /Library/Preferences/OpenDirectory/Configurations/LDAPv3/yourldapserver.plist
/usr/libexec/PlistBuddy -c "add ':module options:ldap:Denied SASL Methods:' string GSSAPI" /Library/Preferences/OpenDirectory/Configurations/LDAPv3/yourldapserver.plist
WS0000:~ admin$ id nikita.spitckij
uid=1537(nikita.spitckij) gid=3174 groups=3174,12(everyone),62(netaccounts),702(com.apple.sharepoint.group.2),701(com.apple.sharepoint.group.1)
Я нашел мануал http://cs.unk.edu/~zhengaw/projects/openldap-server/ (http://cs.unk.edu/~zhengaw/projects/openldap-server/) по настройка openLDAP и OS X. Я так понимаю, файл схемы обязательно должен присутствовать для того, чтобы получить нужные атрибуты, для аутентификации в ОС? Сейчас я застрял на этапе добавления samba.ldif:
@testLDAP:~$ sudo ldapadd -Q -Y EXTERNAL -H ldapi:/// -f cn\=samba.ldif
adding new entry "cn=samba,cn=schema,cn=config"
ldap_add: Other (e.g., implementation specific) error (80)
additional info: olcAttributeTypes: Duplicate attributeType: "1.3.6.1.4.1.7165.2.1.20"
Хотя дупликата там нет:
dn: cn=samba,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: samba
olcAttributeTypes: {0}( 1.3.6.1.4.1.7165.2.1.1 NAME 'lmPassword' DESC 'LanMana
ger Passwd' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch S
YNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
olcAttributeTypes: {1}( 1.3.6.1.4.1.7165.2.1.2 NAME 'ntPassword' DESC 'NT Pass
wd' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.
3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
olcAttributeTypes: {2}( 1.3.6.1.4.1.7165.2.1.4 NAME 'acctFlags' DESC 'Account
Flags' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX
1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
olcAttributeTypes: {3}( 1.3.6.1.4.1.7165.2.1.3 NAME 'pwdLastSet' DESC 'NT pwdL
astSet' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VAL
UE )
olcAttributeTypes: {4}( 1.3.6.1.4.1.7165.2.1.5 NAME 'logonTime' DESC 'NT logon
Time' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE
)
olcAttributeTypes: {5}( 1.3.6.1.4.1.7165.2.1.6 NAME 'logoffTime' DESC 'NT logo
ffTime' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VAL
UE )
olcAttributeTypes: {6}( 1.3.6.1.4.1.7165.2.1.7 NAME 'kickoffTime' DESC 'NT kic
koffTime' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-V
ALUE )
olcAttributeTypes: {7}( 1.3.6.1.4.1.7165.2.1.8 NAME 'pwdCanChange' DESC 'NT pw
dCanChange' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE
-VALUE )
olcAttributeTypes: {8}( 1.3.6.1.4.1.7165.2.1.10 NAME 'homeDrive' DESC 'NT home
Drive' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX
1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
olcAttributeTypes: {9}( 1.3.6.1.4.1.7165.2.1.11 NAME 'scriptPath' DESC 'NT scr
iptPath' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3
.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
olcAttributeTypes: {10}( 1.3.6.1.4.1.7165.2.1.12 NAME 'profilePath' DESC 'NT p
rofilePath' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX
1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
olcAttributeTypes: {11}( 1.3.6.1.4.1.7165.2.1.13 NAME 'userWorkstations' DESC
'userWorkstations' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
olcAttributeTypes: {12}( 1.3.6.1.4.1.7165.2.1.17 NAME 'smbHome' DESC 'smbHome'
EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1
.1466.115.121.1.15 )
olcAttributeTypes: {13}( 1.3.6.1.4.1.7165.2.1.18 NAME 'domain' DESC 'Windows N
T domain to which the user belongs' EQUALITY caseIgnoreIA5Match SUBSTR caseIg
noreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: {14}( 1.3.6.1.4.1.7165.2.1.14 NAME 'rid' DESC 'NT rid' EQUA
LITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
olcAttributeTypes: {15}( 1.3.6.1.4.1.7165.2.1.15 NAME 'primaryGroupID' DESC 'N
T Group RID' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGL
E-VALUE )
olcAttributeTypes: {16}( 1.3.6.1.4.1.7165.2.1.20 NAME 'sambaSID' DESC 'Securit
y ID' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{64} SI
NGLE-VALUE )
olcAttributeTypes: {17}( 1.3.6.1.4.1.7165.2.1.23 NAME 'sambaPrimaryGroupSID' D
ESC 'Primary Group Security ID' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.
1.1466.115.121.1.26{64} SINGLE-VALUE )
olcObjectClasses: {0}( 1.3.6.1.4.1.7165.2.2.3 NAME 'sambaAccount' DESC 'Samba
Auxilary Account' SUP top AUXILIARY MUST ( uid $ rid ) MAY ( cn $ lmPassword
$ ntPassword $ pwdLastSet $ logonTime $ logoffTime $ kickoffTime $ pwdCanChan
ge $ pwdMustChange $ acctFlags $ displayName $ smbHome $ homeDrive $ scriptPa
th $ profilePath $ description $ userWorkstations $ primaryGroupID $ domain )
)
В чем может быть ошибка?
ЗЫ Видимо ошибка возникает из-за того, что samba уже был добавлен (я просто сделал копию боевого сервера и экспериментирую на нем). Как мне добавить обновленную схему?
ЗЫЗЫ Разобрался, просто удалил все строки от которых были ошибки о дубликатах
-
Если смогу, попробую помочь. Пишите.
Егор
Егор, добрый день. У меня возник вопрос относительно домашнего каталога. В openLDAP по умолчанию используется путь /home/uid, а в macOS домашней директорией является /Users/uid. И вот тут у меня возникает вопрос на счет схем. Чтобы openLDAP правильно понимал где лежит хомяк нужно добавить файл apple.schema? Я воспользовался инструкцией (http://cs.unk.edu/~zhengaw/projects/openldap-server/import-apple-and-samba-schemas/), но ничего не изменилось, хотя схема вроде как добавилась:
root@testLDAP:/etc/ldap/schema# ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=schema,cn=config dn
dn: cn=schema,cn=config
dn: cn={0}core,cn=schema,cn=config
dn: cn={1}cosine,cn=schema,cn=config
dn: cn={2}nis,cn=schema,cn=config
dn: cn={3}inetorgperson,cn=schema,cn=config
dn: cn={4}ns-mail,cn=schema,cn=config
dn: cn={5}kolab,cn=schema,cn=config
dn: cn={6}samba,cn=schema,cn=config
dn: cn={7}dyngroup,cn=schema,cn=config
dn: cn={8}samba,cn=schema,cn=config
dn: cn={9}apple,cn=schema,cn=config
В итоге мне нужно чтобы пользователь заходил на ПК и у него создавалась домашняя директория, при чём это должно работать одновременно для Debian, CentOS и macOS.
Сейчас я могу зайти в macOS если изменю путь до хомяка на сервере и создам его руками на ПК(другие ОС пока не настраивал). Можете подсказать как решить даную проблему?
-
Решил данную проблему с хомяком на macOS:
cat /etc/auto_master
#
# Automounter master map
#
#+auto_master # Use directory service
/net -hosts -nobrowse,hidefromfinder,nosuid
#/home auto_home -nobrowse,hidefromfinder
/Network/Servers -fstab
/- -static
После закоменчивания строчек перезагрузка и:
sudo rm -rf /home
sudo ln -s /Users /home
-
Здравствуйте!
Насчёт схемы samba -- действительно, этот набор уже был добавлен:
dn: cn={6}samba,cn=schema,cn=config
...
dn: cn={8}samba,cn=schema,cn=config
Насчёт хранения данных по пользователю вообще и по домашней директории в частности. Стандартный подход для Linux-систем (nss+pam) подразумевает, что при обращении к каталогу LDAP через различные модули (например, PADL-библиотеки или sssd) в каталоге будут искаться некие записи пользователей (задаются критериями поиска), а в этих записях будут найдены атрибуты, описанные в RFC2307 (http://pro-ldap.ru/tr/rfc/rfc2307.html), по значениям которых будут складываться сведения об учётке пользователя (идентификаторы пользователя и группы, оболочка по умолчанию,домашняя директория и другие). Создан даже специальный объектный класс posixAccount (nis.schema), в котором для этих целей есть атрибуты uidNumber, gidNumber, loginShell, homeDirectory и т.п. В общем, библиотеки pam и nss (если они настроены на обращение к LDAP) черпают информацию об учётках именно из этих атрибутов. Что касается автоматического создания домашней директории по указанному пути или монтирования домашней директории с общего ресурса-хранилища, то за это отвечают отдельные (не связанные с LDAP-каталогом) библиотеки (pam mkhomedir и autofs).
Если попробовать применить подобный подход в отношении apple-учёток, то в материале по Вашей ссылке описан вспомогательный (AUXILIARY) класс apple-user с кучей атрибутов. Его можно попробовать "присоединить" к уже имеющейся учётке в каталоге (использующейся для аутентификации на локальных сайтах), наполнить атрибуты информацией, значимой для библиотек аутентификации OS X, и посмотреть, будут ли они использовать эту информацию. То есть для Linux-библиотек свои атрибуты, для OSx-библиотек -- свои.
Что касается автоматического создания домашних директорий или автоматического монтирования, то это, как я уже сказал, должно делаться средствами, не привязанными к каталогу LDAP.
Такие мысли. Егор
-
Здравствуйте!
Насчёт схемы samba -- действительно, этот набор уже был добавлен:
dn: cn={6}samba,cn=schema,cn=config
...
dn: cn={8}samba,cn=schema,cn=config
Насчёт хранения данных по пользователю вообще и по домашней директории в частности. Стандартный подход для Linux-систем (nss+pam) подразумевает, что при обращении к каталогу LDAP через различные модули (например, PADL-библиотеки или sssd) в каталоге будут искаться некие записи пользователей (задаются критериями поиска), а в этих записях будут найдены атрибуты, описанные в RFC2307 (http://pro-ldap.ru/tr/rfc/rfc2307.html), по значениям которых будут складываться сведения об учётке пользователя (идентификаторы пользователя и группы, оболочка по умолчанию,домашняя директория и другие). Создан даже специальный объектный класс posixAccount (nis.schema), в котором для этих целей есть атрибуты uidNumber, gidNumber, loginShell, homeDirectory и т.п. В общем, библиотеки pam и nss (если они настроены на обращение к LDAP) черпают информацию об учётках именно из этих атрибутов. Что касается автоматического создания домашней директории по указанному пути или монтирования домашней директории с общего ресурса-хранилища, то за это отвечают отдельные (не связанные с LDAP-каталогом) библиотеки (pam mkhomedir и autofs).
Если попробовать применить подобный подход в отношении apple-учёток, то в материале по Вашей ссылке описан вспомогательный (AUXILIARY) класс apple-user с кучей атрибутов. Его можно попробовать "присоединить" к уже имеющейся учётке в каталоге (использующейся для аутентификации на локальных сайтах), наполнить атрибуты информацией, значимой для библиотек аутентификации OS X, и посмотреть, будут ли они использовать эту информацию. То есть для Linux-библиотек свои атрибуты, для OSx-библиотек -- свои.
Что касается автоматического создания домашних директорий или автоматического монтирования, то это, как я уже сказал, должно делаться средствами, не привязанными к каталогу LDAP.
Такие мысли. Егор
У меня несколько вопросов:
1. Samba. Если я правильно понял, то мне нужно было в уже существующую схему добавить новые атрибуты? Или просто сформировать LDIF -файл и с его помощью добавить схему. Потому-что как видите у меня получилось что самбы 2.
2. Можно побольше инфы на тему "подключить"?
-
Здравствуйте!
1. Samba. Если я правильно понял, то мне нужно было в уже существующую схему добавить новые атрибуты? Или просто сформировать LDIF -файл и с его помощью добавить схему. Потому-что как видите у меня получилось что самбы 2.
Сначала надо было бы разобраться, нужна ли эта схема вообще =) . То есть, есть ли в ней какие-то атрибуты, которые Вы собираетесь использовать под свои задачи. Если нет, то её вообще не нужно было подлючать. Но сейчас уже поздно: корректного пути удалить лишнюю схему из OpenLDAP нет (пока).
2. Можно побольше инфы на тему "подключить"?
В любой записи каталога есть обязательный (структурный) объектный класс со своими атрибутами, некоторые из которых обязательны для заполнения, остальные -- опциональные. Кроме структурного класса в записи может быть несколько вспомогательных объектных классов со своими атрибутами (в то числе обязательными). То есть "подключить" или "отключить" вспомогательный объектный класс можно, а структурный -- нельзя. Делается это либо через графический LDAP-редактор, либо путём специально сформированного LDIF-файла для модификации. Чтобы не объяснять на пальцах, предлагаю прислать LDIF одной из записей пользователя, я покажу, как её модифицировать.
Егор
-
Сначала надо было бы разобраться, нужна ли эта схема вообще =) . То есть, есть ли в ней какие-то атрибуты, которые Вы собираетесь использовать под свои задачи. Если нет, то её вообще не нужно было подлючать. Но сейчас уже поздно: корректного пути удалить лишнюю схему из OpenLDAP нет (пока).
Во всех мануалах было написано, что они зависимы и apple.schema использует схему самбы. Но на самом деле пока это не критично, пока у меня получилось аутентифицироваться и этого на данном этапе достаточно.
В любой записи каталога есть обязательный (структурный) объектный класс со своими атрибутами, некоторые из которых обязательны для заполнения, остальные -- опциональные. Кроме структурного класса в записи может быть несколько вспомогательных объектных классов со своими атрибутами (в то числе обязательными). То есть "подключить" или "отключить" вспомогательный объектный класс можно, а структурный -- нельзя. Делается это либо через графический LDAP-редактор, либо путём специально сформированного LDIF-файла для модификации. Чтобы не объяснять на пальцах, предлагаю прислать LDIF одной из записей пользователя, я покажу, как её модифицировать.
Егор
dn: uid=user.name,ou=People,dc=name,dc=com
uidNumber: 1537
mailQuota: 1048576
gidNumber: 3174
objectClass: top
objectClass: inetOrgPerson
objectClass: kolabInetOrgPerson
objectClass: mailRecipient
objectClass: organizationalPerson
objectClass: person
objectClass: posixAccount
givenName:: 0J3QuNC60LjRgtCwIA==
ou: ou=People,dc=name,dc=com
mailHost: imap.name.com
sn:: 0KHQv9C40YbQutC40Lk=
preferredLanguage: ru_RU
cn:: 0J3QuNC60LjRgtCwINCh0L/QuNGG0LrQuNC5
uid: user.name
displayName:: 0KHQv9C40YbQutC40LksINCd0LjQutC40YLQsA==
mail: user.name@name.com
userPassword: {SSHA}zWDoAuasXgUBA76+VbQOMD7s7TZlS1Eg
loginShell: /bin/bash
homeDirectory: /home/user.name
-
В Вашей записи структурный класс inetOrgPerson (и его родители organizationalPerson и person), остальные -- вспомогательные.
LDIF модификации будет примерно такой:
dn: uid=user.name,ou=People,dc=name,dc=com
changetype: modify
add: objectClass
objectClass: apple-user
-
add: apple-user-homeurl
apple-user-homeurl: /Users/user.name
-
add: apple-user-homequota
apple-user-homequota: 10240
То есть сначала добавляется объектный класс, потом все его обязательные атрибуты и те из необязательных, которые Вам нужны. То есть можно добавить какие угодно атрибуты из класса и задать им значения (в примере я поставил значения на угад, наверняка там должно быть что-то специфичное для apple).
Егор
-
Здравствуйте!
Насчёт схемы samba -- действительно, этот набор уже был добавлен:
dn: cn={6}samba,cn=schema,cn=config
...
dn: cn={8}samba,cn=schema,cn=config
Насчёт хранения данных по пользователю вообще и по домашней директории в частности. Стандартный подход для Linux-систем (nss+pam) подразумевает, что при обращении к каталогу LDAP через различные модули (например, PADL-библиотеки или sssd) в каталоге будут искаться некие записи пользователей (задаются критериями поиска), а в этих записях будут найдены атрибуты, описанные в RFC2307 (http://pro-ldap.ru/tr/rfc/rfc2307.html), по значениям которых будут складываться сведения об учётке пользователя (идентификаторы пользователя и группы, оболочка по умолчанию,домашняя директория и другие). Создан даже специальный объектный класс posixAccount (nis.schema), в котором для этих целей есть атрибуты uidNumber, gidNumber, loginShell, homeDirectory и т.п. В общем, библиотеки pam и nss (если они настроены на обращение к LDAP) черпают информацию об учётках именно из этих атрибутов. Что касается автоматического создания домашней директории по указанному пути или монтирования домашней директории с общего ресурса-хранилища, то за это отвечают отдельные (не связанные с LDAP-каталогом) библиотеки (pam mkhomedir и autofs).
Если попробовать применить подобный подход в отношении apple-учёток, то в материале по Вашей ссылке описан вспомогательный (AUXILIARY) класс apple-user с кучей атрибутов. Его можно попробовать "присоединить" к уже имеющейся учётке в каталоге (использующейся для аутентификации на локальных сайтах), наполнить атрибуты информацией, значимой для библиотек аутентификации OS X, и посмотреть, будут ли они использовать эту информацию. То есть для Linux-библиотек свои атрибуты, для OSx-библиотек -- свои.
Что касается автоматического создания домашних директорий или автоматического монтирования, то это, как я уже сказал, должно делаться средствами, не привязанными к каталогу LDAP.
Такие мысли. Егор
А можете немного объяснить, а то я совсем запутался.
Я хочу ограничить доступ к некоторым "серверам" на MAC OS, чтобы люди не могли залогинится на них. Исходя из информации https://discussions.apple.com/thread/3773658?start=0&tstart=0 и личном тестировании, то на основе групп это сделать не получится.
Я попытался найти информацию про pam_ldap и pam_filter для OS X, да и вообще в целом, но я только запутался.
Я правильно понимаю, что если я хочу использовать pam_filter, то мне нужно настроить аутентификацию через pam_ldap?
-
Здравствуйте! Извините за задержку с ответом -- было очень много работы.
Я хочу ограничить доступ к некоторым "серверам" на MAC OS, чтобы люди не могли залогинится на них. Исходя из информации https://discussions.apple.com/thread/3773658?start=0&tstart=0 и личном тестировании, то на основе групп это сделать не получится.
Я попытался найти информацию про pam_ldap и pam_filter для OS X, да и вообще в целом, но я только запутался.
Я правильно понимаю, что если я хочу использовать pam_filter, то мне нужно настроить аутентификацию через pam_ldap?
pam_filter пользоваться не приходилось. Если система PAM работает в OS X, то аутентификацию пользователей по их учёткам в каталоге можно будет настроить через модуль pam_ldap. И фильтрацию можно будет организовать через него же используя стандартные фильтры поиска LDAP. Посмотрите вот эту тему (http://pro-ldap.ru/forum/index.php?topic=335.0), она похожа на Ваш случай. Используется там не pam_ldap, но настройки можно адаптировать.
Егор
P.S. Прочитав эту статью (https://help.ubuntu.com/community/LDAPClientAuthentication) я понял, что Вы, видимо, имели ввиду не модуль PAM pam_filter, а один из параметров настройки модуля pam_ldap =) . Тогда да, настроив pam_ldap можете прописать LDAP-фильтр в этом параметре.
Егор
-
И снова вопрос по теме. В данном мануале (http://pig.made-it.com/ldap-mac.html) предлагают создать OU=macosxodconfig. Я поискал в интернете и здесь (http://www.torriefamily.org/~torriem/wiki/computer_stuff:opendir_and_ldap#inital_ldap_configuration), здесь (https://help.ubuntu.com/community/OSXClientAuthenticationToLDAP) и здесь (http://deepport.net/archives/setting-up-a-linux-server-for-os-x-clients/) нашёл небольшое количество информации. В поле комментария этого OU предлагают внести информацию из plist-файла, в котором содержится настройки LDAP, которые вроде как должны загрузится если у вас стоит вариант получения конфигурации с сервера. Но я не совсем понял, в каком месте создавать данную ou? Может, кто уже видел, что-нибудь подобное?
-
Здравствуйте! Я не силён в Mac-ах, но если внимательно смотреть первый документ (http://pig.made-it.com/ldap-mac.html), то там написано:
Adding containers
Mac OS X searches the LDAP-tree using the base and filtering on: (&(objectClass=organizationalUnit)(ou=macosxodconfig)), to support having the LDAP Mappings in the LDAP-tree we add this ou with:
dn: ou=macosxodconfig,ou=apps,dc=example,dc=com
ou: macosxodconfig
objectClass: top
objectClass: organizationalUnit
Later we will fill this with the correct data.
То есть этот контейнер, чтобы удовлетворять поисковому фильтру, может быть где угодно под корневой записью, точнее под той записью, которая настроена в качестве базы поиска. Если база поиска совпадает с корневой запись каталога, то можно создать запись-контейнер даже непосредственно под корневой записью: ou=macosxodconfig,dc=example,dc=com, это не принципиально.
Ниже в том же документе написано, как наполнить атрибут description этой записи-контейнера шаблоном настроек, сохранённым из Directory Utility.
Егор
-
Здравствуйте! Я не силён в Mac-ах, но если внимательно смотреть первый документ (http://pig.made-it.com/ldap-mac.html), то там написано:
Adding containers
Mac OS X searches the LDAP-tree using the base and filtering on: (&(objectClass=organizationalUnit)(ou=macosxodconfig)), to support having the LDAP Mappings in the LDAP-tree we add this ou with:
dn: ou=macosxodconfig,ou=apps,dc=example,dc=com
ou: macosxodconfig
objectClass: top
objectClass: organizationalUnit
Later we will fill this with the correct data.
То есть этот контейнер, чтобы удовлетворять поисковому фильтру, может быть где угодно под корневой записью, точнее под той записью, которая настроена в качестве базы поиска. Если база поиска совпадает с корневой запись каталога, то можно создать запись-контейнер даже непосредственно под корневой записью: ou=macosxodconfig,dc=example,dc=com, это не принципиально.
Ниже в том же документе написано, как наполнить атрибут description этой записи-контейнера шаблоном настроек, сохранённым из Directory Utility.
Егор
Егор, извините, а не подскажите, как разрешить анонимное чтение для атрибута description у ou? Иначе mac не может получить инфу о том, какую конфигурацию ему загружать?
Feb 7 11:06:29 ldap-clone slapd[2427]: conn=4365 fd=40 ACCEPT from IP=192.168.70.42:49154 (IP=0.0.0.0:389)
Feb 7 11:06:29 ldap-clone slapd[2427]: conn=4365 op=0 SRCH base="" scope=0 deref=0 filter="(objectClass=*)"
Feb 7 11:06:29 ldap-clone slapd[2427]: conn=4365 op=0 SRCH attr=defaultNamingContext namingContexts supportedSASLMechanisms vendorName vendorVersion operatingSystemVersion dNSHostName
Feb 7 11:06:29 ldap-clone slapd[2427]: conn=4365 op=0 SEARCH RESULT tag=101 err=0 nentries=1 text=
Feb 7 11:06:29 ldap-clone slapd[2427]: conn=4365 op=1 EXT oid=1.3.6.1.4.1.1466.20037
Feb 7 11:06:29 ldap-clone slapd[2427]: conn=4365 op=1 STARTTLS
Feb 7 11:06:29 ldap-clone slapd[2427]: conn=4365 op=1 RESULT oid= err=0 text=
Feb 7 11:06:29 ldap-clone slapd[2427]: conn=4365 fd=40 TLS established tls_ssf=256 ssf=256
Feb 7 11:06:29 ldap-clone slapd[2427]: conn=4365 op=2 SRCH base="" scope=0 deref=0 filter="(objectClass=*)"
Feb 7 11:06:29 ldap-clone slapd[2427]: conn=4365 op=2 SRCH attr=netlogon
Feb 7 11:06:29 ldap-clone slapd[2427]: conn=4365 op=2 SEARCH RESULT tag=101 err=0 nentries=1 text=
Feb 7 11:06:29 ldap-clone slapd[2427]: conn=4365 op=3 SRCH base="dc=example,dc=com" scope=2 deref=0 filter="(&(objectClass=organizationalUnit)(ou=macosxodconfig))"
Feb 7 11:06:29 ldap-clone slapd[2427]: conn=4365 op=3 SRCH attr=description
Feb 7 11:06:29 ldap-clone slapd[2427]: conn=4365 op=3 SEARCH RESULT tag=101 err=32 nentries=0 text=
Feb 7 11:06:29 ldap-clone slapd[2427]: conn=4365 op=4 SRCH base="cn=accesslog" scope=2 deref=0 filter="(&(objectClass=organizationalUnit)(ou=macosxodconfig))"
Feb 7 11:06:29 ldap-clone slapd[2427]: conn=4365 op=4 SRCH attr=description
Feb 7 11:06:29 ldap-clone slapd[2427]: conn=4365 op=4 SEARCH RESULT tag=101 err=32 nentries=0 text=
Feb 7 11:06:29 ldap-clone slapd[2427]: conn=4365 op=5 SRCH base="dc=example,dc=com" scope=2 deref=0 filter="(cn=ldapreplicas)"
Feb 7 11:06:29 ldap-clone slapd[2427]: conn=4365 op=5 SEARCH RESULT tag=101 err=32 nentries=0 text=
Feb 7 11:06:29 ldap-clone slapd[2427]: conn=4365 op=6 UNBIND
Feb 7 11:06:29 ldap-clone slapd[2427]: conn=4365 fd=40 closed
Я почитал 8 раздел, перепробовал несколько вариантов, но ничего не работает. :(
olcAccess: {3}to dn.base="ou=macosxodconfig,dc=example,dc=com"
by * read
olcAccess: {4}to *
by peername.ip="xx.xx.xx.xx" read
by self write
by users read
by * none
olcAccess: {3}to dn.one="dc=example,dc=com" filter="(&(objectClass=organizationalUnit)(ou=macosxodconfig))"
by * read
ЗЫ, если в последнем правиле пишу by * read, то всё работает
-
Тут очень тонкий момент в ACL: если у анонимов нет права на просмотр вышестоящей записи, то он не сможет добраться до нижестоящей. Самый простой способ решить эту проблему -- дать анонимам права search, примерно так:
access to attrs=userPassword
by self write
by anonymous auth
by * none
access to dn.base="ou=macosxodconfig,dc=example,dc=com"
by * read
access to *
by self write
by users read
by * search
Тогда они не смогут прочитать записи из каталога, но смогут найти и прочитать ou=macosxodconfig,dc=example,dc=com
Егор
-
Здравствуйте, это снова я, это снова вы и опять я со своими mac'ами (прошу не кидать в меня тухлые помидоры). Используя данный материал (http://pro-ldap.ru/books/openldap-ubuntu-in-practice/index.html) я настроил Kerberos сервер (единственное, я поднял его на отдельном сервере, что видимо было не очень хорошей идеей). После я вспомнил, что у нас есть OS X Server, на котором тоже поднят LDAP (Open Directory, если я всё правильно понял), но он не используется, а просто поднят по дефолту. Я подключился к нему и нашёл так cn=config, который mac постоянно пытался найти, судя по логам:
кусочек лога, но далеко не всё
Feb 9 16:31:49 inldaptest slapd[2410]: conn=3983 fd=68 ACCEPT from IP=192.168.70.120:49163 (IP=0.0.0.0:389)
Feb 9 16:31:49 inldaptest slapd[2410]: conn=3983 op=0 SRCH base="" scope=0 deref=0 filter="(objectClass=*)"
Feb 9 16:31:49 inldaptest slapd[2410]: conn=3983 op=0 SRCH attr=supportedSASLMechanisms defaultNamingContext namingContexts schemaNamingContext saslRealm
Feb 9 16:31:49 inldaptest slapd[2410]: conn=3983 op=0 SEARCH RESULT tag=101 err=0 nentries=1 text=
Feb 9 16:31:49 inldaptest slapd[2410]: conn=3983 op=1 EXT oid=1.3.6.1.4.1.1466.20037
Feb 9 16:31:49 inldaptest slapd[2410]: conn=3983 op=1 STARTTLS
Feb 9 16:31:49 inldaptest slapd[2410]: conn=3983 op=1 RESULT oid= err=0 text=
Feb 9 16:31:49 inldaptest slapd[2410]: conn=3982 fd=58 TLS established tls_ssf=256 ssf=256
Feb 9 16:31:49 inldaptest slapd[2410]: conn=3983 fd=68 TLS established tls_ssf=256 ssf=256
Feb 9 16:31:49 inldaptest slapd[2410]: conn=3982 op=2 SRCH base="cn=config,dc=example,dc=com" scope=2 deref=0 filter="(&(objectClass=apple-configuration)(cn=kerberos*))"
Feb 9 16:31:49 inldaptest slapd[2410]: conn=3982 op=2 SRCH attr=apple-config-realname apple-xmlplist
Feb 9 16:31:49 inldaptest slapd[2410]: conn=3982 op=2 SEARCH RESULT tag=101 err=32 nentries=0 text=
Feb 9 16:31:49 inldaptest slapd[2410]: conn=3982 op=3 SRCH base="cn=config,cn=accesslog" scope=2 deref=0 filter="(&(objectClass=apple-configuration)(cn=kerberos*))"
Feb 9 16:31:49 inldaptest slapd[2410]: conn=3982 op=3 SRCH attr=apple-config-realname apple-xmlplist
Feb 9 16:31:49 inldaptest slapd[2410]: conn=3982 op=3 SEARCH RESULT tag=101 err=32 nentries=0 text=
Feb 9 16:31:49 inldaptest slapd[2410]: conn=3983 op=2 BIND dn="uid=ldap-proxy,ou=Special Users,dc=example,dc=com" method=128
Feb 9 16:31:49 inldaptest slapd[2410]: conn=3983 op=2 BIND dn="uid=ldap-proxy,ou=Special Users,dc=example,dc=com" mech=SIMPLE ssf=0
Feb 9 16:31:49 inldaptest slapd[2410]: conn=3983 op=2 RESULT tag=97 err=0 text=
Feb 9 16:31:49 inldaptest slapd[2410]: conn=3982 op=4 UNBIND
Feb 9 16:31:49 inldaptest slapd[2410]: conn=3982 fd=58 closed
Я посмотрел, как там всё настроено (можно глянуть в прикрепленном файле).
Я накидал такой ldif :
dn: cn=config,dc=example,dc=com
cn: config
objectClass: container
dn: ou=macosxodconfig,cn=config,dc=example,dc=com
ou: macosxodconfig
objectClass: top
objectClass: organizationalUnit
description:< file:///root/apple-ldap/macosxodconfig.plist
dn: cn=KerberosKDC,cn=config,dc=example,dc=com
objectClass: apple-configuration
cn: KerberosKDC
apple-config-realname: KDCSETUP
apple-kdc-configdata:< file:///root/apple-ldap/apple-kdc-configdata
dn: cn=KerberosClient,cn=config,dc=example,dc=com
objectClass: top
objectClass: apple-configuration
cn: KerberosClient
apple-xmlplist:< file:///root/apple-ldap/KerberosClient.plist
dn: cn=macosxodpolicy,cn=config,dc=example,dc=com
cn: macosxodpolicy
objectClass: top
objectClass: apple-configuration
apple-xmlplist:< file:///root/apple-ldap/macosxodpolicy.plist
а содержимое файлов копипастнул (кроме macosxodconfig)из OS X Server'a и поменял имя сервера в директивах на свой. Ошибки не появляются, macosxodconfig работает, что очень облегчило мне жизнь, но настройки Kerberos так и не появились :(
(http://cdn1.savepice.ru/uploads/2017/2/10/2e4abbf9665b3361ca7a6ab1cd9a8944-full.png)
У меня такое подозрение, что в файле apple-kdc-configdata ссылки должы указывать на другой сервер (и как указать на другой сервер я не совсем понимаю)
root@inldaptest:~/apple-ldap# cat apple-kdc-configdata
[password_quality]
policies = builtin:no-check
[kdc]
database = {
KDCSETUP = {
realm = KDCSETUP
acl_file = /var/db/krb5kdc/acl_file.KDCSETUP (kdc01:/etc/krb5kdc/kadm5.acl)?
mkey_file = /var/db/krb5kdc/m_key.KDCSETUP
dbname = od:/LDAPv3/ldapi://%2Fvar%2Frun%2Fldapi (ldap://ldap.example.com)?
log_file = /var/log/krb5kdc/log.KDCSETUP (kdc01:/var/log/krb5kdc.log)
}
}
Поскольку служба kerberos на другом сервере, то указание на файлы должно вести на этот самый сервер. На сколько вообще "рентабельно" держать KDC на другом сервере?
Так же я не уверен, что я до конца настроил KDC до конца. Например в OS X Server у учетной записи есть такие атрибуты:
authAuthority: ;ApplePasswordServer;0x02098b10862211e6992d003ee1c11672,1024 65537 126680851980588997076959924167638382612747425551724726660886251257345549336876023999187690505358995675087149894845087595210326276983306294504781977312875647289613983944443305599211538888282087781604582987957739510061791840899029740445046609653617216046603903478376773908967401034837338556668165852674278208149 root@osx.example.com:192.168.250.250
authAuthority: ;Kerberosv5;;admin1@OSX.EXAMPLE.COM;OSX.EXAMPLE.COM;
altSecurityIdentities: Kerberos:admin1@OSX.EXAMPLE.COM
А в моём LDAP-сервере их нет.
Все файлы прикрепил ниже.
ЗЫ. Извините, наверно уже всем надоел с этой темой, но хотелось бы до конца доделать проект и заодно познать LDAP/Kerberos
-
Здравствуйте! Очень тяжело что-то советовать в режиме "гадания на кофейной гуще". Есть предложение вообще убрать из каталога настройки KDC (cn=KerberosKDC,cn=config,dc=example,dc=com), затем настроить kerberos-аутентификацию штатными средствами(через GUI), добиться, чтобы это работало, а потом экспортировать получившиеся настройки в plist и поместить его в каталог (cn=KerberosClient,cn=config,dc=example,dc=com), по аналогии с настройками аутентификации по сети. Методом тыка тут вряд ли получится победить =) .
Егор