OpenLDAP 和 Posix 组/帐户

OpenLDAP 和 Posix 组/帐户

我无法将 posix 用户/组添加到这个新创建的 ldap 目录。OpenLDAP 版本是 2.4.19。

我填充的 ​​LDAP 目录的 LDIF 可能是问题所在,但我不确定下一步需要做什么......

dn: dc=company,dc=net,dc=au
objectClass: dcObject
objectClass: organization
o: Company Pty Ltd
dc: company

dn: cn=manager,dc=company,dc=net,dc=au
objectClass: organizationalRole
cn: Manager

dn: ou=People,dc=company,dc=net,dc=au
objectClass: organizationalUnit
objectClass: top
ou: People

dn: ou=Groups,dc=company,dc=net,dc=au
objectClass: organizationalUnit
objectClass: top
ou: Groups

有人可以教育我吗:)


更新:我添加了nis.schema,我期望它可以解决问题,因为它具有我想要的所有 posix* 类。但是,我现在收到以下错误:

/etc/openldap/schema/nis.schema: line 203 objectclass: AttributeType not found: "manager"
/opt/openldap/etc/openldap/slapd.conf: line 6: <include> handler exited with 1!
slapd destroy: freeing system resources.
slapd stopped.
connections_destroy: nothing to destroy.

的相关部分nis.schema,~第 203 行如下......

objectclass ( 1.3.6.1.1.1.2.6 NAME 'ipHost'
    DESC 'Abstraction of a host, an IP device'
    SUP top AUXILIARY
    MUST ( cn $ ipHostNumber )
    MAY ( l $ description $ manager ) )

我会继续阅读。

答案1

我想我已经明白了 - 一旦我读完,我会发布根本原因和详细的解决方案;但就目前而言 - 简而言之 - 我还没有包含适当的模式文件。

posixAccount 是一个辅助类,因此它是完全可选的,可以“附加”到所需的结构上 - 无论是个人、组织人员还是 interOrgPerson。


不,我以为我已经接近了,但仍然没有运气。为了添加 nis.schema,我必须添加一些先决条件架构,所以现在我有...

include         /etc/openldap/schema/core.schema
include         /etc/openldap/schema/cosine.schema
include         /etc/openldap/schema/inetorgperson.schema
include         /etc/openldap/schema/nis.schema

这解决了 slapd 无法启动的问题,但是,我仍然无法在 ldap mgmt web 界面的任何地方看到任何 posix* 类。

答案2

我无法为您提供有关 phpldap 的太多帮助,因为我从未使用过它(我更喜欢ApacheDirectoryStudio或 openldap 的命令行工具),但如果您可以使用通用 LDIF 文件,请尝试这个:

dn: uid=juser,ou=People,dc=company,dc=net,dc=au
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: posixAccount
objectClass: top
cn: Joe User
gidNumber: 100
homeDirectory: /home/juser
uid: juser
uidNumber: 1004
gecos: Joe User
givenName: Joe
loginShell: /bin/bash

...看看它是否有效?

无论如何,我强烈建议使用 ApacheDirectoryStudio 作为通用 LDAP/schema 浏览器。

答案3

你的答案是正确的;你需要在 slapd.conf 中添加如下模式并重新启动:

注意:顺序很重要!

include         /etc/openldap/schema/corba.schema
include         /etc/openldap/schema/core.schema
include         /etc/openldap/schema/cosine.schema
include         /etc/openldap/schema/duaconf.schema
include         /etc/openldap/schema/dyngroup.schema
include         /etc/openldap/schema/inetorgperson.schema
include         /etc/openldap/schema/java.schema
include         /etc/openldap/schema/misc.schema
include         /etc/openldap/schema/nis.schema
include         /etc/openldap/schema/openldap.schema
include         /etc/openldap/schema/ppolicy.schema
include         /etc/openldap/schema/collective.schema

然后您可以通过 ldif 文件添加 POSIX 用户:

# User primary group
dn: cn=ussergroup,ou=groups,dc=me,dc=com
cn: ussergroup
objectClass: top
objectClass: posixGroup
gidNumber: 10001

# User account
dn: uid=user,ou=users,dc=me,dc=com
cn: user
givenName: user
sn: user
uid: user
uidNumber: 10001
gidNumber: 10001
homeDirectory: /home/user
mail: [email protected]
objectClass: top
objectClass: posixAccount
objectClass: shadowAccount
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
loginShell: /bin/bash
userPassword: {CRYPT}*

答案4

您可以尝试使用迁移脚本来生成基本 ldif。在我的 RHEL 安装中,它们位于/usr/share/openldap/migration/,当然,根据您的发行版,它们可能会位于其他地方。

migrate_passwd.pl将为您提供您的用户和migrate_group.pl您的组(两者都很明显)。如果合适,您还可以使用migrate_all_online.sh从当前系统吸取所有内容并将其直接转储到当前正在运行的 LDAP 中(然后根据需要修剪或添加)。

相关内容