como alterar o attrs no openldap

3

Estou executando o openldap como 2.4.40 e apliquei o seguinte ACL:

olcAccess: {0}to *      
          by self write       
          by dn="cn=Manager,dc=sample,dc=com" write       
          by * read
olcAccess: {1}to dn.children="ou=sysUsers,dc=sample,dc=com" 
           attrs=userPassword,shadowLastChange,description,sshPublicKey       
          by self write
          by dn="cn=Manager,dc=sample,dc=com" write             
          by anonymous auth
          by * none

Eu quero alterar o userPassword, shadowLastChange, descrição, sshPublicKey pelo usuário (sysUsers). Mas está me dando erro de permissão, não escreve permissão.

# slapacl -D '' -b 'uid=user1,ou=sysUsers,dc=sample,dc=com'
 authcDN: ""
 entry: read(=rscxd)
 children: read(=rscxd)
 gidNumber=1000: read(=rscxd)
 homeDirectory=/home/user1: read(=rscxd)
  :
 cn=user1: read(=rscxd)
 sshPublicKey=ssh-rsa AAAAB3Nza…cGWliPbw== [email protected]: read(=rscxd)
 userPassword=****: read(=rscxd)
 description=test user1: read(=rscxd)
  :
 modifyTimestamp=20161025074434Z: read(=rscxd)
LDAP reponse:   Insufficient access
error number:   0x32 (LDAP_INSUFFICIENT_ACCESS)
description:    You do not have sufficient permissions to perform that operation.

Eu tentei modificar a descrição pelo usuário uid = user1, ou = sysUsers, dc = sample, dc = com, mas falhou.

uid = Manager, ou = sysUsers, dc = sample, dc = com é capaz de modificar embora.

o que estou fazendo errado? Eu suspeito de problema de ACL?

    
por Cholho Lee 25.10.2016 / 13:56

2 respostas

3

olcAccess: {0}to *      
          by self write       
          by dn="cn=Manager,dc=sample,dc=com" write       
          by * read
olcAccess: {1}to dn.children="ou=sysUsers,dc=sample,dc=com" 
           attrs=userPassword,shadowLastChange,description,sshPublicKey       
          by self write
          by dn="cn=Manager,dc=sample,dc=com" write             
          by anonymous auth
          by * none

Em primeiro lugar, a sequência da ACL que você forneceu não está correta. Nesse caso, tudo será correspondido à primeira diretiva, pois possui "*" in, que corresponde a tudo e nunca irá para a segunda regra da ACL.

Segundo, o comando que você usou para verificar as permissões da ACL está incorreto, você usou:

slapacl -D '' -b 'uid=user1,ou=sysUsers,dc=sample,dc=com'

O que é incorreto -D é o DN cujas permissões devem ser verificadas e -b é baseDN para quais permissões devem ser verificadas.

Portanto, o comando correto deve ser verificar permissões de si mesmo:

slapacl -D 'uid=user1,ou=sysUsers,dc=sample,dc=com' -b 'uid=user1,ou=sysUsers,dc=sample,dc=com'

EDITAR APÓS SUAS CONSTATAÇÕES : A ACL que você aplicou foi para dn: olcDatabase = {0} config, cn = config ao passo que deve ser aplicada ao DN do banco de dados < strong> dn: olcDatabase = {2} bdb, cn = config

O que eu tenho certeza que você está tentando fazer é alterar a descrição do DN: "uid = Manager, ou = sysUsers, dc = sample, dc = com" que provavelmente de acordo com ACL qualquer outro não será capaz de faça, exceto DN: "uid = Manager, ou = sysUsers, dc = amostra, dc = com" próprio ou DN: "cn = Manager, dc = amostra, dc = com".

Espero que isso ajude! Por favor, apoie a resposta marcando-a como ajudada ou respondida, se o fez.

    
por 25.10.2016 / 15:22
0

para. Anirudh Malhotra obrigado respondido.

eu tentei alterar o ALC.

[root@evolable-ldap-01 cn=config]# cat olcDatabase\=\{0\}config.ldif
# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
# CRC32 57182ee5
dn: olcDatabase={0}config
objectClass: olcDatabaseConfig
olcDatabase: {0}config
olcAddContentAcl: TRUE
olcLastMod: TRUE
olcMaxDerefDepth: 15
olcReadOnly: FALSE
olcRootDN: cn=config
olcSyncUseSubentry: FALSE
olcMonitoring: FALSE
structuralObjectClass: olcDatabaseConfig
entryUUID: af419f18-0036-1035-8ba5-452a6aebab7f
creatorsName: cn=config
createTimestamp: 20151006052730Z
olcAccess: {0}to dn.children="ou=sysUsers,dc=evolableasia,dc=net" 
          attrs=userPassword,shadowLastChange,description,sshPublicKey
       by dn="uid=user1,ou=sysUsers,dc=sample,dc=com" write
       by self write
       by dn="cn=Manager,dc=sample,dc=com" write
       by * none
olcAccess: {1}to *
       by self write
       by dn="cn=Manager,dc=sample,dc=com" write
       by anonymous auth
       by * read
entryCSN: 20161026004145.362887Z#000000#000#000000
modifiersName: cn=manager,dc=sample,dc=com
modifyTimestamp: 20161026004145Z

Mas o slapacl não é alterado.

# slapacl -D '' -b 'uid=user1,ou=sysUsers,dc=sample,dc=com'
 authcDN: "uid=user1,ou=sysusers,dc=sample,dc=com"
 entry: read(=rscxd)
 children: read(=rscxd)
 gidNumber=1000: read(=rscxd)
 homeDirectory=/home/user1: read(=rscxd)
  :
 cn=user1: read(=rscxd)
 sshPublicKey=ssh-rsa AAAAB3Nza…cGWliPbw== [email protected]: read(=rscxd)
 userPassword=****: read(=rscxd)
 description=test user1: read(=rscxd)
  :
 modifyTimestamp=20161025074434Z: read(=rscxd)
    
por 26.10.2016 / 02:55