OpenLDAP操作与Samba集成全解析
立即解锁
发布时间: 2025-08-25 00:10:36 阅读量: 2 订阅数: 9 

### OpenLDAP操作与Samba集成全解析
#### 1. OpenLDAP基本操作
在OpenLDAP的使用中,我们会遇到一些关于对象类属性使用的问题。例如,为何使用`inetOrgPerson`对象类的`uid`属性,以及为何用`organizationalPerson`对象类提供`ou`属性而非常用的`organizationalUnit`对象类。
在示例中,使用`inetOrgPerson`对象类的`uid`属性而非`cn`,是因为`uid`通常用于保存类似Linux用户名的唯一值,而`cn`可能包含非唯一的真实姓名。`sn`属性用于存储姓氏,`givenName`用于存储全名以提供额外信息。选择`organizationalPerson`对象类来表示`ou`属性,是由添加到数据库的记录信息类型决定的。之前创建`Programmer`和`Tester`组时使用`organizationalUnit`,是因为它适合该任务;而这次是要实际表示之前创建组中的人员。
添加条目可使用以下命令:
```bash
ldapadd -x -D "cn=Manager,dc=my-domain,dc=com" -W -f third.ldif
```
##### 1.1 搜索条目
`ldapsearch`工具可用于搜索OpenLDAP数据库中的记录,还能过滤结果以提高准确性,其语法如下:
```bash
ldapsearch –x –D "target_DN" –W –b "starting_point" "(filter)"
```
- `target_DN`:要搜索记录的数据库的可分辨名称。
- `-b`:搜索的起始点,若留空,OpenLDAP将从可分辨基础DN开始从上到下搜索到最后一条记录。
- `(filter)`:根据提供的模式缩小搜索范围,模式必须使用属性,也可接受通配符。
- `-W`:让`ldapsearch`在搜索前在shell中交互式询问目录管理器的密码。
例如,搜索与`Programmer`组织单位相关的记录:
```bash
ldapsearch -x -D "cn=Manager,dc=my-domain,dc=com" –W -b "ou=Programmer,dc=my-domain,dc=com"
```
使用过滤器搜索`givenName`以`Lisa`开头的测试人员:
```bash
ldapsearch -x -D "cn=Manager,dc=my-domain,dc=com" –W -b "ou=Tester,dc=my-domain,dc=com" "(givenName=Lisa*)"
```
##### 1.2 修改条目
使用`ldapmodify`命令可更改属性值、添加和删除属性,语法如下:
```bash
ldapmodify -x -D "target_DN" -W -f target_file
```
- `-x`:使用简单认证而非SASL库,使用目标数据库`rootpw`指令中的值。
- `-D`:使用`target_DN`指定的可分辨名称分配目标数据库以添加内容。
- `-W`:让`ldapmodify`在shell中交互式询问目录管理器的密码。
- `-f`:指定LDIF文件。
`ldapmodify`与`ldapadd`命令语法相似,`ldapadd`实际上是`ldapmodify –a`。二者的区别在于LDIF条目中能否使用`changetype`属性。`changetype`属性必须使用`modify`值,以告知OpenLDAP要对条目进行更改,更改格式如下:
```
dn: target_DN
changetype: modify
operation_attribute: target_attribute
target_attribute: target_attribute_value
```
- `dn`:指向需要更改的记录。
- `operation_attribute`:所需的修改属性,值可以是`add`、`replace`或`delete`。
- `target_attribute`:记录的实际属性。
- `target_attribute_value`:要更改的值。
创建`fourth.ldif`文件,内容如下:
```
dn: uid=frank,ou=Tester,dc=my-domain,dc=com
changetype: modify
add: description
description: Expert Senior Software Tester
dn: uid=lisa,ou=Tester,dc=my-domain,dc=com
changetype: modify
replace: givenName
givenName: Misa Hayase
```
执行修改命令:
```bash
ldapmodify -x -D "cn=Manager,dc=my-domain,dc=com" -W -f fourth.ldif
```
##### 1.3 删除条目
使用`ldapdelete`命令可从数据库中删除不需要的条目,语法如下:
```bash
ldapdelete –x –D "target_DN" –W "target_entry"
```
- `target_DN`:数据库和目录管理器的可分辨名称。
- `target_entry`:要删除的记录的完整可分辨名称。
例如,删除Frank的记录:
```bash
ldapdelete -x -D "cn=Manager,dc=my-domain,dc=com" -W "uid=frank,ou=Tester,dc=my-domain,dc=com"
```
##### 1.4 创建备份
使用`slapcat`命令可备份数据库,它能将`bdb`或`hdb`数据库转换为更易读的LDIF格式,语法如下:
```bash
slapcat –b "target_DB" –l "target_backup_file"
```
- `-b`:目标数据库的后缀值。
- `-l`:指定转换后的数据库应保存的文件,若文件不存在将被创建。
备份`my-domain.com`数据库:
```bash
slapcat -b "dc=my-domain,dc=com" -l my-domain.ldif
```
可使用`slapadd`工具恢复备份。
需要注意的是,`slapcat`、`slapadd`和`slapauth`等工具即使服务器未运行也可使用,而`ldapadd`、`ldapmodify`和`ldapdelete`命令需要服务器运行才能使用。`slapcat`和`slapadd`更适合OpenLDAP服务器的离线管理,在恢复包含大量条目的备份时推荐使用;`ldapadd`和`ldapdelete`在服务器可接受请求时更适用,应避免同时使用`slap`和`ldap`命令,以免导致数据搜索不一致。
#### 2. OpenLDAP与Samba集成
将OpenLDAP与Samba结合使用,可创建类似早期NIS/NFS组合的设置。Samba服务器作为域控制器,提供共享并接受Windows客户端;OpenLDAP服务器为Samba服务器提供账户信息,如文件共享和打印机信息。
##### 2.1 安装Perl模块
在使用其他工具进行OpenLDAP和Samba设置之前,需安装一些Perl模块,包括`Crypt::SmbHash`、`Digest::SHA1`、`Net::LDAP`和`Unicode::MapUTF8`。
安装步骤如下:
1. 安装GNU编译器工具:
```bash
yum insta
```
0
0
复制全文
相关推荐









