Linux LDAP用户同步实现 (ldap linux用户 同步)

Linux LDAP用户同步是为了在多个系统中实现用户数据的同步,这是一种非常高效的方式。在实际应用中,很多企业都会使用类似的技术来实现用户数据的备份和恢复。下面将介绍一种基于Linux的LDAP用户同步实现方法并讲解其实现步骤。

1、LDAP的基本介绍

LDAP(Lightweight Directory Access Protocol,轻量目录访问协议),是基于X.500标准制定的一种网络协议,主要用于访问分布式的目录服务。

在LDAP中,有三个常见的LDAP概念,分别是:entry,attribute和DN。

entry(条目):所谓条目是指就像我们平时使用的名片一样,其中包含了很多信息,这些信息都是我们在条目中填写的。

attribute(属性):每个条目都有多个属性,例如姓名,,地址等等。每个属性又有一个或多个值,比如号码就有可能有多个,一个家里可能有多个号码,所以它就是多值属性。

DN(Distinguished Name, 区别名称):DN记录了一个条目的完整路径,比如一般的DN路径格式是:countryName=CN, organizationName=Company, commonName=username, 读作cn=username, o=Company, c=CN。

2、LDAP的用户同步

在实际应用中,经常需要对多台机器上的用户进行同步,这里提供一种基于LDAP的用户同步实现方案:

Step1:搭建LDAP服务器

我们需要搭建一个OpenLDAP服务器,在CentOS下一键安装命令如下:

yum install -y openldap openldap-servers openldap-clients

在安装完成后,我们需要对LDAP进行一些配置:

1. 制作LDAP管理员用户

slappasswd -s ‘password’ 生成加密后的密码

vim manager_pw.ldif #编写管理员密码文件

#manager_pw.ldif内容

dn: olcDatabase={0}config,cn=config

changetype: modify

replace: olcRootPW

olcRootPW: {SHA}4QrcOUm6Wau+VuBX8g+IPg==

2. 修改LDAP配置文件

vim cn=config.ldif #修改LDAP配置文件

#cn=config.ldif内容

dn: cn=config

changetype: modify

replace: olcLogLevel

olcLogLevel: 4278190079

replace: olcDbConfig

olcDbConfig: { “maxSize”: 1073741824, “maxDnInCache”: 500000, “minMetadata”: 0

0320230000, “maxPageSize”: 1000, “checkpoint”: 512023 }

add: olcAccess

olcAccess: {0}to * by dn.base=”gidNumber=0+uidNumber=0,cn=peercred,cn=external

auth,cn=unixmen,cn=applications,dc=example,dc=com” manage by * none

add: olcAllows

ldapmodify -Y EXTERNAL -H ldapi:/// -f manager_pw.iff #装载管理员密码

ldapadd -Y EXTERNAL -H ldapi:/// -f cn=config.ldif #加载配置文件

ldapadd -x -D ‘cn=admin,dc=test,dc=com’ -f ./modules.ldif # 安装相关模块

ldapadd -x -D ‘cn=admin,dc=test,dc=com’ -w password -f schema_base.ldif # 安装基本模式

ldapadd -x -D ‘cn=admin,dc=test,dc=com’ -w password -f custom_schema.ldif # 安装自定义模式

Step2:配置LDAP服务器

完成LDAP服务器的搭建后,我们需要对LDAP服务器进行相应的配置。LDAP配置文件位于/etc/openldap/ldap.conf下。我们需要将binddn和bindpw设为LDAP管理员的DN。以管理员用户cn=admin,dc=test,dc=com为例,可以进行如下设置:

BASE test.com

URI ldap://myldap.test.com

BIND_DN cn=admin,dc=test,dc=com

BIND_PW password

PORT 389

Step3:同步LDAP用户

接下来,我们就可以开始同步LDAP用户了。在LDAP服务器上,使用ldapadd命令添加用户信息(下面以一个普通用户为例):

ldapadd -x -D “cn=admin,dc=test,dc=com” -w “password”

dn: uid=liuwei,ou=People,dc=test,dc=com

objectClass: top

objectClass: person

objectClass: organizationalPerson

objectClass: inetOrgPerson

objectClass: posixAccount

objectClass: shadowAccount

cn: liuwei

sn: liu

givenName: wei

uid: liuwei

ml: liuwei@test.com

userPassword: {CRYPT}password

loginShell: /bin/bash

uidNumber: 1029

gidNumber: 1029

homeDirectory: /home/liuwei

shadowExpire: -1

shadowFlag: 0

shadowWarning: 7

shadowMin: 8

shadowMax: 999999

shadowLastChange: 11142

EOF

在完成向LDAP服务器添加用户之后,我们需要在其他服务器上进行LDAP用户的同步。同步的时候我们需要使用nslcd服务,配置/etc/nslcd.conf文件,使nslcd连接到LDAP服务器并同步用户信息。

# /etc/nslcd.conf, nslcd configuration file.

#

# See nslcd.conf(5) for detls.

# The user and group nslcd should run as.

uid nslcd

gid ldap

# The uri pointing to the LDAP server to use for name lookups.

# Multiple entries may be specified.

uri ldap://myldap.test.com

# The search base that will be used for all queries.

base dc=test,dc=com

# SSL options

#ssl on

#ssl start_tls

#tls_reqcert never

# The LDAP version to use.

ldap_version 3

# The distinguished name of the search user.

binddn cn=admin,dc=test,dc=com

bindpw password

# The directory where the runtime data will be stored.

# This directory should be mode 0700, owned by nslcd:nslcd.

#runtime_dir /var/run/nslcd

# The location at which the LDAP server will read the configuration.

# This file should be mode 0640, owned by an unprivileged user and

# should contn credentials for binding the server, etc.

#rootpwmoddn cn=admin,dc=test,dc=com

#rootpwmodpw password

#nslcd_params -d

完成以上步骤即可完成LDAP用户的同步,我们可以在其他服务器上通过命令行或者web管理界面查询到刚刚添加的用户信息。

3、

通过此篇文章,我们了解到了如何利用LDAP服务器实现Linux用户的同步。在实际应用中,这种技术可以大大提高企业系统的稳定性和安全性。希望此篇文章对您有所帮助。

相关问题拓展阅读:

ldap 认证samba 后,密码同步麻烦请教!

samba其实可以改验证方式,不要自己的数据库,直接用系统的密码

如何将域用户导入linux中

1.配置DNS

  # vi /etc/resolv.conf

  nameserver 192.168.2.30

  nameserver 192.168.2.32

  禅宽# vi /etc/host.conf

  # nslookup 192.168.2.32 DNS查找

  # net time SET 192.168.2.32 时间同步,客户端以服务器时间为哗旁准

  2.samba

  首先确乱袭橡保Linux系统中安装了samba包,并用下述命令来检查samba包的基础库支持,一般的RPM安装都不会有问题。

  # bd -b | grep LDAP

  HAVE_LDAP_H

如何在Linux下通过ldapsearch查询活动目录的内容

从Win2023开始.微软抛弃NT域而采用活动目录来管理Windows域.而活动目录就是微软基于遵守LDAP协议的目录服务.如果用扫描器扫描的话可以发现活动目录的389端扰渗口是打开的.而且微软虽然对这个协议都擅自作了些改动.但都集中在Replication等同步的部分.其他的部分是基本和其他产品兼容的.所以ldapsearch工具可以顺利的搜索AD中的记录.其实AD最缓洞脊大的客户就是微软自己.所以在服务器配置向导中才用DC作为正式的名称.AD这个名称反而次要.AD在配置好之颤笑后就有了健全的目录树结构.AD的用户的objectclass为User,默认的用户记录位于Users下,而Users的objectclass就是Container.这样一个AD用户的DN可能是”cn=username,cn=users,dc=domain-suffix”.AD默认的安全策略不允许”空”绑定(既bind(“”等DN为空的一系列绑定函数).所以必需要有合法验证的绑定才行:

ldapsearch -x -W -D “cn=username,cn=users,dc=domain-suffix” -b “basedn” -h host

或者是

ldap search -x -w cred -D “cn=username,cn=users,dc=domain-suffix” -b “basedn” -h host

其中-x对应API中的iple_bind*().-w/-W 表示需要密码 -D “绑定的DN” -b “开始搜索的DN” -h 接主机的IP或者域名.

举例:我在学校有一台实验用的主机troy配置为”osdn.zzti.edu.cn”主域控制器.假如我在我装有fedora的笔记本osiris上执行ldapsearch,命令如下:

ldapsearch -x -W -D “cn=administrator,cn=users,dc=osdn,dc=zzti,dc=edu,dc=cn” -b “cn=administrator,cn=users,dc=osdn,dc=zzti,dc=edu,dc=cn” -h troy.osdn.zzti.edu.cn

这样就回返回用户administrator的信息:

# extended LDIF

#

# LDAPv3

# base ; with scope sub

# filter: (objectclass=*)

# requesting: ALL

#

# Administrator, Users, osdn.zzti.edu.cn

dn: CN=Administrator,CN=Users,DC=osdn,DC=zzti,DC=edu,DC=cn

objectClass: top

objectClass: person

objectClass: organizationalPerson

objectClass: user

cn: Administrator

description:: 566h55CG6K6h566X5py6KOWfnynnmoTlhoXnva7luJDmiLc=

distinguishedName: CN=Administrator,CN=Users,DC=osdn,DC=zzti,DC=edu,DC=cn

instanceType: 4

whenCreated:8.0Z

whenChanged:4.0Z

uSNCreated: 8194

memberOf: CN=Group Policy Creator Owners,CN=Users,DC=osdn,DC=zzti,DC=edu,DC=cn

memberOf: CN=Domain Admins,CN=Users,DC=osdn,DC=zzti,DC=edu,DC=cn

memberOf: CN=Enterprise Admins,CN=Users,DC=osdn,DC=zzti,DC=edu,DC=cn

memberOf: CN=Schema Admins,CN=Users,DC=osdn,DC=zzti,DC=edu,DC=cn

memberOf: CN=Administrators,CN=Builtin,DC=osdn,DC=zzti,DC=edu,DC=cn

uSNChanged: 13895

name: Administrator

objectGUID:: z44SriNF40SGBgQson8RtA==

userAccountControl: 66048

badPwdCount: 0

codePage: 0

countryCode: 0

badPasswordTime:37500

lastLogoff: 0

lastLogon:43750

pwdLastSet:00000

primaryGroupID: 513

objectSid:: AQUAAAAAAAUVAAAAfA5HVz/NVF7R0u429AEAAA==

adminCount: 1

accountExpires:775807

logonCount: 17

sAMAccountName: Administrator

sAMAccountType:

objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=osdn,DC=zzti,DC=edu,DC

=cn

isCriticalSystemObject: TRUE

# search result

search: 2

result: 0 Success

# numResponses: 2

# numEntries: 1

ldap linux用户 同步的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于ldap linux用户 同步,Linux LDAP用户同步实现,ldap 认证samba 后,密码同步麻烦请教!,如何将域用户导入linux中,如何在Linux下通过ldapsearch查询活动目录的内容的信息别忘了在本站进行查找喔。


数据运维技术 » Linux LDAP用户同步实现 (ldap linux用户 同步)