如何在 OpenLdap 中为单个用户设置 pwdMaxAge

如何在 OpenLdap 中为单个用户设置 pwdMaxAge

如果我这样做,则它适用于所有用户。

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

如果我删除 UID,它会添加一个新的 CN。但无助于为用户设置 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

但似乎并没有什么区别。

答案1

一般错误“对象类违规,不允许属性‘attribute_name’”意味着您试图设置该条目可用的 ObjectClasses 中未定义的属性。

换句话说,您首先需要添加提供该属性的 ObjectClass,然后才能设置它。该uid属性由许多不同的对象类提供。

https://ldapwiki.com/wiki/Uid

uid在以下情况下被用作必须属性(使用该对象类时必需的属性):

  • posix帐户
  • 影子账户
  • sambaSam帐户
  • dicAppInfo

MAY 的使用范围:

  • 组织人员
  • inetOrgPerson

但是选择并使用其中一个 Object 类不仅会使其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

您还需要设置uidNumbergidNumberhomeDirectory

相关内容