目录:
CentOS 6.9(其实都要不多,也就CentOS7和CentOS6某些指令不一样而已)
安装源DVD文件:http://mirrors.163.com/centos/6.9/isos/x86_64/
下载下来这两个,就可以开始了
下载了CentOS6.9的DVD,它的DVD文件是两个,所以就要把这两个文件合并成一个iso来使用。
把这两个文件放到系统中,假设位置分别为/home/CentOS-DVD1.iso和/home/CentOS-DVD2.iso
1.创建相应操作文件夹
mkdir -p /mnt/dvd1 /mnt/dvd2 /mnt/iso
2.挂在这两个iso文件
mount mount -o loop /home/CentOS-DVD1.iso /mnt/dvd1
mount mount -o loop /home/CentOS-DVD2.iso /mnt/dvd2
3.复制dvd1的所有内容到/mnt/iso下
cp -r /mnt/dvd1/* /mnt/iso/
4.复制dvd2下Packages目录下的所有的rpm包到/mnt/iso/Packages下
cp -r /mnt/dvd2/Packages/*.rpm /mnt/iso/Packages/
5.合并TRANS.TBL文件
cat /mnt/dvd[12]/Packages/TRANS.TBL|sort > /mnt/iso/Packages/TRANS.TBL
6.备份yum配置文件
cd /etc/yum.repos.d
rename .repo .repo.bak *.repo
7.复制一个新的配置文件
cp CentOS-Media.repo.bak CentOS-Media.repo
8.编辑这个CentOS-Media.repo修改中间的三项
vi CentOS-Media.repo
[c6-media]
name=CentOS-\$releasever - Media
baseurl=file:///mnt/iso
gpgcheck=0
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
9.生效yum配置
yum clean all
yum upgrade
yum makecache
iso制作完成
1.关闭防火墙
/etc/init.d/iptables stop && chkconfig iptables off
2.关闭NetworkManager(非图形化界面的最小安装系统可以忽略)
/etc/init.d/NetworkManager stop && chkconfig NetworkManager off
3.SeLinux设为disabled
使用getenforce
命令查看是否为Disabled,若不是,则修改。
运行命令setenforce 0
,再getenforce
的时候为permissive
修改配置文件:vi /etc/sysconfig/selinux
把 SELINUX=disabled 保存
4.重启电脑
shutdown -r now
1.执行安装
yum -y install openldap openldap-servers openldap-clients openldap-devel compat-openldap
安装完成后可以使用tail -n 1 /etc/passwd
结果:
ldap:x:55:55:LDAP User:/var/lib/ldap:/sbin/nologin
还可以通过rpm -qa|grep openldap
看到安装了5个软件包
2.复制配置文件
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf
3.生成密码
slappasswd >> /etc/openldap/slapd.conf
然后让你输入两次密码,密码你来定 这条命令是将输出结果输入到slapd.conf文件尾部
4.修改slapd.conf文件内容
vi /etc/openldap/slapd.conf
1) 文件尾部则出现"{SSHA}sdjajdsdaskdjaxxxxx"一串密文密码 在非编辑状态:
光标放到密文密码这一行按yy
使用:set nu
来显示行号
去大约在123行附近,准确的说是
# rootpw secret
这一行后面按p
则粘贴到这一行,前面添加"rootpw"
注意rootpw必须要顶格,roowpw与密文密码之间大约有三个TAB键,密文跟secret的横向位置相同,最终达到的效果是这样的:
# rootpw secret
rootpw {SSHA}sdjajdsdaskdjaxxxxx
不要忘记删除最后一行的密码,shift+g到最后一行,dd删除。
2)修改
三处的cn=x1,dc=x2,dc=x3为你想使用的名字
x1、x2、x3为你想取得名字
5.重新生成配置文件信息文件
1)检测刚刚修改的slapd.conf是否有错误
slaptest -f /etc/openldap/slapd.conf
会报三行错误,是因为没有重新生成配置文件并启动slapd
先启动slapd:
/etc/init.d/slapd restart
又报错了,是因为没有授权:
chown -R ldap.ldap /var/lib/ldap/
再启动slapd:
/etc/init.d/slapd restart
启动成功了再回来检测配置文件是否错误
slaptest -f /etc/openldap/slapd.conf
表示配置文件没有问题
2)生成配置文件信息文件
先删除原来的内容:
rm -rf /etc/openldap/slapd.d/*
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/
成功后可以查看/etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}bdb.ldif
这个文件, 这个文件中olcSuffix和olcRootDN项应该有你亲切的x1、x2、x3
3)重启服务(先授权再重启)
chown -R ldap.ldap /etc/openldap/slapd.d/
/etc/init.d/slapd restart
出现两个OK说明成功了
至此,OpenLDAP服务基本配置完成
1.安装EPEL仓库,镜像里没有PhpLDAPAdmin这个的安装包,所以得安装EPEL仓库
rpm -ivh http://mirrors.ukfast.co.uk/sites/dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum clean all
yum makecache
2.安装PhpLDAPAdmin
yum -y install phpldapadmin
3.修改phpldapadmin的配置文件,访问控制权限,配置允许谁访问
vi /etc/httpd/conf.d/phpldapadmin.conf
Allow from xx.xx.xx.xx
写上个你的IP,后期使用这台机器来访问 save
如果允许所有人访问,那就去掉“Deny from all”这行
4.修改配置文件:
vi /etc/phpldapadmin/config.php
打开397行"$servers->setValue('login','attr','dn')"的注释
关闭下一行398行"$servers->setValue('login','attr','uid')"的注释
5.重启httpd服务
/etc/init.d/httpd restart
6.在你添加访问权限的那台机子上输入 http://xx.xx.xx.xx/ldapadmin/ 应该可以看到登陆界面了,使用"cn=x1,dc=x2,dc=x3"作为用户名,之前你自己定的密码作为密码登录, 虽然能登陆成功,但是还是有跟下图是不一样的,还是需要做点配置
7.导入管理员账号信息 随便找个地方新建一个文件,文件名就叫root.ldif
下面是文件内容,每个属性的空格与值之间有一个空格,其中换成你搭建OpenLDAP服务器的时候的那个名字
dn: dc=
x2
,dc=x3
objectclass: dcObject
objectclass: organization
o: x2
dc:x2
dn: cn=
x1
,dc=x2
,dc=x3
objectclass: organizationalRole
cn:x1
ldapadd -x -D "cn=x1,dc=x2,dc=x3" -W -f root.ldif
输入密码,看到两条adding new ....则成功
你可能碰到这个问题:
解决:检查【root.ldif】文件每行最后有没有空格,如果有就删掉就行了
再去登陆,则出现下图登陆成功的样子
至此PhpLDAPAdmin搭建完成
1.修改配置文件
vi /etc/openldap/slapd.conf
在最后加上
loglevel -1
修改了配置文件就要重新生成一下配置信息
rm -rf /etc/openldap/slapd.d/*
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/
chown -R ldap.ldap /etc/openldap/slapd.d/
2.修改系统日志
vim /etc/rsyslog.conf
在大约61行下面加上
local7.* /var/log/boot.log
local4.* /var/log/slapd/slapd.log
注意对齐,之后重启系统日志服务
/etc/init.d/rsyslog restart
3.创建日志文件夹及修改权限
没有则创建,一般是有
mkdir /var/log/slapd
chmod 755 /var/log/slapd/
chown ldap.ldap /var/log/slapd/
4.重启OpenLDAP服务
/etc/init.d/slapd restart
就可以在那个日志文件中看到日志了
1.在主服务器上的操作:
1)复制一份配置文件:
cp /etc/openldap/slapd.conf /etc/openldap/slapd.bak
2)停掉服务:
/etc/init.d/slapd stop
3)修改配置文件
vi /etc/openldap/slapd.conf
将135行后面添加,注意对齐
index nisMapName,nisMapEntry eq,pres,sub
index entryCSN,entryUUID eq
将57行(# moduleload symcprov.la)注释去掉
将34(# modulepath /usr/lib/openldap)、35(# modulepath /usr/lib64/openldap)行注释去掉
在文件末尾添加,后面的汉语解析不要加上
overlay syncprov 后端工作再overlay模式
syncprov-checkpoint 100 10 当满足修改100个条目或者10分钟的条件时主动以推的方式执行
syncprov-sessionlog 100 会话日志条目的最大数量
4)重新生成配置文件信息文件
rm -rf /etc/openldap/slapd.d/*
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/
chown -R ldap.ldap /etc/openldap/slapd.conf
chown -R ldap.ldap /etc/openldap/slapd.d
/etc/init.d/slapd restart
5)拷贝一份配置文件到从服务器上
scp /etc/openldap/slapd.conf root@[ip]:/etc/openldap/slapd.conf
输上密码就可以了,最好先删除掉从服务器上的那个配置文件
2.在从服务器上操作
1)去掉配置文件内容:
overlay syncprov
syncprov-checkpoint 100 10
syncprov-sessionlog 100
再加上后面的解释不要加上:
syncrepl rid=003
provider=ldap://10.0.0.138:389/
type=refreshOnly
retry="60 10 600 +" 尝试时间
interval=00:00:00:10 设置同步更新时间(日:时:分:秒)
searchbase="dc=lemon,dc=com"
scope=sub 匹配根域所有条目
schemachecking=off 同步更新时是否开启schema语法检测
bindmethod=simple 同步验证模式为简单模式(即明文 ) binddn="cn=Captain,dc=lemon,dc=com" 使用Captain用户读取目录树信息
attrs="*,+" 同步所有属性信息
credentials=123456 管理员密码
2)重新生成配置文件信息文件
rm -rf /etc/openldap/slapd.d/*
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/
chown -R ldap.ldap /etc/openldap/slapd.conf
chown -R ldap.ldap /etc/openldap/slapd.d
/etc/init.d/slapd restart
主从服务器配置完成
说明:
操作:
以下为环境安装,如果你的svn服务器和ldap服务器都已经安装好了可以直接从第三步开始
1.安装httpd
因为我们在安装PhpLdapAdmin的时候已经安装了httpd,所以此项可以跳过
2.安装Subversion服务
yum -y install subversion
3.安装httpd对LDAP服务的支持
yum -y install mod_dav_svn
4.配置subversion.conf
找到apache服务器的安装路径,一般在/etc/httpd/下,在conf.d目录下有一个subversion.conf文件,打开它,先上我的配置:
DAV svn
SVNParentPath /opt/svn
SVNListParentPath on
AuthzSVNAccessFile /opt/svn/authzAuthName "Subversion repository"
AuthType Basic
AuthBasicProvider ldap
AuthzLDAPAuthoritative on
AuthLDAPURL "ldap://xxx.xxx.xx.xx:389/ ou=people,dc=example,dc=com?uid?sub?(objectclass=*)"
AuthLDAPBindDN "cn=root,dc=example,dc=com"
AuthLDAPBindPassword "123123"Require ldap-user
前4行不用说了
在解释AuthLDAPURL|AuthLDAPBindDN|AuthLDAPBindPassword的时候要先讲一下LDAP服务器认证过程,方便理解:
客户端(httpd)使用提供的URL(AuthLDAPURL)进行验证的时候,并不是直接验证输入的账 号密码,因为LDAP服务器在验证的时候要使用DN(每个节点用户的唯一标识)和密码来进行登陆验证的,但是DN一般来说比较长,诸如:“cn=xxx,ou=xxx,ou=xxx,dc=xxx,dc=xxx”,这种光输入的时候就烦气了,所以要想使用简短的用户名来登陆的时候,一般的做法是在某个节点用户上添加一个属性,比如mobile(手机号),Email(邮箱),user name或者uid(用户名),然后使用这个属性的值来登陆。
当用户输入这个属性值和密码的时候,客户端(httpd服务器)先使用AuthLDAPBindDN和AuthLDAPBindPassword作为用户名和密码登陆,根据AuthLDAPURL指定的查询规则(AuthLDAPURL的查询规则一会再说)来查找用户输入的属性的值有没有,如果查找的条数为0或者大于1,则返回错误,如果查找的条数等于1,则使用查找到的这个条目的DN和用户输入的密码进行登陆验证,成功则成功,失败则失败,这就是OpenLDAP的验证过程。
配置完了之后重启服务
5.现装svn的小伙伴还需要配置一个库,没库看啥效果,本来就有库的就可以看效果了
1)创建svn版本库目录
随便建地方,不过要跟上面配置文件中的SVNParentPath
值一致:
mkdir /opt/svn
2)启动svn服务
svnserve -d -r /opt/svn
3)创建一个svn版本库,要去/opt/svn下执行啊
svnadmin create Test
4)授权,不然web会有errorlog
chown apache.apache -R /opt/svn
5)创建权限管理文件
vim /opt/svn/authz
[groups]
admin=xxx
users=yyy,zzz[/]
@admin = rw[Test:/]
@users = r
这里的xxx,yyy,zzz是只用户输入的属性的值(LDAP服务器中某个用于登陆的节点的属性值),如果你没配置这里的权限,用户虽然登陆成功了,但是没有相应的权限页面会提示没权限查看的,users后面跟多个以","分割的用户名(你设置的查询规则按什么查询就是什么)
过程中出现问题看日志哦,第五章已经开启了日志功能了,虽然看不懂,不过有可能能提供解决思路
暴一下当时配置的坑,脑子不好使了,在配置AuthLDAPBindPassword密码的时候想着123123,写成了123456,怎么连接都连不同,傻了。
OK,SVN+apache+OpenLDAP完成
1.停掉sshd服务
service sshd stop && chkconfig sshd off
2.安装nslcd服务
yum install nss-pam-ldapd
3.修改vi /etc/nslcd.conf这个配置文件
最后两行,换上你的uri和base。注意:不一定是最后两行,反正肯定有uri和base的配置,要改成你的。
4.vi /etc/pam.d/system-auth (下面能对齐就对齐)
1)在auth required pam_deny.so
这行上面加上"auth sufficient pam_ldap.so use_first_pass
"
2)在account required pam_permit.so
这行上面加上account [default=bad success=ok user_unknown=ignore] pam_ldap.so
3)在password required pam_deny.so
这行上面加上password sufficient pam_ldap.so use_authtok
4)在最后一行加上session optional pam_ldap.so
5)在session块中的第二行下面添加session optional pam_mkhomedir.so skel=/etc/skel/ umask=0022
!注意:如果你的配置文件中的这四块里面有关于pam_sss.so
的,在其前面加#
注释掉
5.vi /etc/nsswitch.conf
大约在33,34,35行左右的三行:
passwd: files
shadow: files
group: files
每行后面加个空格再加上“ldap”
passwd: files ldap
shadow: files ldap
group: files ldap
亲测CentOS7下files后面可能有sss,不用管,在其后面加上ldap就可以了
6.vi /etc/sysconfig/authconfig
确保:
USESHADOW=yes
USELDAPAUTH=yes
USELOCAUTHORIZE=yes
USELDAP=yes
7.重启nslcd服务
/etc/init.d/nslcd restart
8.到这里就可以使用LDAP账号进行本地登录了,添加用户验证:
问题:
这是因为没有某个组,就是这玩意,创建一个就可以选了我也不知道这个组干啥用的,懂得可以留言教我:
!!!这里有个深坑,在添加用户的时候填写密码的时候,密码后面的加密方式一定要使用(crypt,md5crypt)这两种其一,要不然是登陆不上去的,会密码验证失败的!!!
贴上创建账号的图,可供参考
但是一般谁本地登陆啊,肯定是用ssh登陆,下面接着ssh配置
9.vi /etc/ssh/sshd_config
大约在97行左右,确保: UsePAM是yes
10.vi /etc/pam.d/sshd
1)在最后面添加session required pam_mkhomedir.so
2)在account块中添加account required pam_access.so
(后续控制用户使用)
11.vi /etc/pam.d/password-auth
1)auth块中倒数第二行添加auth sufficient pam_ldap.so use_first_pass
2)account块中倒数第二行添加account [default=bad success=ok user_unknown=ignore] pam_ldap.so
3)password块中倒数第二行添加password sufficient pam_ldap.so use_authtok
4)session块中最后一行添加session optional pam_ldap.so
!注意:如果你的配置文件中的这四块里面有关于pam_sss.so
的,在其前面加#
注释掉
12.重启sshd服务
service sshd restart
现在可以使用LDAP账号进行SSH登陆了
13.可能会有需要配置某个账号不能登陆的情况
vi /etc/security/access.conf
最后一行添加:
"- : t2 : ALL"
注意之间的空格,限制t2用户不能登陆
保存此文件即生效
至此,Linux登陆整合LDAP服务器就完成了
鸣炮感谢
感谢李博主的博客,博客地址:
https://www.cnblogs.com/lemon-le/p/6266921.html
持续更新BUG解决:
使用SSH登陆还是登不上,可能这个配置文件没有编辑
/etc/pam_ldap.conf
这个文件中有对LDAP服务器的配置
查错,看/var/log/secure日志文件