官网原文:点击打开链接
LDAP:Lightweight Directory Access Protocol,百科:点击打开链接
参考了http://www.cnblogs.com/obpm/archive/2010/08/28/1811065.html 此篇博文,对ldap文件目录结构有所了解。
官网说的比较具体,英语好的童鞋可以好好去看看,本文只讲如何简单安装和使用ldap
修改/etc/hosts配置文件
127.0.1.1 hostname.example.com hostname
127.0.1.1 ubuntu
127.0.1.1 ubuntu.example.com ubuntu
这样做的目的是让你自己有一个rootDN:dc=example,dc=com自己注意看和hosts文件对应的
下面安装
sudo apt-get install slapd ldap-utils
进入到/etc/ldap
sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config dn
dn: cn=config
dn: cn=module{0},cn=config
dn: cn=schema,cn=config
dn: cn={0}core,cn=schema,cn=config
dn: cn={1}cosine,cn=schema,cn=config
dn: cn={2}nis,cn=schema,cn=config
dn: cn={3}inetorgperson,cn=schema,cn=config
dn: olcBackend={0}hdb,cn=config
dn: olcDatabase={-1}frontend,cn=config
dn: olcDatabase={0}config,cn=config
dn: olcDatabase={1}hdb,cn=config
以上看到是ldap的配置文件,目录结构如下(还是12.04的那篇文章上有的):
/etc/ldap/slapd.d/
├── cn=config
│ ├── cn=module{0}.ldif
│ ├── cn=schema
│ │ ├── cn={0}core.ldif
│ │ ├── cn={1}cosine.ldif
│ │ ├── cn={2}nis.ldif
│ │ └── cn={3}inetorgperson.ldif
│ ├── cn=schema.ldif
│ ├── olcBackend={0}hdb.ldif
│ ├── olcDatabase={0}config.ldif
│ ├── olcDatabase={-1}frontend.ldif
│ └── olcDatabase={1}hdb.ldif
└── cn=config.ldif
Explanation of entries: |对实体的解释
cn=config: global settings |全局设定
cn=module{0},cn=config: a dynamically loaded module |动态读取模块
cn=schema,cn=config: contains hard-coded system-level schema |包含代码和系统级的表
cn={0}core,cn=schema,cn=config: the hard-coded core schema |硬代码核心表(这都是什么呀,原谅我渣渣的英语水平)
cn={1}cosine,cn=schema,cn=config: the cosine schema |cosine表
cn={2}nis,cn=schema,cn=config: the nis schema |nis表
cn={3}inetorgperson,cn=schema,cn=config: the inetorgperson schema |inetorgperson表,这三个貌似是ldap的核心文件,具体干什么的,我不清楚
olcBackend={0}hdb,cn=config: the 'hdb' backend storage type |hdb后端存储类型
olcDatabase={-1}frontend,cn=config: frontend database, default settings for other databases |前端数据库,其他数据库的默认设置
olcDatabase={0}config,cn=config: slapd configuration database (cn=config) |slapd配置的数据库
olcDatabase={1}hdb,cn=config: your database instance (dc=examle,dc=com) |你自己的数据库实例
ldapsearch -x -LLL -H ldap:/// -b dc=example,dc=com dn
返回结果:
dn: dc=example,dc=com
dn: cn=admin,dc=example,dc=com
Explanation of entries:
dc=example,dc=com: base of the DIT |DIT的基础目录,就是BASE DN
cn=admin,dc=example,dc=com: administrator (rootDN) for this DIT (set up during package install) |rootDN,ldap的管理员
dn: ou=People,dc=example,dc=com
objectClass: organizationalUnit
ou: People
dn: ou=Groups,dc=example,dc=com
objectClass: organizationalUnit
ou: Groups
dn: cn=miners,ou=Groups,dc=example,dc=com
objectClass: posixGroup
cn: miners
gidNumber: 5000
dn: uid=john,ou=People,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: john
sn: Doe
givenName: John
cn: John Doe
displayName: John Doe
uidNumber: 10000
gidNumber: 5000
userPassword: johnldap
gecos: John Doe
loginShell: /bin/bash
homeDirectory: /home/john
ldapadd -x -D cn=admin,dc=example,dc=com -W -f add_content.ldif
Enter LDAP Password: ********
adding new entry "ou=People,dc=example,dc=com"
adding new entry "ou=Groups,dc=example,dc=com"
adding new entry "cn=miners,ou=Groups,dc=example,dc=com"
adding new entry "uid=john,ou=People,dc=example,dc=com"
ldapsearch -x -LLL -b dc=example,dc=com 'uid=john' cn gidNumber
dn: uid=john,ou=People,dc=example,dc=com
cn: John Doe
gidNumber: 5000
查询命令的一些解释:
-x: "simple" binding; will not use the default SASL method
-LLL: disable printing extraneous information
uid=john: a "filter" to find the john user
cn gidNumber: requests certain attributes to be displayed (the default is to show all attributes)