redmine + ldap认证+phpldapadmin+svn(一套账号管理系统)

回复 收藏
本帖最后由 hlymlv 于 2016-3-23 10:40 编辑

redmine的安装,出门左转:http://www.apelearn.com/bbs/foru ... 7&highlight=redmine(非常感谢这位大哥)
1、首先,需要安装配置openldap:
yum install  -y  openldap openldap-servers openldap-clients openldap-devel compat-openldap
cp  /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf
cd /etc/openldap
创建管理员密码:
[root@ylkj openldap]# slappasswd
New password:
Re-enter new password:
{SSHA}cM5gJrd3iDG2p13B+f1gpFGH3pFP6hWh(这个复制到配置文件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

同时修改 /var/lib/ldap/的权限,待会ldap启动时会在下面生成一些文件,不然报错
chown -R ldap.ldap /var/lib/ldap

继续检查配置文件
[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)(这个文件需要登slapd启动时,才会生成 所以现在没有 不用管)
slap_startup failed (test would succeed using the -u switch)(这个文件需要登slapd启动时,才会生成 所以现在没有 不用管)
当然也可以用加上-u查看 是没错的
[root@ylkj openldap]# slaptest -f slapd.conf  -u
config file testing succeeded

删掉slapd.d下的文件,重新生成 不然待会启动时会报错
rm -rf  slapd.d/* ,
不能把slapd.d 这个目录给删了,否则进行下面一步时也会出错

[root@ylkj openldap]# slaptest -f slapd.conf  -F slapd.d -u
config file testing succeeded

同时修改slapd.d的属主
chown -R ldap.ldap slapd.d

接下来启动slapd, 哈哈 不容易啊

[root@ylkj openldap]# service slapd start
Starting slapd:                                            [  OK  ]

接下来我们需要创建用户并把用户导入到ldap里面去
useradd user1;useradd user2;useradd user3
同时给用户创建密码(不要忘了这步,不然弄好也是白忙活),当然 你也可以在配置好phpldapadmin之后为用户添加密码标明:如果要重新导入用户需要删除/var/lib/ldap下的除了DB_CONFIG 下的所有文件在把
Sldap.d下的所有文件删除之后重新导入三个ldif (user.ldif,basc.ldif,group.ldif)
重新生成sldap.d下的文件slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
之后重新启动sqlap文件
重新导入的用户生效
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:唯一区分名
dc:所属区域
ou:所属组织
cn/uid:全名/登录ID

运行脚本migrate_base.pl,它会创建根项,并为 Hosts、Networks、Group和 People 等创建低一级的组织单元,指定为base.ldif文件,这里我们只有下面这3个
[root@openldap-master migrationtools]# ./migrate_base.pl >base.ldif
[root@openldap-master migrationtools]#cat base.ldif  (你可以看一下这个文件的生成内容)

接下来创建用户和组的数据库文件
[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

迁移系统用户到ldap数据库

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"

如果出现错误:
ldap_bind: Invalid credentials (49)
就表示你要么给出了错误的”cn=”条目,要么给出了错误的密码
Enter LDAP Password:(输入你刚才设置的密码),正确之后会显示:

查看导入的用户: ldapsearch   -x -b  "dc=www,dc=example,dc=com"
记下这个 dn 的内容
# user1, People(请注意这,不是group,不要弄错了), www.ulink.com
dn: uid=user1,ou=People,dc=www,dc=ulink,dc=com

上面的dn写成dc=www,dc=ulink,dc=com就行了,否则会出现在ldapadmin中添加用户,还得在redmine中配置才能生效的情况
接下来在web页面添加用户,其实现在可以把之前在服务器添加的用户给删掉(安全起见)图二输入密码和账号为空,不能输
dn 输入刚才记下的
下面的请按我的设置一样的,我尝试改了个,出错了(导致我重弄了5,6遍)



(VHA_2I~C{W61H{YY[Z2EY3.png XE]4Q1WF]MJ[3R123`1U654.png
2016-03-12 15:25 举报
已邀请:
0

hlymlv

赞同来自:

本帖最后由 hlymlv 于 2016-3-16 12:28 编辑

phpldapadmin安装
yum安装apache+php环境
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配置文件
[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
填上ldap管理员的密码,然后在里面添加用户即可,要想用户生效,还需去redmineldap用户认证下去配置



0

hlymlv

赞同来自:

本帖最后由 hlymlv 于 2016-3-17 11:45 编辑

检查已安装版本
#检查是否安装了低版本的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
确认已安装了svn模块
[root@localhost /]# cd /etc/httpd/modules
[root@localhost modules]# ls | grep svn
mod_authz_svn.so
mod_dav_svn.so
验证安装
检验已经安装的SVN版本信息
[root@localhost modules]# svnserve --version
svnserve,版本 1.6.11 (r934486)
代码库创建
SVN软件安装完成后还需要建立SVN库
[root@localhost modules]# mkdir -p /home/user/svn/project1
[root@localhost modules]# svnadmin create /home/user/svn/project1
执行上面的命令后,自动建立project库,查看文件夹/home/user/svn/project1发现包含了conf, db,format,hooks, locks, README.txt等文件,说明一个SVN库已经建立。
配置代码库
进入上面生成的文件夹conf下,进行配置
[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为以下内容:
[users]
# harry = harryssecret
# sally = sallyssecret
hw=123456
权限控制authz配置
[root@admin conf]# vi   authz
目的是设置哪些用户可以访问哪些目录,向authz文件追加以下内容:
#设置[/]代表根目录下所有的资源
[/]
hw=rw
服务svnserve.conf配置
[root@admin conf]# vi   svnserve.conf
追加以下内容:
[general]
#匿名访问的权限,可以是read,write,none,默认为read
anon-access=none
#使授权用户有写权限
auth-access=write
#密码数据库的路径
password-db=passwd
#访问控制文件
authz-db=authz
#认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字
realm=/home/user/svn/
配置防火墙端口
[root@localhost conf]# vi /etc/sysconfig/iptables
添加以下内容:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT
保存后重启防火墙
[root@localhost conf]# service iptables restart
启动SVN
svnserve -d -r /home/user/svn/
测试
SVN服务已经启动,使用客户端测试连接。
客户端连接地址:svn://192.168.10.254
用户名/密码: hw/123456
测试创建文件夹等操作。

我们现在结合svn+ldap
在svn目录下,创建多个项目
# svnadmin create project2
# svnadmin create project3
# svnadmin create project4
# svnadmin create project5
# ls
project1  project2  project3  project4  project5
# 创建authz.conf文件,作为工程权限控制的配置文件。(配置语法请参考: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  
完成以上后,待用,后续使用apache整合。
现在针对apache,做配置
编辑httpd.conf,加入
#这里如果写成/svn,访问时报错
Forbidden
You don't have permission to access /svn/ on this server.

/svn/>
         DAV svn
         SVNListParentPath on
         SVNParentPath /home/user/svn/
#         AuthUserfile /home/user/svn/conf/passwd
         AuthzSVNAccessFile /home/user/svn/authz.conf

        # 在ldap找不到账号的情况下可以使用其它的认证方式(如,密码文件)
        AuthzLDAPAuthoritative off
        # openLDAP的管理账户
       AuthLDAPBindDN "cn=Manager,dc=www,dc=ulink,dc=com"
       AuthLDAPBindPassword ******(ldap的管理员密码)

         AuthBasicProvider ldap
         # 认证数据来源:"ou=rd,dc=cq,dc=feinno,dc=com" 下所有子entity的uid作为认证用户名
         AuthLDAPURL "ldap://192.168.10.254:389/ou=People,dc=www,dc=ulink,dc=com?uid?sub?(objectClass=*)"
#这个uid如果写成cn,访问 ip/svn/ 时会弹出一个验证界面,不断验证 不能成功
         # http 基本认证
         AuthType Basic
         AuthName "ok"
         Require valid-user
         # 设置目录权限,实现列表所有工程目录
         Options Indexes FollowSymLinks
         Order allow,deny
         Allow from all
   

还有一个问题就是不能直接在svn目录下生成库文件,否则在ldap认证时会报错
[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/
我所碰到的就是这三个问题(记得看下httpd错误日志,很有用),另外网页上访问时是这样的 ip/svn/,输入你的ldap账号和密码就行了
效果图,注意一下网页缓存
0

hlymlv

赞同来自:

本帖最后由 hlymlv 于 2016-5-28 02:17 编辑

svn三个开发模块:如果你简单的以为只要在一个版本库下创建三个目录那就大错特错了,它不会在web网页上显示
我们要进行以下操作
svn检出 - - >进入检出目录 - - > 创建三个文件夹 trunk,brunch,tag - - > 右键 tortise,添加选择三个文件夹 - - >操作完成
(但是还有可能会看到配置文件),所以我们一般先在svn检出目录创建一个文件夹,然后在该目录下创建三个文件夹 trunk,brunch,tag,接下来
还需要在服务器上配置权限
大致如下:
(LU{{@X%A{2FGNMBVL$`WPX.png

即可,完成配置(首先你得先在该目录下(服务器上面)否则访问权限不好设置),svn下并不会存在trunk,brunch,tag三个目录
0

liushuangwei

赞同来自:

想问一个问题哈,一套账号系统要svn做什么 ?
0

hlymlv

赞同来自:

liushuangwei 发表于 2016-3-20 11:03
想问一个问题哈,一套账号系统要svn做什么 ?

svn 也绑定了ldap的账号,这一套账号通用的 当然 还可以附加其它的
0

297168738

赞同来自:

大神我想问下,AD活动目录怎么做ldap认证?
0

hlymlv

赞同来自:

297168738 发表于 2016-5-27 14:29
大神我想问下,AD活动目录怎么做ldap认证?

这我没试过,可以看看这http://blog.sina.com.cn/s/blog ... .html  原理都一样

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: