как самостоятельно изменить attrs в openldap

Я использую openldap 2.4.40 и применил следующий 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

Я хочу изменить userPassword, shadowLastChange, description, sshPublicKey пользователем (sysUsers). Но это выдает мне ошибку разрешения, Нет разрешения на запись.

# 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== root@sample.com: 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.

Я пытался изменить описание пользователем uid = user1, ou = sysUsers, dc = sample, dc = com, но не удалось.

uid = Manager, ou = sysUsers, dc = sample, dc = com может изменять.

что я делаю не так? Я подозреваю, что проблема ACL?

2
задан 26 October 2016 в 03:55
2 ответа

в. Анирудх Малхотра спасибо ответил.

Я попытался изменить 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

Но slapacl не изменился.

# 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== root@sample.com: read(=rscxd)
 userPassword=****: read(=rscxd)
 description=test user1: read(=rscxd)
  :
 modifyTimestamp=20161025074434Z: read(=rscxd)
0
ответ дан 3 December 2019 в 10:36
 olcAccess: {0} в *
  самостоятельно написать
  by dn = "cn = Manager, dc = sample, dc = com" написать
  автор: * читать
olcAccess: {1} to dn.children = "ou = sysUsers, dc = sample, dc = com"
  attrs = userPassword, shadowLastChange, описание, sshPublicKey
  самостоятельно написать
  by dn = "cn = Manager, dc = sample, dc = com" написать
  от анонимной авторизации
  автор: * none
 

Прежде всего, последовательность ACL, которую вы указали, неверна. В этом случае все будет согласовано с первой директивой, поскольку в ней есть "*", что соответствует всему, и никогда не перейдет ко второму правилу ACL.

Во-вторых, вы использовали неверную команду для проверки разрешений ACL. Вы использовали:

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

Что неверно -D - это DN , разрешения которого должны быть проверены, а -b - это baseDN - , разрешения которого необходимо проверить.

Итак, правильная команда должна быть проверьте собственные разрешения:

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

ИЗМЕНИТЬ ПОСЛЕ ВЫВОДОВ : ACL, который вы применили, был для dn: olcDatabase = {0} config, cn = config , тогда как он должен применяться для DN базы данных dn: olcDatabase = {2} bdb, cn = config

Я почти уверен, что вы пытаетесь изменить описание DN: "uid = Manager, ou = sysUsers, dc = sample, dc = com" который, конечно, в соответствии с ACL не сможет сделать ни один другой, кроме DN: "uid = Manager, ou = sysUsers, dc = sample, dc = com" или DN: "cn = Manager, dc = sample, dc = com ".

Надеюсь, это поможет! Подтвердите ответ, отметив его как "помогший" или ответ, если да.

3
ответ дан 3 December 2019 в 10:36

Теги

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