在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
将这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
[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用户的家目录:
[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的用户:
[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.
[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
==========================================
[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