OpenLDAP - как хранить несколько адресов почты для пользователя?
Как хранить несколько адресов почты для пользователя в LDAP
362 Words
2026-06-20 13:01 +0300
Допустим, в коллекции пользователей в Organization Unit ou=people,dc=vodolaz095,dc=ru у нас есть пользователь
с такими параметрами.
dn: uid=user3,ou=people,dc=vodolaz095,dc=ru
uid: user3
uidNumber: 1003
gidNumber: 1003
cn: Test User 3
givenName: Test User 3
homeDirectory: /home/user3
initials: AB
loginShell: /bin/bash
objectClass: posixAccount
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
sn: User3
title: testUser
userPassword: {SSHA}M1Um0cvQBqIRDjHk8beDv07kky5jQ2VB
mail: [email protected]
И надо к нему добавить дополнительный, допустим, рабочий адрес электронной почты - [email protected].
Как это можно сделать?
Сделать это очень просто — в схеме inetOrgPerson, которая применена к нашей учетной записи, атрибут mail по умолчанию
является многозначным (multi-valued). Это означает, что вы можете добавить сколько угодно адресов, просто указав
несколько строк mail: в LDIF-файле или выполнив операцию добавления (add), а не замены (replace).
Способ 1
Надо создать файл патча для записи - add_email_address.ldif
dn: uid=user3,ou=people,dc=vodolaz095,dc=ru
changetype: modify
add: mail
mail: [email protected]
C помощью утилиты ldapmodify запись можно обновить так
$ ldapmodify -x -D "cn=admin,dc=vodolaz095,dc=ru" -W -f add_email_address.ldif
Способ 2
Также можно перезаписать ВСЕ адреса почты у пользователя - создадим файл replace_email.ldif:
dn: uid=user3,ou=people,dc=vodolaz095,dc=ru
changetype: modify
replace: mail
mail: [email protected]
mail: [email protected]
И применим его:
$ ldapmodify -x -D "cn=admin,dc=vodolaz095,dc=ru" -W -f replace_email.ldif
Как итог, у пользователя теперь появилось несколько адресов электронной почты:
dn: uid=user3,ou=people,dc=vodolaz095,dc=ru
uid: user3
uidNumber: 1003
gidNumber: 1003
cn: Test User 3
givenName: Test User 3
homeDirectory: /home/user3
initials: AB
loginShell: /bin/bash
objectClass: posixAccount
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
sn: User3
title: testUser
userPassword: {SSHA}M1Um0cvQBqIRDjHk8beDv07kky5jQ2VB
mail: [email protected]
mail: [email protected]
Способ 3.
Можно использовать утилиту ldapvi и отредактировать всю коллекцию пользователей
$ ldapvi --discover --user="cn=admin,dc=vodolaz095,dc=ru"
После редактирования записей с помощью вашего любимого текстового редактора, можно сохранить временный файл, и ldapvi спросит, что делать:
Action? [yYqQvVebB*rsf+?] ?
Commands:
y -- commit changes
Y -- commit, ignoring all errors
q -- save changes as LDIF and quit
Q -- discard changes and quit
v -- view changes as LDIF change records
V -- view changes as ldapvi change records
e -- open editor again
b -- show login dialog and rebind
B -- toggle SASL
* -- set SASL mechanism
r -- reconnect to server
s -- skip one entry
f -- forget deletions
+ -- rewrite file to include schema comments
? -- this help
Обычно хватает y.