如何在 OpenLDAP 2.4 中使用 olcAccess 向用户添加权限
How to add rights to an user with olcAccess, in an OpenLDAP 2.4
我公司有一个 OpenLdap Server 2.4 运行,我需要允许人们在我们的一个 Web 应用程序中更改他们的图片。
该功能已经存在。 LDAP 中的人无权编写自己的属性(特别是此处需要 "jpegPhoto" 属性)。
我在文档中找到了这个
access to attrs=jpegPhoto
by self =xw
by * read
我不知道如何使用这些行。使用什么命令或其他。
如果有人能帮助我处理它就太好了。
谢谢
如果您使用 slapd.conf
作为服务器配置文件,您需要应用的修改很简单,如果您使用新的 cn=config
布局,则稍微复杂一些。无论如何要小心:
The older style slapd.conf(5) file is still supported, but its use is deprecated and support for it will be withdrawn in a future OpenLDAP release.
如 OpenLDAP documentation 中所述。
1) cn=配置布局
您需要修改正在使用的数据库的配置。您的 OpenLDAP 服务器可能包含多个数据库,但您只对存储人物数据及其图片的数据库感兴趣。要列出所有可用的数据库,请使用:
slapcat -b cn=config
必须从 OpenLDAP 服务器执行此命令。它将读取 slapd
配置目录中名为 cn=config.ldif
的文件。就我而言,它位于
/usr/local/etc/openldap/slapd.d/cn=config.ldif
注意 slapcat -b cn=config
仅在 shell 用户可以读取此文件时才有效。在我的例子中,文件是
-rw------- 1 ldap ldap 680 10 mar 21:04 /usr/local/etc/openldap/slapd.d/cn=config.ldif
它属于用户ldap
,组ldap
(它们是在OpenLDAP 服务器安装期间创建的)。我从未为用户 ldap
设置过密码,所以:
tl;dr 一种读取此文件并成功 运行 slapcat -b cn=config
的方法是 root
.
slapcat -b cn=config
的输出很大,但您可以只考虑最后几行,其中列出了您感兴趣的数据库。例如,它可以是
dn: olcDatabase={1}mdb,cn=config
例如,这是包含用户图片的数据库的可分辨名称 (dn
)。您希望允许用户更改他们的图片。
你可以修改数据库配置运行ning(和前面的情况类似,你需要对文件cn=config.ldif
有写权限,所以你可以像以前一样root
):
ldapmodify -f /path/to/yourfile -x -D "cn=config" -W
-f /path/to/yourfile
是你的配置文件(见下文);
-x
为Simple Authentication,不使用SASL时需要;
-D "cn=config"
是您用来进入 OpenLDAP 数据库的用户名。通常每个数据库都有一个超级用户(通常称为 Manager
)和一个全局超级用户。名为 cn=config
的用户是 全局超级用户 。您应该在 OpenLDAP 服务器安装期间配置其密码;如果您没有这个密码,您可能无法修改数据库配置;
-W
要求您输入用户 cn=config
的密码。
配置文件,位于/path/to/yourfile
,必须是格式如下的纯文本文件:
dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcAccess
olcAccess: to attrs=jpegPhoto
by self write
by * read
我建议您使用 by self write
而不是 by self =xw
(这将不允许用户阅读他们的图片)。注意在by
前放两个个空格,如this answer.
您现在可以再次 运行 slapcat -b cn=config
检查配置是否已修改,以及 olcAccess
语句的顺序是否正确。如果没有,您可以删除它们并重新添加它们,知道每个新的 olcAccess
规范将自动放在前面的规范之后。
2) slapd.conf 布局
如果您使用的是旧的 slapd.conf
配置文件,您只需要对它的写入权限。通常是:
-rw------- 1 ldap ldap 2557 Dec 15 2016 slapd.conf
因此,您可以使用您喜欢的文本编辑器将其打开为 root
。确定要修改的数据库部分(例如以以下内容开头的部分:
database mdb
maxsize 1073741824
suffix "dc=example,dc=com"
rootdn "cn=Manager,dc=example,dc=com"
并在本节底部简单地添加你的行,如果其他 access
语句已经存在,请小心。同样,我建议使用 by self write
而不是 self =xw
.
无论您的配置如何,修改后重启 OpenLDAP 服务器(进程 slapd
)。
如果您需要更多示例and/or 说明,请考虑:
- 一个
cn=config
configuration example;
- Access Control 对于 OpenLDAP 数据库;
- OpenLDAP site,跟整
文档。
我公司有一个 OpenLdap Server 2.4 运行,我需要允许人们在我们的一个 Web 应用程序中更改他们的图片。 该功能已经存在。 LDAP 中的人无权编写自己的属性(特别是此处需要 "jpegPhoto" 属性)。
我在文档中找到了这个
access to attrs=jpegPhoto
by self =xw
by * read
我不知道如何使用这些行。使用什么命令或其他。
如果有人能帮助我处理它就太好了。
谢谢
如果您使用 slapd.conf
作为服务器配置文件,您需要应用的修改很简单,如果您使用新的 cn=config
布局,则稍微复杂一些。无论如何要小心:
The older style slapd.conf(5) file is still supported, but its use is deprecated and support for it will be withdrawn in a future OpenLDAP release.
如 OpenLDAP documentation 中所述。
1) cn=配置布局
您需要修改正在使用的数据库的配置。您的 OpenLDAP 服务器可能包含多个数据库,但您只对存储人物数据及其图片的数据库感兴趣。要列出所有可用的数据库,请使用:
slapcat -b cn=config
必须从 OpenLDAP 服务器执行此命令。它将读取 slapd
配置目录中名为 cn=config.ldif
的文件。就我而言,它位于
/usr/local/etc/openldap/slapd.d/cn=config.ldif
注意 slapcat -b cn=config
仅在 shell 用户可以读取此文件时才有效。在我的例子中,文件是
-rw------- 1 ldap ldap 680 10 mar 21:04 /usr/local/etc/openldap/slapd.d/cn=config.ldif
它属于用户ldap
,组ldap
(它们是在OpenLDAP 服务器安装期间创建的)。我从未为用户 ldap
设置过密码,所以:
tl;dr 一种读取此文件并成功 运行 slapcat -b cn=config
的方法是 root
.
slapcat -b cn=config
的输出很大,但您可以只考虑最后几行,其中列出了您感兴趣的数据库。例如,它可以是
dn: olcDatabase={1}mdb,cn=config
例如,这是包含用户图片的数据库的可分辨名称 (dn
)。您希望允许用户更改他们的图片。
你可以修改数据库配置运行ning(和前面的情况类似,你需要对文件cn=config.ldif
有写权限,所以你可以像以前一样root
):
ldapmodify -f /path/to/yourfile -x -D "cn=config" -W
-f /path/to/yourfile
是你的配置文件(见下文);-x
为Simple Authentication,不使用SASL时需要;-D "cn=config"
是您用来进入 OpenLDAP 数据库的用户名。通常每个数据库都有一个超级用户(通常称为Manager
)和一个全局超级用户。名为cn=config
的用户是 全局超级用户 。您应该在 OpenLDAP 服务器安装期间配置其密码;如果您没有这个密码,您可能无法修改数据库配置;-W
要求您输入用户cn=config
的密码。
配置文件,位于/path/to/yourfile
,必须是格式如下的纯文本文件:
dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcAccess
olcAccess: to attrs=jpegPhoto
by self write
by * read
我建议您使用 by self write
而不是 by self =xw
(这将不允许用户阅读他们的图片)。注意在by
前放两个个空格,如this answer.
您现在可以再次 运行 slapcat -b cn=config
检查配置是否已修改,以及 olcAccess
语句的顺序是否正确。如果没有,您可以删除它们并重新添加它们,知道每个新的 olcAccess
规范将自动放在前面的规范之后。
2) slapd.conf 布局
如果您使用的是旧的 slapd.conf
配置文件,您只需要对它的写入权限。通常是:
-rw------- 1 ldap ldap 2557 Dec 15 2016 slapd.conf
因此,您可以使用您喜欢的文本编辑器将其打开为 root
。确定要修改的数据库部分(例如以以下内容开头的部分:
database mdb
maxsize 1073741824
suffix "dc=example,dc=com"
rootdn "cn=Manager,dc=example,dc=com"
并在本节底部简单地添加你的行,如果其他 access
语句已经存在,请小心。同样,我建议使用 by self write
而不是 self =xw
.
无论您的配置如何,修改后重启 OpenLDAP 服务器(进程 slapd
)。
如果您需要更多示例and/or 说明,请考虑:
- 一个
cn=config
configuration example; - Access Control 对于 OpenLDAP 数据库;
- OpenLDAP site,跟整 文档。