AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1025744
Accepted
tuna
tuna
Asked: 2020-07-19 05:12:42 +0800 CST2020-07-19 05:12:42 +0800 CST 2020-07-19 05:12:42 +0800 CST

slapd.conf ACL:ldap_modify:访问权限不足 (50)

  • 772

我试图限制对用户自己的userPassword属性的写访问。但是现在惨败了几个小时。这是我到目前为止所做的:

  • 在 Arch linux 上安装 OpenLDAP 2.4
  • 通过 Apache Directory Studio配置基本 DN ( dc=exmaple,dc=org) 和 Manager 以修改、添加和删除
  • 添加了两个组织单位people和group
  • ou=people在-uid=timo,ou=people,dc=example,dc=org和下添加了两个用户uid=heike,...

我想做的下一件事是能够修改用户自己的 userPassword。为此,我创建了一个changepw.ldif文件。

dn: uid=timo,ou=people,dc=example,dc=org
changetype: modify
replace: userPassword
userPassword: newpw

并像这样应用它

$ ldapmodify -x -D "uid=timo,ou=people,dc=example,dc=org" -W -f changepw.ldif
modifying entry "uid=timo,ou=people,dc=example,dc=org"
ldap_modify: Insufficient access (50)

我首先使用 Apache Directory Studio 为 uid=timo 设置了 userPassword 并验​​证它是否正常工作

到目前为止,一切都在正常工作(至少它符合我的期望:-P)。所以我向 /etc/openldap/slapd.conf 添加了访问控制,如下所示:

[...]
# if no access controls are present, the default policy
# allows anyone and everyone to read anything but restricts
# updates to rootdn.  (e.g., "access to * by * read")
#
# rootdn can always read and write EVERYTHING!

access  to attrs=userPassword by self write by anonymous auth by dn.base="cn=Manager,dc=example,dc=org" write by * none

#######################################################################
# MDB database definitions

database        mdb
[...]

并做了通常的事情:

$ slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/
$ chown -R ldap:ldap /etc/openldap/slapd.d
$ systemctl restart slapd

并再次尝试。

$ ldapmodify -x -D "uid=timo,ou=people,dc=example,dc=org" -W -f changepw.ldif
modifying entry "uid=timo,ou=people,dc=example,dc=org"
ldap_modify: Insufficient access (50)

由于某种原因,访问被拒绝。我打开了acl日志并得到了这个:

5f12f36a => access_allowed: result not in cache (userPassword)
5f12f36a => access_allowed: auth access to "uid=timo,ou=people,dc=example,dc=org" "userPassword" requested
5f12f36a => slap_access_allowed: backend default auth access granted to "(anonymous)"
5f12f36a => access_allowed: auth access granted by read(=rscxd)
5f12f36a => access_allowed: backend default write access denied to "uid=timo,ou=people,dc=example,dc=org"

我将不胜感激任何帮助!

ldap openldap slapd
  • 1 1 个回答
  • 420 Views

1 个回答

  • Voted
  1. Best Answer
    tuna
    2020-07-19T08:14:15+08:002020-07-19T08:14:15+08:00

    在我发现有一个称为slapacl测试 ACL 的工具后,我想出了一个解决方案。

    让我向您展示它在进行任何更改之前的样子。

    $ slapacl -F /etc/openldap/slapd.d/ -b "uid=timo,ou=people,dc=example,dc=org" -D "uid=timo,ou=people,dc=example,dc=org" -u userPassword
    authcDN: "uid=timo,ou=people,dc=example,dc=org"
    userPassword: read(=rscxd)
    

    这基本上是我已经想到的,并给了我足够的证据来质疑配置生成命令(slaptest -f ... -F ...)。

    实际问题是配置目录 ( /etc/openldap/slapd.d) 没有被覆盖

    您必须先删除该目录并再次生成配置目录。

    $ rm -rf /etc/openldap/slapd.d/*
    $ slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/
    $ chown -R ldap:ldap /etc/openldap/slapd.d
    $ systemctl restart slapd
    

    这就是测试最初的样子。

    $ slapacl -F /etc/openldap/slapd.d/ -b "uid=timo,ou=people,dc=example,dc=org" -D "uid=timo,ou=people,dc=example,dc=org" -u userPassword
    authcDN: "uid=timo,ou=people,dc=example,dc=org"
    userPassword: write(=wrscxd)
    

    我希望有人能从我的发现中受益。它仍然很好奇,手册页中没有提到这一点,并且没有-f(强制覆盖)标志。

    • 0

相关问题

  • Cygwin sshd 和 LDAP 身份验证

  • 从 OpenLDAP 检索操作属性

  • 为 Mac 网络使用 Linux 和 Open LDAP

  • 使用LDAP服务器身份验证的Linux中单个用户的多个登录名

  • 使用 smbldap 管理用户/组的 Web 前端

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve