尝试debian-9.13.0-amd64下apache和proftpd用openldap整合按组认证笔记之二:让groupOfUniqueNames和posixGroup可以共存

7 篇文章 0 订阅

主要参考文章

1、https://www.openldap.org/lists/openldap-technical/201103/msg00212.html
2、ttps://serverfault.com/questions/996712/openldap-group-how-to-create-a-group-object-with-both-member-and-memberuid-attr
3、https://mlog.club/article/4222504
4、https://packages.debian.org/stretch/all/gosa-schema/filelist

按我自己的理解,openldap中继承类时可以有多个Auxiliary objectClass,但是只能有一个Structural objectClass

而groupOfUniqueNames和posixGroup在某些版本中都是Structural objectClass,因此不能共存,

解决办法是将posixGroup改为Auxiliary objectClass,网上提供的方法是用rfc2307bis.ldif替换nis.ldif

和上一篇笔记一样,网上说有的Linux发行版本openldap提供的posixGroup已用rfc2307bis.ldif替换nis.ldif

(备注:https://ldapwiki.com/wiki/PosixGroup中清晰地标识为AUXILIARY,可能新版本中改了吧)

还是先测试一下,看看有没有惊喜

一、测试,在上一篇笔记中增加组的定义时加一行objectClass: posixGroup,结果出错,还是没有惊喜,debian9还是太保守

root@mydebian207:~# cat > ~/add_group2_default_unique.ldif << EOF
> dn: cn=testgroup2,ou=web_ftp_groups,dc=mydebian210,dc=mydomain,dc=net
> objectClass: groupOfUniqueNames
> objectClass: posixGroup
> cn: testgroup2
> description: testgroup2
> uniqueMember: uid=testuser,ou=web_ftp_users,dc=mydebian210,dc=mydomain,dc=net
> EOF
root@mydebian207:~# ldapadd -x -D cn=admin,dc=mydebian210,dc=mydomain,dc=net -w "secret_password" -f ~/add_group2_default_unique.ldif
adding new entry "cn=testgroup2,ou=web_ftp_groups,dc=mydebian210,dc=mydomain,dc=net"
ldap_add: Object class violation (65)
        additional info: invalid structural object class chain (groupOfUniqueNames/posixGroup)

二、取得rfc2307bis.ldif文件

 debian保守是为了稳定,这是我喜欢debian的主要原因,

另一个原因就是巨量的软件库,平时用不上,关键时刻就会少操心

网上提供了很多网址下载rfc2307bis,也许太多了反而不放心,我在https://packages.debian.org/中搜索了一下 

搜索软件包的内容
关键字: rfc2307bis.schema
路径结尾是关键字
发行版:oldstable

文件	                                                软件包
/etc/ldap/schema/fusiondirectory/rfc2307bis.schema	    fusiondirectory-schema [除 powerpc]
/etc/ldap/schema/gosa/rfc2307bis.schema	                gosa-schema

搜索软件包的内容
关键字: rfc2307bis.ldif
路径结尾是关键字
发行版:oldstable

文件	                                                软件包
/etc/ldap/schema/gosa/rfc2307bis.ldif	                gosa-schema
/usr/share/dirsrv/data/10rfc2307bis.ldif	            389-ds-base [除 powerpc]

 明显gosa-schema就是要找的包,安装gosa-schema

root@mydebian210:~# apt install gosa-schema

 三、按参考文章3中的方法进行替换

root@mydebian210:~# rm -fr /var/backups/unknown-2.4.44+dfsg-5+deb9u4.ldapdb
root@mydebian210:~# cp /usr/share/slapd/slapd.init.ldif /usr/share/slapd/slapd.init.ldif.mydefault
root@mydebian210:~# nano /usr/share/slapd/slapd.init.ldif

 只改动include: file:///etc/ldap/schema/nis.ldif所在行

#include: file:///etc/ldap/schema/nis.ldif
include: file:///etc/ldap/schema/gosa/rfc2307bis.ldif

重配置前查看一下对应目录 

root@mydebian210:~# ls /etc/ldap/slapd.d/cn\=config/cn\=schema
cn={0}core.ldif  cn={1}cosine.ldif  cn={2}nis.ldif  cn={3}inetorgperson.ldif

再次重配置slapd 

root@mydebian210:~# dpkg-reconfigure slapd
  Backing up /etc/ldap/slapd.d in /var/backups/slapd-2.4.44+dfsg-5+deb9u4... done.
  Moving old database directory to /var/backups:
  - directory unknown... done.
  Creating initial configuration... done.
  Creating LDAP directory... done.

 重配置后查看一下对应目录

root@mydebian210:~# ls /etc/ldap/slapd.d/cn\=config/cn\=schema
cn={0}core.ldif    cn={2}rfc2307bis.ldif
cn={1}cosine.ldif  cn={3}inetorgperson.ldif

 四、再次测试,测试要在openldap中增加内容,如果同时要支持memberOf特性又以不想反复重新配置,先配置好支持memberOf特性

(一)、步骤一配置支持memberOf特性,因为这一步必须在openldap中没有数据时完成

root@mydebian210:~# ldapadd -Q -Y EXTERNAL -H ldapi:/// -f ~/memberof_config_default_unique.ldif
adding new entry "cn=module,cn=config"

adding new entry "olcOverlay={0}memberof,olcDatabase={1}mdb,cn=config"

root@mydebian210:~# ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f ~/refint1_default_unique.ldif
modifying entry "cn=module{1},cn=config"

root@mydebian210:~# ldapadd -Q -Y EXTERNAL -H ldapi:/// -f ~/refint2_default_unique.ldif
adding new entry "olcOverlay=refint,olcDatabase={1}mdb,cn=config"

 确认支持memberOf特性已生效

root@mydebian210:~# ldapadd -x -D cn=admin,dc=mydebian210,dc=mydomain,dc=net -w "secret_password" -f ~/add_nodes.ldif
adding new entry "ou=web_ftp_users,dc=mydebian210,dc=mydomain,dc=net"

adding new entry "ou=web_ftp_groups,dc=mydebian210,dc=mydomain,dc=net"

root@mydebian210:~# ldapadd -x -D cn=admin,dc=mydebian210,dc=mydomain,dc=net -w "secret_password" -f ~/add_user_default_unique.ldif
adding new entry "uid=testuser,ou=web_ftp_users,dc=mydebian210,dc=mydomain,dc=net"

root@mydebian210:~# ldapadd -x -D cn=admin,dc=mydebian210,dc=mydomain,dc=net -w "secret_password" -f ~/add_group_default_unique.ldif
adding new entry "cn=testgroup,ou=web_ftp_groups,dc=mydebian210,dc=mydomain,dc=net"

root@mydebian210:~# ldapsearch -x -LLL -H ldap:/// -b uid=testuser,ou=web_ftp_users,dc=mydebian210,dc=mydomain,dc=net dc memberof
dn: uid=testuser,ou=web_ftp_users,dc=mydebian210,dc=mydomain,dc=net
memberOf: cn=testgroup,ou=web_ftp_groups,dc=mydebian210,dc=mydomain,dc=net

 (二)、下一步才能测试rfc2307bis是否生效

root@mydebian210:~# ldapadd -x -D cn=admin,dc=mydebian210,dc=mydomain,dc=net -w "secret_password" -f ~/add_group2_default_unique.ldif
adding new entry "cn=testgroup2,ou=web_ftp_groups,dc=mydebian210,dc=mydomain,dc=net"
ldap_add: Object class violation (65)
        additional info: object class 'posixGroup' requires attribute 'gidNumber'

虽然是出错信息,但是已经证明rfc2307bis已经生效了,posixGroup中gidNumber是必需的属性

 加入gidNumber后就可以完成了

root@mydebian210:~# cat > ~/add_group2_default_unique.ldif << EOF
> dn: cn=testgroup2,ou=web_ftp_groups,dc=mydebian210,dc=mydomain,dc=net
> objectClass: groupOfUniqueNames
> objectClass: posixGroup
> cn: testgroup2
> gidNumber: 1002
> description: testgroup2
> uniqueMember: uid=testuser,ou=web_ftp_users,dc=mydebian210,dc=mydomain,dc=net
> EOF
root@mydebian210:~# ldapadd -x -D cn=admin,dc=mydebian210,dc=mydomain,dc=net -w "secret_password" -f ~/add_group2_default_unique.ldif
adding new entry "cn=testgroup2,ou=web_ftp_groups,dc=mydebian210,dc=mydomain,dc=net"

 顺便再测试一下同一用户被加入了两个组时的memberOf查询结果

root@mydebian210:~# ldapsearch -x -LLL -H ldap:/// -b uid=testuser,ou=web_ftp_users,dc=mydebian210,dc=mydomain,dc=net dc memberof
dn: uid=testuser,ou=web_ftp_users,dc=mydebian210,dc=mydomain,dc=net
memberOf: cn=testgroup,ou=web_ftp_groups,dc=mydebian210,dc=mydomain,dc=net
memberOf: cn=testgroup2,ou=web_ftp_groups,dc=mydebian210,dc=mydomain,dc=net

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值