Вопрос или проблема
Возможно ли изменить пароль для вошедшего пользователя LDAP с помощью команды passwd?
Я вошел на server1, используя testuser. Попытался изменить пароль для себя (testuser) и получил следующую ошибку.
[testuser@server1 ~]$ passwd
Изменение пароля для пользователя testuser.
(текущий) LDAP пароль:
Новый пароль:
Повторите новый пароль:
изменение пароля не удалось: Недостаточно прав
passwd: ошибка обработки токена аутентификации
Смотрите “ТРЕБОВАНИЯ К ОПЕРАЦИЯМ” в slapd.access(5).
К сожалению, настройка ACL в OpenLDAP не является тривиальной задачей, и вы можете легко заблокировать доступ всем, кроме администратора.
Но ваши ACL для базы данных должны содержать что-то вроде (используя формат cn=config
):
...
olcAccess: {5}to attrs=userPassword by self write by * auth
olcAccess: {6}to attrs=shadowLastChange by self write by * none
olcAccess: {7}to * by * read
Ответ или решение
Чтобы изменить пароль для пользователя LDAP, необходимо учитывать несколько аспектов конфигурации самого сервера LDAP (например, OpenLDAP), а также разрешения, установленные для пользователя. Ошибка, которую вы получили ("Insufficient access"), указывает на то, что для изменения пароля у вас недостаточно прав.
Вот шаги, которые необходимо выполнить для успешного изменения пароля:
-
Проверьте права доступа (ACL): Убедитесь, что у ваших пользователей есть права на изменение собственного пароля. Для этого вам нужно ознакомиться с конфигурацией ACL вашего сервера LDAP. Если у вас есть доступ к файлу конфигурации, убедитесь, что там прописаны соответствующие права.
Пример конфигурации ACL может выглядеть так:
olcAccess: {5}to attrs=userPassword by self write by * auth olcAccess: {6}to attrs=shadowLastChange by self write by * none olcAccess: {7}to * by * read
В этом примере предоставляются права на изменение атрибута
userPassword
(пароль пользователя) самим пользователям, что позволяет им менять свои пароли. -
Измените конфигурацию (если необходимо): Если ваши ACL не настроены правильно, вам понадобится внести изменения. Это может быть сделано через команду
ldapmodify
. Для этого создайте файл с настройками, к примеру,modify_acl.ldif
, и добавьте в него:dn: cn=config changetype: modify replace: olcAccess olcAccess: {5}to attrs=userPassword by self write by * auth olcAccess: {6}to attrs=shadowLastChange by self write by * none olcAccess: {7}to * by * read
После этого выполните команду:
ldapmodify -Y EXTERNAL -H ldapi:/// -f modify_acl.ldif
-
Проверьте правильность аутентификации: Убедитесь, что вы используете правильные учетные данные при входе в систему и при попытке изменить пароль через команду
passwd
. -
Измените пароль: После настройки прав доступа попробуйте снова использовать команду
passwd
для изменения пароля:passwd
Введите текущий пароль и затем новый пароль дважды.
-
Проверьте наличие ошибок: Если после изменения конфигурации у вас возникли проблемы, проверьте логи сервера LDAP для диагностики ошибок, что может помочь в поиске дополнительных проблем.
Дополнительные советы:
- Тщательно проверяйте настройки ACL, чтобы не заблокировать доступ для всех пользователей.
- Рекомендуется создавать резервные копии конфигурации перед внесением изменений.
Выполнив эти шаги, вы должны суметь успешно изменить пароль для пользователя LDAP, используя команду passwd
.