Школьный сервер LDAP + Kerberos + NFS: различия между версиями

Материал из IT в школе
Перейти к навигацииПерейти к поиску
нет описания правки
Строка 1: Строка 1:




Строка 75: Строка 72:
==Установка и настройка OpenLDAP на сервере==
==Установка и настройка OpenLDAP на сервере==


=== Установка и запуск LDAP ===
=== Установка и запуск ===
Установите на сервере пакеты  (команда от 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 ошибка], поэтому (workaround пока) удалите пакет openldap-servers  и поставьте его снова.<syntaxhighlight lang="bash">
При этом в скриптах пакета openldap-servers (версии openldap-servers-2.6.9-1) есть [https://forum.rosa.ru/viewtopic.php?p=121370 ошибка], поэтому если вы видите такие ошибки при установке пакета, выполните команды.<syntaxhighlight lang="bash">
dnf remove openldap-servers
chown -R ldap:ldap /etc/openldap/slapd.d
dnf install -y openldap-servers
chown -R ldap:ldap /var/lib/ldap
 
</syntaxhighlight>
</syntaxhighlight>


Строка 94: Строка 92:
</syntaxhighlight>
</syntaxhighlight>


===Настройка базы данных LDAP===
===Создание базы и записи администратора LDAP===
 
Сначала нужно создать хеш пароля администратора LDAP. Для этого запустите команду<syntaxhighlight lang="bash">
====Создание хеша пароля администратора ====
<syntaxhighlight lang="bash">
slappasswd
slappasswd
</syntaxhighlight>
</syntaxhighlight>


Пример результата:
и введите пароль два раза. Команда выведет хеш пароля. Например, при вводе "qwerty123" программа может выдать такой хеш:<syntaxhighlight>
<pre>{SSHA}GmLFgTlVi1ilt4IW0duB4/eCr3tpIuDu</pre>
{SSHA}51OzQC2m1HfQMEzuV8B7qY0TfSkNq+rX


====Файл create-db.ldif====
</syntaxhighlight>При повторном запуске и вводе такого же пароля хеш будет другим, это нормально.
<syntaxhighlight lang="ldif">
 
Пароль администратора лучше делать уникальным и длинным (например, в 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}GmLFgTlVi1ilt4IW0duB4/eCr3tpIuDu
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" "(olcDatabase=*)"
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>


===Создание базовой структуры LDAP ===
=== Создание базовой структуры организации ===
<syntaxhighlight lang="ldif">
Далее в базу 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: Sch179 School
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 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>


Проверка схем:
==Добавление групп и пользователей==
<syntaxhighlight lang="bash">
ldapsearch -Y EXTERNAL -H ldapi:/// -b "cn=schema,cn=config" dn
</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>


==Добавление пользователя (например, dk)==
==Добавление пользователей==
Пусть мы ходим создать пользователя teacher1 c uid=2001 и пользователя student1 с uid=4001. При этом для каждого пользователя будет создана группа с таким же именем.


===Создание пароля===
Создайте файл users.ldif следующего содержания. Не забудьте поменять sch179 на своё название, остальное - по мере необходимости. <syntaxhighlight>
<syntaxhighlight lang="bash">
dn: cn=teacher1,ou=groups,dc=sch179,dc=local
slappasswd -s t9cdw3qR -v
objectClass: posixGroup
</syntaxhighlight>
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 (Сергей Иванов)


===user-dk.ldif ===
dn: cn=student1,ou=groups,dc=sch179,dc=local
<syntaxhighlight lang="ldif">
dn: cn=dk,ou=groups,dc=sch179,dc=local
objectClass: posixGroup
objectClass: posixGroup
cn: dk
cn: student1
gidNumber: 1001
gidNumber: 4001
description: Primary group for user dk
description: Primary group for user student1


dn: uid=dk,ou=people,dc=sch179,dc=local
dn: uid=student1,ou=people,dc=sch179,dc=local
objectClass: inetOrgPerson
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: posixAccount
objectClass: shadowAccount
objectClass: shadowAccount
uid: dk
uid: student1
sn: Кириенко
sn: Васильева
givenName: Денис
givenName: Мария
cn: Денис Кириенко
cn: Мария Васильева
uidNumber: 1001
uidNumber: 4001
gidNumber: 1001
gidNumber: 4001
homeDirectory: /home/dk
homeDirectory: /home/student1
loginShell: /bin/bash
loginShell: /bin/bash
userPassword: {SSHA}rKkuYpM736DjDANzimaJOW0vV8bO8dN9
description: User student1 (Мария Васильева)
description: User Denis Kirienko
 
</syntaxhighlight>
</syntaxhighlight>


Добавление:
Добавление:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
ldapadd -c -x -D "cn=admin,dc=sch179,dc=local" -W -f user-dk.ldif
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=dk)"
ldapsearch -x -b "ou=people,dc=sch179,dc=local" "(uid=teacher1)"
ldapsearch -x -b "ou=groups,dc=sch179,dc=local" "(cn=dk)"
ldapsearch -x -b "ou=groups,dc=sch179,dc=local" "(cn=teacher1)"
</syntaxhighlight>
</syntaxhighlight>


Навигация