LDAP-账号管理系统

LDAP-账号管理系统

在centos7环境,搭建ldap-server:

## 1. 部署ldap-S
[root@ldapS ~]# yum install -y openldap openldap-servers openldap-clients openldap-devel migrationtools 

首先 生成加密密码:
[root@ldapS ~]# slappasswd 
New password: 
Re-enter new password: 
{SSHA}nuH+UiLFv78g87XL3zybnwK/WjeTWU/n

将dc=do-main 改为 dc=sgy(自定义名)
[root@ldapS /etc/openldap/slapd.d/cn=config]# vim olcDatabase\=\{1\}monitor.ldif 
  7  al,cn=auth" read by dn.base="cn=Manager,dc=sgy,dc=com" read by * none
	##增加管理员信息,自定义第一个dc= 

将dc=do-main 改为 dc=sgy(自定义名)
[root@ldapS /etc/openldap/slapd.d/cn=config]# vim olcDatabase\=\{2\}hdb.ldif
  8 olcSuffix: dc=sgy,dc=com
	##基准DN
  9 olcRootDN: cn=Manager,dc=sgy,dc=com
	##管理员用户的DN
 19 olcRootPW:{SSHA}nuH+UiLFv78g87XL3zybnwK/WjeTWU/n	# 添加这行,设置之前生成的密码
	##管理员用户的密码

准备数据库初始文件:
[root@ldapS /var/lib/ldap]# cp /usr/share/openldap-servers/DB_CONFIG.example .
[root@ldapS /var/lib/ldap]# mv DB_CONFIG.example DB_CONFIG
给当前目录设置权限 . 
[root@ldapS /var/lib/ldap]# chown -R ldap:ldap .	<---这有个点

[root@ldapS ~]# systemctl start slapd
[root@ldapS ~]# systemctl enable slapd

[root@ldapS ~]# netstat -antpl | grep slapd
tcp        0      0 0.0.0.0:389   0.0.0.0:*   LISTEN      1133/slapd
tcp6       0      0 :::389        :::*        LISTEN      1133/slapd

将配置加入数据库的schemas(模式)中:
[root@ldapS ~]# lftp 172.16.0.99
lftp 172.16.0.99:~> cd scripts/     
lftp 172.16.0.99:/scripts> get add_config-to_ldif.sh 

[root@ldapS ~]# chmod +x add_config-to_ldif.sh 
[root@ldapS ~]# ./add_config-to_ldif.sh
	没有报错就可以。

添加用户

写个脚本,添加10个用户:
[root@ldapS ~]# vim useradd.sh
#!/bin/bash
# 添加10个用户

if [ ! -d /ldaphome ]
    then
    mkdir /ldaphome
fi
echo -e "username\tpassword" > /root/userfile
for i in `seq 1 10`
do
    id ldap${i} &> /dev/null
    if [ $? -ne 0 ]
        then
        useradd ldap${i} -d /ldaphome/ldap${i}
        pass=$(tr -dc a-zA-Z0-9_# < /dev/urandom | head -c 6 | xargs)
        echo $pass | passwd --stdin ldap$i &> /dev/null
        echo -e "ldap${i}\t${pass}" >> /root/userfile
    fi
done

[root@ldapS ~]# cat userfile 
username	password
ldap1	#2cutH
ldap2	nhdVZj
ldap3	VwDhB_
ldap4	vqnyTj
ldap5	J_lYiM
ldap6	lZSBap
ldap7	WgC6#G
ldap8	IObNFD
ldap9	_mVFFV
ldap10	IGveyi

[root@ldapS ~]# tail /etc/passwd
[root@ldapS ~]# tail /etc/shadow

导入ldap数据库

将这10个用户的信息,导入到ldap数据库里:
[root@ldapS ~]# cd /var/lib/ldap/
[root@ldapS /var/lib/ldap]# ls
	== /var/lib/mysql

[root@ldapS ~]# tail /etc/passwd > /tmp/passwd
[root@ldapS ~]# tail /etc/shadow > /tmp/shadow
[root@ldapS ~]# tail /etc/group  > /tmp/group

编辑配置文件:
[root@ldapS ~]# cd /usr/share/migrationtools/
[root@ldapS /usr/share/migrationtools]# ls

migrate_common.ph文件主要是用于生成ldif文件使用
[root@ldapS /usr/share/migrationtools]# vim migrate_common.ph
 61     $NAMINGCONTEXT{'group'}             = "ou=Groups";
 71 $DEFAULT_MAIL_DOMAIN = "sgy.com";
 74 $DEFAULT_BASE = "dc=sgy,dc=com";
 90 $EXTENDED_SCHEMA = 1;

[root@ldapS /usr/share/migrationtools]# vim migrate_passwd.pl
188     open(SHADOW, "/tmp/shadow") || return;

生成基本框架:

[root@ldapS /usr/share/migrationtools]# ./migrate_base.pl > /tmp/base.ldif

编辑配置文件,只保留sgy(自定义的dc),People,Groups,其它都删除。
[root@ldapS /usr/share/migrationtools]# vim /tmp/base.ldif
dn: dc=sgy,dc=com
dc: sgy
objectClass: top
objectClass: domain
objectClass: domainRelatedObject
associatedDomain: sgy.com

dn: ou=People,dc=sgy,dc=com
ou: People
objectClass: top
objectClass: organizationalUnit
objectClass: domainRelatedObject
associatedDomain: sgy.com

dn: ou=Groups,dc=sgy,dc=com
ou: Groups
objectClass: top
objectClass: organizationalUnit
objectClass: domainRelatedObject
associatedDomain: sgy.com

生成用户和组的数据文件:

[root@ldapS /usr/share/migrationtools]# ./migrate_passwd.pl /tmp/passwd > /tmp/user.ldif
[root@ldapS /usr/share/migrationtools]# ./migrate_group.pl  /tmp/group  > /tmp/group.ldif
	== xxx.sql

将这3个ldif文件,导入数据库:
[root@ldapS ~]# ldapadd -x -W -D "cn=Manager,dc=sgy,dc=com" -f /tmp/base.ldif 
Enter LDAP Password: 
adding new entry "dc=sgy,dc=com"
adding new entry "ou=People,dc=sgy,dc=com"
adding new entry "ou=Groups,dc=sgy,dc=com"
	-x	进行认证
	-W  输入密码
	-D	绑定服务器的基准DN
	-f	使用的ldif文件
	cn=Manager,dc=sgy,dc=com	ldap的管理员用户
	输入的密码:生成的加密密码

[root@ldapS ~]# ldapadd -x -W -D "cn=Manager,dc=sgy,dc=com" -f /tmp/user.ldif
[root@ldapS ~]# ldapadd -x -W -D "cn=Manager,dc=sgy,dc=com" -f /tmp/group.ldif

查看用户的信息:
[root@ldapS ~]# ldapsearch -xWD "cn=Manager,dc=sgy,dc=com" -b "uid=ldap1,ou=People,dc=sgy,dc=com" -LLL
Enter LDAP Password:

配置客户端 ldap-client

ldap-client
[root@node1 ~]# yum install -y nss-pam-ldapd pam_krb5 setuptool

[root@node1 ~]# setup

在这里插入图片描述在这里插入图片描述
配置完成后,开启xshell,用ldap用户访问ldap-client

[c:\~]$ ssh [email protected]
-bash-4.2$ 
-bash-4.2$ su - 		没有家目录
Password: 
[root@node1 ~]# 

在ldap-server配置NFS,共享ldap用户的家目录

在ldap-server配置NFS,共享ldap用户的家目录:
[root@ldapS ~]# yum install -y nfs-utils

[root@ldapS ~]# vim /etc/exports
/ldaphome   172.16.0.0/16(rw,sync)

[root@ldapS ~]# systemctl start nfs
[root@ldapS ~]# systemctl enable nfs

在ldap-client,配置autofs,自动挂载nfs的共享:
[root@node1 ~]# yum install -y nfs-utils autofs

[root@node1 ~]# showmount -e 172.16.0.60
Export list for 172.16.0.60:
/ldaphome 172.16.0.0/16

[root@node1 ~]# mkdir /ldaphome
[root@node1 ~]# cp /etc/auto.misc /etc/auto.ldap	<--auto.misc文件是autofs生成的

[root@node1 ~]# vim /etc/auto.master
/ldaphome   /etc/auto.ldap

[root@node1 ~]# vim /etc/auto.ldap
*   -rw,soft,intr   172.16.0.60:/ldaphome/&		# 对应共享服务端的地址和目录
	* 所有的挂载点
	-rw	nfs的挂载选项
	& nfs-server端的共享目录

[root@node1 ~]# systemctl start autofs
[root@node1 ~]# systemctl enable autofs

[c:\~]$ ssh [email protected]
[ldap1@node1 ~]$ 

[ldap1@node1 ~]$ cp /etc/passwd .
[ldap1@node1 ~]$ ls
passwd

[root@ldapS ~]# cd /ldaphome/ldap1
[root@ldapS /ldaphome/ldap1]# ls
passwd

应用场景

在ldap-client上,可以直接使用ldap-server的用户:

应用1:ssh

应用2:vsftpd

[root@node1 ~]# yum install -y vsftpd
[root@node1 ~]# systemctl start vsftpd

[root@centos7-bj ~]# ftp 172.16.0.61
Connected to 172.16.0.61 (172.16.0.61).
220 (vsFTPd 3.0.2)
Name (172.16.0.61:root): ldap1
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.

应用3:samba

[root@node1 ~]# yum install -y samba

[root@node1 ~]# vim /etc/samba/smb.conf
[share]
    comment = test ldap
    path = /samba
    writable = yes
    create mask = 0664
    directory mask = 0775

[root@node1 ~]# mkdir /samba
[root@node1 ~]# chmod 1757 /samba/

[root@node1 ~]# smbpasswd -a ldap1
New SMB password:
Retype new SMB password:
Added user ldap1.
[root@node1 ~]# smbpasswd -a ldap2
New SMB password:
Retype new SMB password:
Added user ldap2.

[root@node1 ~]# systemctl start smb

==========================================

ldap的维护:

增加用户:

[root@ldapS ~]# ./useradd.sh 
	增加10个用户

保存新的用户名,组,密码,重新命名
[root@ldapS ~]# tail /etc/passwd > /tmp/newpasswd
[root@ldapS ~]# tail /etc/group  > /tmp/newgroup
[root@ldapS ~]# tail /etc/shadow >> /tmp/shadow 
	##shadow是 >>

导入新的数据
[root@ldapS /usr/share/migrationtools]# ./migrate_passwd.pl /tmp/newpasswd > /tmp/user1.ldif
[root@ldapS /usr/share/migrationtools]# ./migrate_group.pl /tmp/newgroup   > /tmp/group1.ldif

[root@ldapS ~]# ldapadd -xWD "cn=Manager,dc=sgy,dc=com" -f /tmp/user1.ldif 
[root@ldapS ~]# ldapadd -xWD "cn=Manager,dc=sgy,dc=com" -f /tmp/group1.ldif 

[root@node1 ~]# su - ldap11
[ldap11@node1 ~]$

删除用户:

[root@ldapS ~]# ldapdelete -xWD "cn=Manager,dc=sgy,dc=com" "uid=ldap1,ou=People,dc=sgy,dc=com"
Enter LDAP Password:

[root@node1 ~]# su - ldap1
su: user ldap1 does not exist

问题参考:

使用ldap用户登录ldap-client时,xshell提示访问密码被拒绝:
检查是否成功设置ldap密码,查看ldap用户时,是否可以查看到加密密码.

如果重新设置密码后,依旧无法登录,提示密码访问被拒绝
检查密码是否成功设置并成功导入数据库,如果没有这些问题,那么,重启client系统

如果 /ldaphome 下的家目录已经生成,但是命令行显示不对
检查对应用户的家目录权限是否是对应用户
ll /ldaphome/ldap1 # 正常情况 所属者和所属组应为该用户
检查autofs是否成功挂载,重新启动autofs

发布了57 篇原创文章 · 获赞 3 · 访问量 1004

猜你喜欢

转载自blog.csdn.net/weixin_42502744/article/details/103507790