как установить 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

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

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 для пользователя. как мне установить его правильно?

Изменить: Приступили к созданию индивидуальных политик: cat 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

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

2
задан 20 September 2019 в 15:52
1 ответ

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

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

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

uid используется как ДОЛЖЕН (обязательный атрибут при использовании этого объекта class) в:

  • posixAccount
  • shadowAccount
  • sambaSamAccount
  • dicAppInfo

Используется МОЖЕТ в:

  • Person
  • organizationPerson
  • 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

0
ответ дан 3 December 2019 в 13:40

Теги

Похожие вопросы