241
правка
Dkirienko (обсуждение | вклад) |
Dkirienko (обсуждение | вклад) |
||
| Строка 1: | Строка 1: | ||
| Строка 75: | Строка 72: | ||
==Установка и настройка OpenLDAP на сервере== | ==Установка и настройка OpenLDAP на сервере== | ||
=== Установка и запуск | === Установка и запуск === | ||
Установите на сервере пакеты (команда от root).<syntaxhighlight lang="bash"> | Установите на сервере пакеты (команда от root).<syntaxhighlight lang="bash"> | ||
dnf install -y openldap-servers openldap-clients | dnf install -y openldap-servers openldap-clients | ||
</syntaxhighlight> | </syntaxhighlight> | ||
При этом в скриптах пакета openldap-servers есть [https://forum.rosa.ru/viewtopic.php?p=121370 ошибка], поэтому | При этом в скриптах пакета openldap-servers (версии openldap-servers-2.6.9-1) есть [https://forum.rosa.ru/viewtopic.php?p=121370 ошибка], поэтому если вы видите такие ошибки при установке пакета, выполните команды.<syntaxhighlight lang="bash"> | ||
chown -R ldap:ldap /etc/openldap/slapd.d | |||
chown -R ldap:ldap /var/lib/ldap | |||
</syntaxhighlight> | </syntaxhighlight> | ||
| Строка 94: | Строка 92: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== | ===Создание базы и записи администратора LDAP=== | ||
Сначала нужно создать хеш пароля администратора LDAP. Для этого запустите команду<syntaxhighlight lang="bash"> | |||
<syntaxhighlight lang="bash"> | |||
slappasswd | slappasswd | ||
</syntaxhighlight> | </syntaxhighlight> | ||
и введите пароль два раза. Команда выведет хеш пароля. Например, при вводе "qwerty123" программа может выдать такой хеш:<syntaxhighlight> | |||
< | {SSHA}51OzQC2m1HfQMEzuV8B7qY0TfSkNq+rX | ||
</syntaxhighlight>При повторном запуске и вводе такого же пароля хеш будет другим, это нормально. | |||
<syntaxhighlight | |||
Пароль администратора лучше делать уникальным и длинным (например, в 15-20 символов), чтобы его невозможно было подобрать. Надёжно сохраните этот пароль, и вставляйте через буфер обмена по мере необходимости. | |||
Теперь создадим базу LDAP и запись администратора LDAP. | |||
Создайте файл create-db.ldif и вставим в него такой текст. Замените хеш пароля в последней строке на тот, который вы получили. | |||
<syntaxhighlight> | |||
dn: olcDatabase={2}mdb,cn=config | dn: olcDatabase={2}mdb,cn=config | ||
changetype: add | changetype: add | ||
| Строка 114: | Строка 116: | ||
olcSuffix: dc=sch179,dc=local | olcSuffix: dc=sch179,dc=local | ||
olcRootDN: cn=admin,dc=sch179,dc=local | olcRootDN: cn=admin,dc=sch179,dc=local | ||
olcRootPW: {SSHA} | olcRootPW: {SSHA}51OzQC2m1HfQMEzuV8B7qY0TfSkNq+rX | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Добавьте содержимое этого файла в базу LDAP. | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
ldapmodify -Y EXTERNAL -H ldapi:/// -f create-db.ldif | ldapmodify -Y EXTERNAL -H ldapi:/// -f create-db.ldif | ||
</syntaxhighlight>Проверка созданной базы запросом.<syntaxhighlight lang="bash"> | |||
ldapsearch -Y EXTERNAL -H ldapi:/// -b "cn=config" "(olcDatabase=*)" | |||
</syntaxhighlight> | </syntaxhighlight> | ||
=== | ===Добавление схем=== | ||
Далее в базу нужно добавить "схемы" - описание разных видов объектов (например, групп и учётных записей). Просто выполните команды:<syntaxhighlight lang="bash"> | |||
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif | |||
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif | |||
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif | |||
</syntaxhighlight> | |||
Для проверки введите команду: | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
ldapsearch -Y EXTERNAL -H ldapi:/// -b "cn=config" | ldapsearch -Y EXTERNAL -H ldapi:/// -b "cn=schema,cn=config" dn | ||
</syntaxhighlight>Она должна вывести текст, в котором есть строки:<syntaxhighlight> | |||
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 | |||
</syntaxhighlight> | </syntaxhighlight> | ||
===Создание базовой структуры | === Создание базовой структуры организации === | ||
<syntaxhighlight | Далее в базу LDAP нужно добавить разделы для хранения учетных записей и групп. Создайте файл base.ldif следующего содержания. | ||
Замените в нём везде sch179 и параметр o: School No 179 на описание вашей школы.<syntaxhighlight> | |||
dn: dc=sch179,dc=local | dn: dc=sch179,dc=local | ||
objectClass: top | objectClass: top | ||
objectClass: organization | objectClass: organization | ||
objectClass: dcObject | objectClass: dcObject | ||
o: | o: School No 179 | ||
dc: sch179 | dc: sch179 | ||
| Строка 150: | Строка 170: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Добавление в LDAP: | Добавление в LDAP (не забудьте заменить sch179 на своё название): | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
ldapadd -x -D "cn=admin,dc=sch179,dc=local" -W -f base.ldif | ldapadd -x -D "cn=admin,dc=sch179,dc=local" -W -f base.ldif | ||
</syntaxhighlight> | </syntaxhighlight>При добавлении вам нужно будет ввести пароль администратора LDAP, который был задан ранее. | ||
Для проверки введите команду (не забудьте заменить sch179 на своё название):<syntaxhighlight lang="bash"> | |||
ldapsearch -x -b "dc=sch179,dc=local" | |||
</syntaxhighlight> | </syntaxhighlight> | ||
==Добавление групп и пользователей== | |||
Пусть мы ходим создать группы пользователей admins (администраторы), teachers (учителя), misc (другие сотрудники) и students (учащиеся). | |||
Создайте файл groups.ldif | Создайте файл groups.ldif. Замените в нём sch179 на своё название. Можете поменять названия и описания групп, их gidNumber. | ||
<syntaxhighlight lang="ldif"> | <syntaxhighlight lang="ldif"> | ||
dn: cn=admins,ou=groups,dc=sch179,dc=local | dn: cn=admins,ou=groups,dc=sch179,dc=local | ||
| Строка 210: | Строка 225: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==Добавление пользователя | ==Добавление пользователей== | ||
Пусть мы ходим создать пользователя teacher1 c uid=2001 и пользователя student1 с uid=4001. При этом для каждого пользователя будет создана группа с таким же именем. | |||
=== | Создайте файл users.ldif следующего содержания. Не забудьте поменять sch179 на своё название, остальное - по мере необходимости. <syntaxhighlight> | ||
dn: cn=teacher1,ou=groups,dc=sch179,dc=local | |||
objectClass: posixGroup | |||
cn: teacher1 | |||
gidNumber: 2001 | |||
description: Primary group for user teacher1 | |||
dn: uid=teacher1,ou=people,dc=sch179,dc=local | |||
objectClass: inetOrgPerson | |||
objectClass: posixAccount | |||
objectClass: shadowAccount | |||
uid: teacher1 | |||
sn: Иванов | |||
givenName: Сергей | |||
cn: Сергей Иванов | |||
uidNumber: 2001 | |||
gidNumber: 2001 | |||
homeDirectory: /home/teacher1 | |||
loginShell: /bin/bash | |||
description: User teacher1 (Сергей Иванов) | |||
dn: cn=student1,ou=groups,dc=sch179,dc=local | |||
dn: cn= | |||
objectClass: posixGroup | objectClass: posixGroup | ||
cn: | cn: student1 | ||
gidNumber: | gidNumber: 4001 | ||
description: Primary group for user | description: Primary group for user student1 | ||
dn: uid= | dn: uid=student1,ou=people,dc=sch179,dc=local | ||
objectClass: inetOrgPerson | objectClass: inetOrgPerson | ||
objectClass: posixAccount | objectClass: posixAccount | ||
objectClass: shadowAccount | objectClass: shadowAccount | ||
uid: | uid: student1 | ||
sn: | sn: Васильева | ||
givenName: | givenName: Мария | ||
cn: | cn: Мария Васильева | ||
uidNumber: | uidNumber: 4001 | ||
gidNumber: | gidNumber: 4001 | ||
homeDirectory: /home/ | homeDirectory: /home/student1 | ||
loginShell: /bin/bash | loginShell: /bin/bash | ||
description: User student1 (Мария Васильева) | |||
description: User | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Добавление: | Добавление: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
ldapadd -c -x -D "cn=admin,dc=sch179,dc=local" -W -f | ldapadd -c -x -D "cn=admin,dc=sch179,dc=local" -W -f users.ldif | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Проверка: | Проверка: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
ldapsearch -x -b "ou=people,dc=sch179,dc=local" "(uid= | ldapsearch -x -b "ou=people,dc=sch179,dc=local" "(uid=teacher1)" | ||
ldapsearch -x -b "ou=groups,dc=sch179,dc=local" "(cn= | ldapsearch -x -b "ou=groups,dc=sch179,dc=local" "(cn=teacher1)" | ||
</syntaxhighlight> | </syntaxhighlight> | ||