1、首先,需要安裝配置openldap:
創(chuàng)新互聯(lián)建站從2013年創(chuàng)立,先為三沙等服務(wù)建站,三沙等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為三沙企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
yum install openldap openldap-servers openldap-clients openldap-devel compat-openldap
cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf
在/openldap目錄下只保留slapd.conf cert schem slapd.d 4個(gè)文件
cd /etc/openldap
創(chuàng)建管理員密碼:
[root@ylkj openldap]# slappasswd
New password:
Re-enter new password:
{SSHA}cM5gJrd3iDG2p13B+f1gpFGH3pFP6hWh(這個(gè)復(fù)制到配置文件slapd.conf中)
vim slapd.conf
修改一下配置:
suffix "dc=my-domain,dc=com"
checkpoint 1024 15
rootdn "cn=Manager,dc=my-domain,dc=com"
改為
suffix "dc=www,dc=example,dc=com"
checkpoint 1024 15
rootdn "cn=Manager,dc=www,dc=example,dc=com"
rootpw {SSHA}cM5gJrd3iDG2p13B+f1gpFGH3pFP6hWh
完成,檢查配置文件
[root@ylkj openldap]# slaptest -f slapd.conf
56e182f3 bdb_db_open: warning - no DB_CONFIG file found in directory /var/lib/ldap: (2).(看這里,顯示DB_CONFIG沒找到 )
Expect poor performance for suffix "dc=my-domain,dc=com".
56e182f3 bdb_db_open: database "dc=my-domain,dc=com": db_open(/var/lib/ldap/id2entry.bdb) failed: No such file or directory (2).
56e182f3 backend_startup_one (type=bdb, suffix="dc=my-domain,dc=com"): bi_db_open failed! (2)
slap_startup failed (test would succeed using the -u switch)
解決方法: cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
同時(shí)修改 /var/lib/ldap/的權(quán)限,待會(huì)ldap啟動(dòng)時(shí)會(huì)在下面生成一些文件,不然報(bào)錯(cuò)
chown -R ldap.ldap /var/lib/ldap
繼續(xù)檢查配置文件
[root@ylkj openldap]# slaptest -f slapd.conf
56e183c1 bdb_db_open: database "dc=my-domain,dc=com": db_open(/var/lib/ldap/id2entry.bdb) failed: No such file or directory (2).
56e183c1 backend_startup_one (type=bdb, suffix="dc=my-domain,dc=com"): bi_db_open failed! (2)(這個(gè)文件需要登slapd啟動(dòng)時(shí),才會(huì)生成 所以現(xiàn)在沒有 不用管)
slap_startup failed (test would succeed using the -u switch)(這個(gè)文件需要登slapd啟動(dòng)時(shí),才會(huì)生成 所以現(xiàn)在沒有 不用管)
當(dāng)然也可以用加上-u查看 是沒錯(cuò)的
[root@ylkj openldap]# slaptest -f slapd.conf -u
config file testing succeeded
刪掉slapd.d下的文件,重新生成 不然待會(huì)啟動(dòng)時(shí)會(huì)報(bào)錯(cuò)
rm -rf slapd.d/* ,
不能把slapd.d 這個(gè)目錄給刪了,否則進(jìn)行下面一步時(shí)也會(huì)出錯(cuò)
[root@ylkj openldap]# slaptest -f slapd.conf -F slapd.d -u
config file testing succeeded
同時(shí)修改slapd.d的屬主
chown -R ldap.ldap slapd.d
接下來啟動(dòng)slapd, 哈哈 不容易啊
[root@ylkj openldap]# service slapd start
Starting slapd: [ OK ]
接下來我們需要?jiǎng)?chuàng)建用戶并把用戶導(dǎo)入到ldap里面去
useradd user1;useradd user2;useradd user3
同時(shí)給用戶創(chuàng)建密碼(不要忘了這步,不然弄好也是白忙活)
echo “密碼”| passwd --stdin user1
echo “密碼”| passwd --stdin user2
echo “密碼”| passwd --stdin user3
安裝及配置遷移工具
[root@openldap-master openldap]# yum install migrationtools -y
[root@openldap-master openldap]# cd /usr/share/migrationtools/
[root@openldap-master migrationtools]# vi migrate_common.ph
70 # Default DNS domain
71 $DEFAULT_MAIL_DOMAIN = "www.example.com";
72
73 # Default base
74 $DEFAULT_BASE = "dc=www,dc=example,dc=com";
主要的概念:
dn:唯一區(qū)分名
dc:所屬區(qū)域
ou:所屬組織
cn/uid:全名/登錄ID
運(yùn)行腳本migrate_base.pl,它會(huì)創(chuàng)建根項(xiàng),并為 Hosts、Networks、Group和 People 等創(chuàng)建低一級(jí)的組織單元,指定為base.ldif文件,這里我們只有下面這3個(gè)
[root@openldap-master migrationtools]# ./migrate_base.pl >base.ldif
[root@openldap-master migrationtools]#cat base.ldif (你可以看一下這個(gè)文件的生成內(nèi)容)
接下來創(chuàng)建用戶和組的數(shù)據(jù)庫文件
[root@openldap-master migrationtools]# grep ^user /etc/passwd >user
[root@openldap-master migrationtools]# ./migrate_passwd.pl user ./user.ldif
[root@openldap-master migrationtools]# grep ^user /etc/group >group
[root@openldap-master migrationtools]# ./migrate_group.pl group ./group.ldif
[root@openldap-master migrationtools]# ll base.ldif user.ldif group.ldif
遷移系統(tǒng)用戶到ldap數(shù)據(jù)庫
ldapadd -D "cn=Manager,dc=www,dc=example,dc=com" -W -x -f /usr/share/migrationtools/base.ldif
Enter LDAP Password:
adding new entry "dc=www,dc=example,dc=com"
adding new entry "ou=People,dc=www,dc=example,dc=com"
adding new entry "ou=Group,dc=www,dc=example,dc=com"
ldapadd -D "cn=Manager,dc=www,dc=example,dc=com" -W -x -f /usr/share/migrationtools/user.ldif
Enter LDAP Password:
adding new entry "uid=user1,ou=People,dc=www,dc=example,dc=com"
adding new entry "uid=user2,ou=People,dc=www,dc=example,dc=com"
adding new entry "uid=user3,ou=People,dc=www,dc=example,dc=com"
ldapadd -D "cn=Manager,dc=www,dc=example,dc=com" -W -x -f /usr/share/migrationtools/group.ldif
Enter LDAP Password:
adding new entry "cn=user1,ou=People,dc=www,dc=example,dc=com"
adding new entry "cn=user2,ou=People,dc=www,dc=example,dc=com"
adding new entry "cn=user3,ou=People,dc=www,dc=example,dc=com"
如果出現(xiàn)錯(cuò)誤:
ldap_bind: Invalid credentials (49)
就表示你要么給出了錯(cuò)誤的”cn=”條目,要么給出了錯(cuò)誤的密碼
Enter LDAP Password:(輸入你剛才設(shè)置的密碼),正確之后會(huì)顯示:
查看導(dǎo)入的用戶: ldapsearch -x -b "dc=www,dc=example,dc=com"
記下這個(gè) dn 的內(nèi)容
# user1, People(請(qǐng)注意這,不是group,不要弄錯(cuò)了), www.ulink.com
dn: uid=user1,ou=People,dc=www,dc=ulink,dc=com
接下來在web頁面添加用戶,其實(shí)現(xiàn)在可以把之前在服務(wù)器添加的用戶給刪掉(安全起見)圖二輸入密碼和賬號(hào)為空,不能輸
dn 輸入剛才記下的
下面的請(qǐng)按我的設(shè)置一樣的,我嘗試改了個(gè),出錯(cuò)了(導(dǎo)致我重弄了5,6遍)
phpldapadmin安裝
yum安裝apache+php環(huán)境
yum install httpd php php-bcmath php-gd php-mbstring php-xml php-ldap
yum安裝phpldapadmin
yum install phpldapadmin #要有epel源
修改配置文件,增加
vi /etc/httpd/conf/httpd.conf
ServerName www.ulink.com
Alias /phpldapadmin /usr/share/phpldapadmin/htdocs
Alias /ldapadmin /usr/share/phpldapadmin/htdocs
Order Deny,Allow
Deny from all
Allow from 127.0.0.1 192.168.10.0/24
Allow from ::1
修改phpldapadmin配置文件
1
2
3
4[root@openldap-master ~]# vi /etc/phpldapadmin/config.php
# line 397: uncomment, line 398: make it comment
$servers->setValue('login','attr','dn');
// $servers->setValue('login','attr','uid');
輸入ip或域名/ldapadmin進(jìn)行訪問,填上ldap管理員的密碼,然后在里面添加用戶即可,要想用戶生效,還需去redmine的ldap用戶認(rèn)證下去配置
檢查已安裝版本
#檢查是否安裝了低版本的SVN
[root@localhost /]# rpm -qa subversion
#卸載舊版本SVN
[root@localhost modules]# yum remove subversion
安裝SVN
[root@localhost modules]# yum install httpd httpd-devel subversion mod_dav_svn mod_auth_MySQL
確認(rèn)已安裝了svn模塊
[root@localhost /]# cd /etc/httpd/modules
[root@localhost modules]# ls | grep svn
mod_authz_svn.so
mod_dav_svn.so
驗(yàn)證安裝
檢驗(yàn)已經(jīng)安裝的SVN版本信息
[root@localhost modules]# svnserve --version
svnserve,版本 1.6.11 (r934486)
代碼庫創(chuàng)建
SVN軟件安裝完成后還需要建立SVN庫
[root@localhost modules]# mkdir -p /home/user/svn/project1
[root@localhost modules]# svnadmin create /home/user/svn/project1
執(zhí)行上面的命令后,自動(dòng)建立project庫,查看文件夾/home/user/svn/project1發(fā)現(xiàn)包含了conf, db,format,hooks, locks, README.txt等文件,說明一個(gè)SVN庫已經(jīng)建立。
配置代碼庫
進(jìn)入上面生成的文件夾conf下,進(jìn)行配置
[root@localhost modules]# cd /home/user/svn/project1/conf
用戶密碼passwd配置
[root@localhost password]# cd /home/user/svn/project1/conf
[root@admin conf]# vi passwd
修改passwd為以下內(nèi)容:
[users]
# harry = harryssecret
# sally = sallyssecret
hw=123456
權(quán)限控制authz配置
[root@admin conf]# vi authz
目的是設(shè)置哪些用戶可以訪問哪些目錄,向authz文件追加以下內(nèi)容:
#設(shè)置[/]代表根目錄下所有的資源
[/]
hw=rw
服務(wù)svnserve.conf配置
[root@admin conf]# vi svnserve.conf
追加以下內(nèi)容:
[general]
#匿名訪問的權(quán)限,可以是read,write,none,默認(rèn)為read
anon-access=none
#使授權(quán)用戶有寫權(quán)限
auth-access=write
#密碼數(shù)據(jù)庫的路徑
password-db=passwd
#訪問控制文件
authz-db=authz
#認(rèn)證命名空間,subversion會(huì)在認(rèn)證提示里顯示,并且作為憑證緩存的關(guān)鍵字
realm=/home/user/svn/
配置防火墻端口
[root@localhost conf]# vi /etc/sysconfig/iptables
添加以下內(nèi)容:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT
保存后重啟防火墻
[root@localhost conf]# service iptables restart
啟動(dòng)SVN
svnserve -d -r /home/user/svn/
測試
SVN服務(wù)已經(jīng)啟動(dòng),使用客戶端測試連接。
客戶端連接地址:svn://192.168.10.254
用戶名/密碼: hw/123456
測試創(chuàng)建文件夾等操作。
我們現(xiàn)在結(jié)合svn+ldap
在svn目錄下,創(chuàng)建多個(gè)項(xiàng)目
# svnadmin create project2
# svnadmin create project3
# svnadmin create project4
# svnadmin create project5
# ls
project1 project2 project3 project4 project5
# 創(chuàng)建authz.conf文件,作為工程權(quán)限控制的配置文件。(配置語法請(qǐng)參考:http://svnbook.red-bean.com/en/1.5/svn.serverconfig.pathbasedauthz.html)
# vi authz.conf
Authz.conf代碼
1.[groups]
2.admin=hw
3.
4.[/]
5.@admin=rw
6.*=
7.#*=r
8.
9.
10.[project1:/]
11.hw=r
完成以上后,待用,后續(xù)使用apache整合。
現(xiàn)在針對(duì)apache,做配置
編輯httpd.conf,加入
#這里如果寫成/svn,訪問時(shí)報(bào)錯(cuò)
Forbidden
You don't have permission to access /svn/ on this server.
DAV svn
SVNListParentPath on
SVNParentPath /home/user/svn/
# AuthUserfile /home/user/svn/conf/passwd
AuthzSVNAccessFile /home/user/svn/authz.conf
# 在ldap找不到賬號(hào)的情況下可以使用其它的認(rèn)證方式(如,密碼文件)
AuthzLDAPAuthoritative off
# openLDAP的管理賬戶
AuthLDAPBindDN "cn=Manager,dc=www,dc=ulink,dc=com"
AuthLDAPBindPassword ******(ldap的管理員密碼)
AuthBasicProvider ldap
# 認(rèn)證數(shù)據(jù)來源:"ou=rd,dc=cq,dc=feinno,dc=com" 下所有子entity的uid作為認(rèn)證用戶名
AuthLDAPURL "ldap://192.168.10.254:389/ou=People,dc=www,dc=ulink,dc=com?uid?sub?(objectClass=*)"
#這個(gè)uid如果寫成cn,訪問 ip/svn/ 時(shí)會(huì)彈出一個(gè)驗(yàn)證界面,不斷驗(yàn)證 不能成功
# http 基本認(rèn)證
AuthType Basic
AuthName "ok"
Require valid-user
# 設(shè)置目錄權(quán)限,實(shí)現(xiàn)列表所有工程目錄
Options Indexes FollowSymLinks
Order allow,deny
Allow from all
還有一個(gè)問題就是不能直接在svn目錄下生成庫文件,否則在ldap認(rèn)證時(shí)會(huì)報(bào)錯(cuò)
[Wed Mar 16 18:02:55 2016] [error] [client 192.168.10.200] (20014)Internal error: Can't open file '/home/user/svn/project1/format': No such file or directory, referer: http://192.168.10.254/svn/
[Wed Mar 16 18:02:55 2016] [error] [client 192.168.10.200] Could not fetch resource information. [500, #0], referer: http://192.168.10.254/svn/
我所碰到的就是這三個(gè)問題(記得查看下httpd的錯(cuò)誤日志,很有用),另外網(wǎng)頁上訪問時(shí)是這樣的 ip/svn/,輸入你的ldap賬號(hào)和密碼就行了
效果圖,注意一下網(wǎng)頁緩存
ldap用戶自己更改密碼
openldap 2.4 版本 系統(tǒng)認(rèn)證無法更改密碼,錯(cuò)誤提示:
openldap: LDAP password information update failed: Insufficient access
tail /var/log/securce
passwd: pam_unix(passwd:chauthtok): user "test" does not exist in /etc/passwd
解決方案:
在 sldap.conf 中加入:
access to attrs=userPassword
by self write
by anonymous auth
by dn.base="cn=Manager,dc=www,dc=ulink,dc=com" write
by * none
access to *
by self write
by dn.base="cn=Manager,dc=www,dc=ulink,dc=com" write
by * read
上面行最主要的加在database config 前面,否則不生效。
然后執(zhí)行
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
service slapd restart
編輯配置文件 vim /etc/phpldapadmin/config.php
這里設(shè)為dn登錄方式,如果設(shè)成了uid登錄方式,用戶可以改密碼,但是ldap管理員登錄不了
這樣雖然能登陸,但是改密碼會(huì)報(bào)錯(cuò)(可以改得了密碼)
正確方式:
如果要重新導(dǎo)入用戶需要?jiǎng)h除/var/lib/ldap下的除了DB_CONFIG 下的所有文件在把
Sldap.d下的所有文件刪除 之后重新導(dǎo)入三個(gè)ldif (user.ldif,basc.ldif,group.ldif)
重新生成sldap.d下的文件slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
之后重新啟動(dòng)sqlap文件
重新導(dǎo)入的用戶生效