Назад | Перейти на главную страницу

как установить pwdMaxAge для одного пользователя в OpenLdap

Если я это сделаю, это применимо ко всем пользователям.

ldapadd -v -H "ldaps://hostName/" -x -W -D cn=admin,dc=mydomain,dc=com -f pwdMaxAge.ldif 

dn: cn=passwordDefault,ou=Policies,dc=mydomain,dc=com
changetype: modify
replace: pwdMaxAge
pwdMaxAge: 3000

Пытался использовать приведенный ниже ldif, чтобы установить pwdMaxAge для существующего пользователя:

ldapadd -v -H "ldaps://hostName/" -x -W -D cn=admin,dc=mydomain,dc=com -f pwdMaxAge_user.ldif

dn: cn=test2,ou=Users,dc=mydomain,dc=com
objectClass: device
objectClass: pwdPolicy
objectClass: top
pwdAttribute: userPassword
cn: test2
uid: test2
pwdMaxAge: 300

Это дает:

ldap_initialize( ldaps://hostName:636/??base )
add objectClass:
    device
    pwdPolicy
    top
add pwdAttribute:
    userPassword
add cn:
    test2
add pwdMaxAge:
    300
adding new entry "cn=test2,ou=Users,dc=mydomain,dc=com"
ldap_add: Object class violation (65)
    additional info: attribute 'uid' not allowed

Он добавляет новый CN, если я удалю UID. но не помогает установить pwdMaxAge для пользователя. как мне правильно установить?

Редактировать: Начат создание индивидуальных политик: кот ppolicy_individual.ldif

dn: cn=fin_user,ou=Policies,dc=mydomain,dc=com
objectClass: device
objectClass: pwdPolicy
cn: fin_user
pwdAttribute: userPassword
pwdMaxAge: 300
pwdInHistory: 0
pwdMaxFailure: 0
pwdLockout: FALSE
pwdMinLength: 0
pwdSafeModify: FALSE

cat pwdPolicySubentry.ldif

dn: cn=test2,ou=Users,dc=mydomain,dc=com
changetype: modify
add: pwdPolicySubentry
pwdPolicySubentry:  cn=fin_user,ou=Policies,dc=mydomain,dc=com
# ldapmodify -v -H "ldaps://hostName/" -x -W -D cn=admin,dc=mydomain,dc=com -f pwdPolicySubentry.ldif 
ldap_initialize( ldaps://hostName:636/??base )
add pwdPolicySubentry:
    cn=fin_user,ou=Policies,dc=mydomain,dc=com
modifying entry "uid=test2,ou=Users,dc=mydomain,dc=com"
modify complete

Но, похоже, это не имеет никакого значения.

Общая ошибка «Нарушение класса объекта, атрибут« имя_атрибута »не разрешен» означает, что вы пытаетесь установить атрибут, который не определен в классах объектов, доступных для этой записи.

Другими словами, вам сначала нужно добавить ObjectClass, который предоставляет атрибут, прежде чем вы сможете его установить. В uid Атрибут предоставляется рядом различных классов объектов.

Из https://ldapwiki.com/wiki/Uid

uid используется как ОБЯЗАТЕЛЬНО (обязательный атрибут при использовании этого класса объекта) в:

  • posixAccount
  • shadowAccount
  • sambaSamAccount
  • dicAppInfo

Используется МАЙ в:

  • Человек
  • организационное лицо
  • inetOrgPerson

Но выбор и использование одного из этих классов объектов не только сделает uid доступны, они обычно также требуют установки других атрибутов. Так что выбирайте с осторожностью

Когда вы изменяете свой ldif и пытаетесь, например, класс объекта posixAccount

dn: cn=test2,ou=Users,dc=mydomain,dc=com
objectClass: device
objectClass: pwdPolicy
objectClass: top
objectClass: PosixAccount
pwdAttribute: userPassword
cn: test2
uid: test2
pwdMaxAge: 300

И вам также нужно будет установить uidNumber , gidNumber и homeDirectory