经过2天的摸索,基本把ldap理明白了。下面是ldap在centos7上的安装步骤,包括与samba和NFS使用ldap认证的配置。中间遇到许多坑,会在其他文章里介绍。
为什么要用ldap呢?
ldap主要用作统一认证服务器,samba和nfs提供文件共享的服务。比如要使用samba做文件共享,在windows中访问共享文件是需要输入用户名密码,验证通过后才可以读或者写文件。在未配置ldap服务器以前,samba用户信息在本地保存,也就是说如果有多个samba服务器则需要在多台机器上重复建立认证账户信息,管理不方便。建立ldap后就可以将需要认证的用户全部放到ldap服务器上,这样就可以避免重复建立samba的认证账户,方便统一管理账户信息。
不管有没有配置ldap,samba的用户认证都有自己独立的一套密码与系统用户和ldap用户分开管理,提高安全性,在ldap中samba密码是用户类的一个属性。本人曾经尝试使用ldap用户密码或者系统密码认证samba,包括使用插件或者PAM认证,但是均为成功,目前只发现可以双向同步samba和系统用户密码的配置或者插件(samba-tools)。
下面方法亲测可用。欢迎大家拍砖指正。
1. 安装openldap
# yum install openldap-servers openldap-clients
# yum install -y openldap openldap-clients openldap-servers migrationtools
2.生成密码
# slappasswd
3.修改sldap.conf,没有的话,新建一个
# vi /etc/openldap/slapd.conf
-----------------------------------------------------------------------------------------
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/nis.schema
include /etc/openldap/schema/samba.schema
allow bind_v2
pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args
database bdb
suffix "dc=srv,dc=world"
rootdn "cn=root,dc=srv,dc=world"
rootpw {SSHA}tTKkeFCUudih3Vk5u3Or0qvzdelUa6ka //替换成之前生成的密码
password-hash {SSHA}
directory /var/lib/ldap
index cn,sn,uid,displayName pres,sub,eq
index uidNumber,gidNumber eq
index sambaSID eq
index sambaPrimaryGroupSID eq
index sambaDomainName eq
index objectClass pres,eq
index default sub
--------------------------------------------------------------------------------------------------------------
4. 清空并生成sldap.d 文件夹文件
# cd /etc/openldap/slapd.d
# rm -rf *
5. 重新生成 sldap.d文件夹内容和数据库文件
# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG #DB的配置文件
# slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
# slaptest -u -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
# chown -R ldap:ldap /etc/openldap/
6. 配置模板文件basedomain.ldif
# vi basedomain.ldif
--------------------------------------------------------
dn: dc=srv,dc=world objectClass: top objectClass: dcObject objectclass: organization o: Server World dc: Srv dn: cn=root,dc=srv,dc=world objectClass: organizationalRole cn: root description: Directory Manager dn: ou=People,dc=srv,dc=world objectClass: organizationalUnit ou: People dn: ou=Group,dc=srv,dc=world objectClass: organizationalUnit ou: Group
-------------------------------------------------------------------
7. 生成需要加入ldap中的用户文件
# getent passwd | tail -n 2 > /root/users # getent group | tail -n 2 > /root/groups # getent shadow | tail -n 2 > /root/shadow //(获得需要的用户密码文件) # cd /usr/share/migrationtools 【 注:在7部分的以下几步操作均在/usr/share/migrationtools目录下进行】 7. 1 修改ldap 密码生成工具 # vim migrate_passwd.pl 【 注:search /etc/shadow and replace it into /root/shadow on Line Number 188.】 行 188: /etc/shadow ----> /root/shadow 7.2 修改migrate_tools的公共文件 # vi migrate_common.ph ------------------------------------------------------- 行 61: $NAMINGCONTEXT{'passwd'} = "ou=People"; $NAMINGCONTEXT{'group'} = "ou=Group"; 行 71: $DEFAULT_MAIL_DOMAIN = "srv.world"; # Default base $DEFAULT_BASE = "dc=srv,dc=world"; $EXTENDED_SCHEMA = 1; --------------------------------------------------------------- 7. 3 生成用户的ldif 文件 users.ldif ,准备加入到ldap中。 # ./migrate_passwd.pl /root/users > users.ldif # ./migrate_group.pl /root/groups > groups.ldif # ldapadd -x -D cn=root,dc=srv,dc=world -W -f basedomain.ldif # ldapadd -x -D cn=root,dc=srv,dc=world -W -f users.ldif 7. 4 检验ldap是否设置成功,数据检测 # ldapsearch -x -b "dc=srv,dc=world" -H ldap://127.0.0.1 7. 5 删除 资源, 【注: 非必须步骤,当用户加入后,在加入时就会出错,需要先删除再加入】 # ldapdelete -x -D "cn=root,dc=srv,dc=world" -w 123456 "uid=ldapuser1,ou=People,dc=srv,dc=world" 8.重启 slapd 服务 # systemctl restart slapd
【开始设置samba 配置文件】
1. 配置samba的配置文件
# vi /etc/samba/smb.config
----------------------------------------
[global]
workgroup = TEST
netbios name = OSGW
passdb backend = ldapsam:ldap://localhost
ldap admin dn = "cn=root,dc=srv,dc=world"
ldap ssl = off
ldap suffix = "dc=srv,dc=world"
#security = user
ldap user suffix = "ou=People"
ldap group suffix = "ou=Group"
#unix password sync = yes # 红色部分是密码同步部分
#ldap password sync = yes
#pam password change = yes
[public]
path = /home/guests
browseable = yes
writable = yes
guest ok = yes
create mask = 0666
directory mask = 0777
-------------------------------------------------------------
2. 配置samba对ldap操作密码
# smbpasswd -w 123456
3. 测试smb的配置文件
# testparm
4. 添加samba用户。
【注:添加的用户必须是ldap的系统用户ldapuser1 ,ldapuser2。添加在ldap中不存在的用户会failed】
# pdbedit -a ldapuser1
5.重启服务
# systemctl restart smb
【开始配置NFS服务】
1.用root权限设置ldap客户端 authconfig-tui
# yum install nss-pam-ldapd pam_ldap openldap-clients
2. 运行 authconfig-tui 配置客户端
【注:空格键为选择和不选择】
3. 填写server和base DN
Server项可以填写IP地址或者域名,端口默认389
4. 选择ok后,可以切换到ldap 的user
# su ldapuser1
输入 passwd
【root 切换到 ldap 用户不用passwd,其他用户切换则需要输入ldap用户的密码】
参考文章:
http://www.server-world.info/en/note?os=CentOS_7&p=openldap&f=1 //日本人写的,精细规范,主要参考部署ldap server 部分 http://jingyan.baidu.com/album/fec4bce2747e12f2618d8be1.html?picindex=3 // 百度知道,参考测试部分 http://ly36843.blog.51cto.com/3120113/1673892 //centos6.4 配置ldap服务器 http://blog.chinaunix.net/uid-21926461-id-5676013.html //ldap 命令较全
http://luyx30.blog.51cto.com/1029851/1220819/ //ldap 和nfs
http://blog.csdn.net/post_yuan/article/details/53129735 //ldap 的正确安装方式
http://wenku.baidu.com/link?url=nSTpGJ4fELHdjgo7I6eDIgkjXwdguJEv-_O2Y7aIoDzyYyID2f6Bt0acFACoduAuGjrurcC1iUohiP8_UHXsFgBfSckQscrzwxg4LZgsh2C //LDAP扫盲
http://download.gna.org/smbldap-tools/docs/samba-ldap-howto/ //权威