LDAP 整合—— svn、samba、vsftpd --用户密码同步

 

前 言  

    终于完成了,由于自己菜的原因,这个整合花了我好多时间啊!一开始UID同步,但密码不同步,现在密码都是用smbpasswd 同步管理的。现在把自己的成果分享给大家,哪里写错或解释错请纠正,有问题可在BLOG中留言,我看到后第一时间会回复的。

 

安装前准备

       本教程的系统平台:centOS 5.1 ,所使用到的全部包都用yum 来安装的,也是目前官方源上最新的版本!

 

       首先来安装需要的包

# yum install openldap* subversion* vsftpd* samba*

 

       其实可以用光盘做源来安装,安装完后再用 yum update 来更新这些包,这是最快的。

       安装完成后检查一下

# rpm -qa |grep openldap

openldap-servers-2.3.27-8.el5_2.4

openldap-devel-2.3.27-8.el5_2.4

openldap-servers-sql-2.3.27-8.el5_2.4

openldap-2.3.27-8.el5_2.4

openldap-clients-2.3.27-8.el5_2.4

 

rpm -qa |grep subversion

subversion-1.4.2-2.el5

subversion-perl-1.4.2-2.el5

subversion-ruby-1.4.2-2.el5

subversion-javahl-1.4.2-2.el5

subversion-devel-1.4.2-2.el5

 

# rpm -qa |grep vsftpd

vsftpd-2.0.5-12.el5

 

# rpm -qa |grep samba

samba-common-3.0.28-1.el5_2.1

samba-swat-3.0.28-1.el5_2.1

samba-client-3.0.28-1.el5_2.1

system-config-samba-1.2.39-1.el5

samba-3.0.28-1.el5_2.1

 

OPENLDAP配置

 

复制samba.schema ldap 的安装目录下的schema 目录,以便ldap 整合samba

# cp /usr/share/doc/samba-3.0.28/LDAP/samba.schema /etc/openldap/schema/samba.schema

 

       复制DB_CONFIG数据文件到ldap指定的数据目录,默认在/var/lib/ldap

# cp /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG

 

       开始编辑openldapconfig 文件

# vim /etc/openldap/slapd.conf

       include         /etc/openldap/schema/XXX.schema 下添加以下一行

include         /etc/openldap/schema/samba.schema                    #加载samba模块

 

suffixrootdnrootpw修改为,

suffix          "dc=rookie,dc=com"                      #基本dc 信息

rootdn          "cn=root,dc=iaspec,dc=com"         #管理员信息

rootpw          iaspec123                                          #管理员密码,默认已被注释,可去掉’#’

 

LDAP 整合—— svn、samba、vsftpd --用户密码同步_第1张图片

       OK,保存退出!

 

       导入初始数据

请自己创建一个初始数据的文件

# vim /data/data.ldif

dn: dc=rookie,dc=com

objectclass: dcObject

objectclass: organization

o: company

dc: rookie

 

dn: cn=root,dc=rookie,dc=com

objectclass: organizationalRole

cn: root

 

LDAP 整合—— svn、samba、vsftpd --用户密码同步_第2张图片 

保存退出后导入刚刚创建的数据(导入前先启动ldap

# ldapadd -x -D "cn=root,dc=rookie,dc=com" -w root123 -f /data/data.ldif

 

看到以下信息就证明导入成功了

adding new entry "dc=rookie,dc=com"

adding new entry "cn=root,dc=rookie,dc=com"

 

 

LDAP 整合—— svn、samba、vsftpd --用户密码同步_第3张图片 

      

再创建一个ou

# vim ou.ldif

 

dn: ou=user,dc=rookie,dc=com

objectClass: top

objectClass: organizationalUnit

ou: user

LDAP 整合—— svn、samba、vsftpd --用户密码同步_第4张图片

 

再导入

# ldapadd -x -D "cn=root,dc=rookie,dc=com" -w root123 -f /data/ou.ldif

 

添加ldap 系统日志

# vim /etc/syslog.conf

 

       在最后添加一行

local4.*                 /var/log/ldap.log

       保存退出后重启syslogOK

 

 

VSFTPD 配置

 

       这个服务没什么设置的,简单修改一下配置文件

# vim /etc/vsftpd/vsftpd.conf

 

       安全考虑,把匿名关闭

anonymous_enable=NO

 

       开启ftp 

xferlog_file=/var/log/vsftpd.log            把默认注释“#”去掉

 

       在文件最底添加以下几行

local_root=/data                   #作用是指定用户登录后的目录

chroot_local_user=YES         #用户不能离开自家目录

 

 

LDAP 整合—— svn、samba、vsftpd --用户密码同步_第5张图片

       Ok,保存退出!

 

 

SAMBA 配置

 

       编辑smb 的配置文件

# vim /etc/samba/smb.conf

       修改以下行

workgroup = WORKGROUP                             #设定工作组

passdb backend = ldapsam:ldap://127.0.0.1         #指定用户验证的LDAP服务器地址

      

       添加以下行

ldap admin dn = "cn=root,dc=rookie,dc=com"     #指定管理员

ldap suffix = dc=rookie,dc=com                        #指定搜索后缀

ldap user suffix = ou=user                                 #指定信息存放的目录路径

ldap delete dn = no                                           #不允许删除DN

log file = /var/log/samba/smbd.log                      #添加samba 日志文件

 

       保存退出,把cn=root,dc=rookie,dc=com 管理员的密码保存到secrets.tdb中,以便samba ldap 通讯 

格式:smbpasswd –w [密码]

# smbpasswd -w root123

 

       如果我需要把某个文件夹共享出来,共享名为share,可以在smb.conf 最下面加上

 

[share]

        comment = share files           #目录的描述

        path = /home/file           #共享的目录路径

        browseable = yes          #是否在浏览器中显示目录

        writable = yes               #是否有写的权限

 

 

 

SUBVERSION 配置

 

       svn 不需要改配置文件,只需要建了资料库和导入数据就行了!

 

创建资料库

# svnadmin create /data/repository

       当看到/data/repository 目录下自动生成了几个文件就证明资料库创建成功了!

 

LDAP 整合—— svn、samba、vsftpd --用户密码同步_第6张图片 

       把数据导入到SVN的资料库

# svn import /data/program/ file:///data/repository -m "program data"

       说明一下,前面的路径是你要导入数据的路径,后面的路径是你前面创建的资料库路径,-m 后面只是一个描述文字。

 

 

其它 配置

 

authconfig-tui设置】

 

运行# authconfig-tui

user information 选择 [Use LDAP]

authentication 选择 [Use MD5 Passwords] [Use Shadow Passwords] [Use LDAP Authentication] [Use SMB Authentication]

 

LDAP 整合—— svn、samba、vsftpd --用户密码同步_第7张图片 

下一步之后,LDAP Setting 框中的 Base DN 填入服务器的DN

dc=rookie,dc=com

 

LDAP 整合—— svn、samba、vsftpd --用户密码同步_第8张图片 

再下一步,SMB Settings 柜中Servers 填入服务器IP

127.0.0.1

 

LDAP 整合—— svn、samba、vsftpd --用户密码同步_第9张图片 

SELINUX关闭】

 

       因为SELINUX开启的原因,可能会有不少出错,现在把SELINUX关闭

# vim /etc/selinux/config

       SELINUX=enforcing 改成 SELINUX=disabled

保存退出,关闭了selinux 后要重启才能生效。

 

       除了关闭selinux ,使用某些服务的时候还是有限制,如果出现限制问题,查看自己Firewall 里相应的端口有没有打开,从安全角度上看,做为服务器Firewall 是不能关的,如果作为配置学习,可以暂时把Firewall 关闭。

 

apache 设置】

 

       修下一下apache 的配置,到时在LDAP中添加一个UID用户,方便在浏览器中浏览svn 的库文件(这一步可有可无)。

# vim /etc/httpd/conf/httpd.conf

在最后的位置加上

 

DAV svn                                     //开启sbuversion

SVNPath /data/ repository            //库的目录

AuthType Basic                           //使用基本的密码认证

AuthBasicProvider ldap               

AuthzLDAPAuthoritative off

AuthLDAPURL "ldap://127.0.0.1:389/ou=user,dc=rookie,dc=com "   //LDAP访问目录

AuthName "read only"                  //网站说明文字

Require valid-user                        //允许合法用户登录

 

 

LDAP 整合—— svn、samba、vsftpd --用户密码同步_第10张图片 

安装一个组件,否则启动httpd 的时候会报以下错误

 

Starting httpd: Syntax error on line 993 of /etc/httpd/conf/httpd.conf:

Unknown DAV provider: svn

 

LDAP 整合—— svn、samba、vsftpd --用户密码同步_第11张图片 

# yum install mod_dav_svn

 

       现在svn整合了apache 了,但不是标题说到的那种密码同步的整合,这一小节的整合目的只是提供用户能在浏览器上查看一下版本库的资料,前提是在openldap 的客户端添加一个uid,才能在浏览器中登录svn资料库。

 

ssh安装】

 

       安装SSH的目的是希望svn 能与ssh 整合成一个访问模式,通过svn+ssh 访问才能同步系统用户的用户名和密码。

# yum install ssh*

 

       简单配置一下ssh

# vim /etc/ssh/sshd_config

 

#PermitEmptyPasswords no  改成       PermitEmptyPasswords no    #不允许空密码登录

 

LDAP 整合—— svn、samba、vsftpd --用户密码同步_第12张图片

保存退出

 

【开机自动启动服务】

 

       每次开始都要server XXX start 多麻烦啊,不过,可以把他们设成开机自动运行

# ntsysv

 

       启动服务管理窗口后,在以下服务前的[]加上*号(按空格键)

[*]httpd

[*]ldap

[*]smb

[*]vsftpd

[*]sshd

 

       OK后退出

       随便提一下,有时开启会在加载IPV6的时候等很久

applying ip6tables firewall rules:     

       我们其实可以把IPV6停了,把ip6tables 前面的去掉就行了!

[ ]ip6tables

 

【用户添加】

 

       由于 SAMBA 的用户由 smbpasswd 来管理,而在LDAP中新建的svn UID用户的密码又不能由smbpasswd 来设置,所以只能用户和密码都由 smbpasswd 来管理了,换句话说,用户和密码都在终端里创建的。

 

       SAMBA用到的用户必须是系统用户,所以建SAMBA用户前要先建系统用户

       也为了方便管理,我们把使用在subversion,samba,vsftpd的用户放在同一个组里,有需要的话也可以按照部门来分

# groupadd team                         建立一个team 的组

 

# useradd rookie –g team             建立一个属于 team 组的 rookie 用户

 

新建一个 rookie 的系统用户后,就可以新建一个相应的samba 用户

# smbpasswd –a rookie

LDAP 整合—— svn、samba、vsftpd --用户密码同步_第13张图片 

       输入密码后,提示 Added user rookie ,证明成功建立了smb用户

 

       如果需要修改密码就输入 smbpasswd [用户],就能修改相应的用户密码,而且同时把subversionvsftpd 的登录密码也修改了

 

【用户修改密码+安全设置】

 

       希望用户能自行修改密码,但又不希望他能访问服务器其它目录。

 

通过svn+ssh 登录的用户同时也可以通过远程登录服务器终端,不能直接限制用户拒绝登录终端,否则svn+ssh 登录也失败了,但可以修改一下用户的配置文件,使他们通过终端登录服务器后只能修改用户密码,修改完成后就马上退出。

 

       转到home 目录下的某一用户目录里,ls –a 可以发现几个隐藏的文件,执行以下命令可以实现一登录服务器就修改当前用户密码(注意,bash 前有个小点)

# echo "smbpasswd">>.bash_profile

 

exit 放到.bash_profile文件里的最后一行,实现修改完密码后就退出

# echo "exit">>.bash_profile

 

       现在,被加入exit 的用户通过终端登录服务器,一登录就退出了。但为了不被该用户删除和修改这个配置文件,把home 目录下所有的.bash_profile 改成只读

# find /home -name .bash_profile |xargs chmod 400

 

【解决sambavsftpd 中文乱码】

 

       如果在samba 中传了中文名的文件,在ftp 中会显示乱码。因为ftp 使用的是gbk 编码,samba 使用的是utf-8 编码,windows 可以识别gbk ,所以现在需要把samba 转成gbk 编码。

 

# vim /etc/samba/smb.conf

       [global]里加上以下三行

display charset = gbk

dos charset = gbk

unix charset = gbk

 

       如果原来的samba 已经存在一些文件的话,可以用convmv 转换一下,前提是要先安装convmv

# yum install convmv

 

       进入到samba 存放文件的目录,运行

# convmv -f utf8 -t gbk --notest -r ./

 

       重启smb 后就不会存在乱码的问题了。

【磁盘配额】

 

       quota 前提是所做的分区是单独的一个partition,现在我希望samba 一个分区,ftp 一个分区,而且samba 的用户限定他们1G的空间,ftp 限定他们500M的空间

 

       添加file system quota 支持

# vim /etc/fstab

LDAP 整合—— svn、samba、vsftpd --用户密码同步_第14张图片 

       在希望做配额的分区一行中,defaults 后加上” ,usrquota,grpquota” (不包括两个双引号),切记不要写错,写错的话有可能会重启加载分区的时候失败而无法开机的。

/dev/md1         /                ext3    defaults        1 1

/dev/md4         /var             ext3    defaults        1 2

/dev/md3         /home            ext3    defaults,usrquota,grpquota        1 2

/dev/md2         /srv              ext3    defaults        1 2

/dev/md0         /boot             ext3    defaults        1 2

/dev/md5         /ftp               ext3    defaults,usrquota,grpquota      1 2

 

       添加完后,确定无误,可以选择重启电脑reboot  umount 卸载quota 分区,再mount quota 分区 mount –o remount [分区],这三种方法使quota 生效。

 

       使用quotacheck 扫描一下quota 分区

# quotacheck -avug

LDAP 整合—— svn、samba、vsftpd --用户密码同步_第15张图片 

       成功的话,在相应的quota 分区下会多了aquota.group  aquota.user 两个文件

       现在可以启动quota 

# quotaon -avug

/dev/md5 [/ftp]: group quotas turned on

/dev/md5 [/ftp]: user quotas turned on

LDAP 整合—— svn、samba、vsftpd --用户密码同步_第16张图片 

       看到turned on 就证明启动成功了!

       需要开机自动运行quota的,输入以下命令,不运行就没有配额功能,即使设置了用户配额,用户在没有开启quota 的情况下所存的数据不会记录在quota blocks

# echo "quotaon -avug">>/etc/rc.d/rc.local

 

       现在开始用户磁盘空间限制了

edquota –u [用户]                              #修改用户配额

edquota –p [用户] [用户2]                 #[用户]配额复制至[用户2]

edquota –t                                         #设置宽限时间

edquota –g []                                  #设置组配额

 

       如现在需要配置rookie 用户的配额,samba 分区1Gftp 分区500M,在hard 下改相应的数字(KB为单位)

# edquota –u rookie

Disk quotas for user zhang.hao (uid 10026):

  Filesystem             blocks    soft    hard  inodes   soft   hard

  /dev/md3               16       0       0       4      0     0

  /dev/md5               20       0       0       1      0     0

 

改为

Disk quotas for user zhang.hao (uid 10026):

  Filesystem             blocks    soft    hard  inodes   soft   hard

  /dev/md3               16       0  1000000      4      0     0

  /dev/md5               20       0   500000      1      0     0

 

LDAP 整合—— svn、samba、vsftpd --用户密码同步_第17张图片

       如果需要软配额可以设置soft 项,因为我不需要,所以没设。

       之后的用户如果限额一样,可以通过edquota –p [用户] [用户2] 命令来复制限额。

开始测试

 

       要安装的都安装了,想知道整合是否成功,reboot后测试一下就可以知道了!

       万事俱备,只欠测试了!

 

SAMBA

测试】

 

       在本机或其它已安装

samba-client linux  的客户端上输入

 

 

 

# smbclient -U rookie -L 10.44.100.160

       再输入相应的密码,当你看到一些共享的文件时候,证明登录成功了!

 

Domain=[LOCALHOST] OS=[Unix] Server=[Samba 3.0.28-1.el5_2.1]

 

        Sharename       Type      Comment

        ---------       ----      -------

        share           Disk      share files

        IPC$            IPC       IPC Service (welcome)

        rookie          Disk      Home Directories

Domain=[LOCALHOST] OS=[Unix] Server=[Samba 3.0.28-1.el5_2.1]

 

        Server               Comment

        ---------            -------

 

        Workgroup            Master

        ---------            -------

        WORKGROUP           

 

 

LDAP 整合—— svn、samba、vsftpd --用户密码同步_第18张图片 

       WINDOWS平台上更容易,在开始->运行中输入要访问的samba 服务器IP

 //10.44.100.160

       提示输入用户名和密码的时候,正常输入刚刚设置的用户名和密码,能正常登录就成功了!

       LDAP 整合—— svn、samba、vsftpd --用户密码同步_第19张图片

 

 

VSFTPD 测试】

 

       在本机或其它linux 终端和windows DOS 提示符下输入

# ftp 10.44.100.160

       正常填写用户名和密码,提示Login successful. 就登录成功了!

 

SUBVERSION 测试】

 

       在本机或其它安装了SVNlinux 机器上输入

# svn list svn+ssh://[email protected]/data/repository

 

       其中rookie 是登录的用户名,10.44.100.160是登录的服务器IP,后面的是库文件的路径

       密码输入正常后就能显示库中的文件

 

       为了便于使用,介绍一款常用的svn 客户端软件 TortoiseSVN,目前最新版本是

 

       安装完成后,随便在一个文件夹点击右键,你会发现多了“SVN检出”和 TortoiseSVN”两个选项,选择“TortoiseSVN”,再选择“版本库浏览器”

 

LDAP 整合—— svn、samba、vsftpd --用户密码同步_第20张图片 

       弹出一个要求你输入URL的新窗口,输入svn服务器的URL,注意,前面要加上svn+ssh

svn+ssh://[email protected]/data/repository

LDAP 整合—— svn、samba、vsftpd --用户密码同步_第21张图片 

       有点麻烦的是,要输入几正确的密码才能登录的!但检收,更新,提交等操作就只需要输入一次密码就OK了!

       密码输入后,如果能显示相关的库文件就证明认证成功了!

      

 

       LDAP 整合教程到此完成,随着实际使用的需要和技术的提高,我会不断更新教程!

^_^

 

 

注:

部分论坛可能没上传图片,如需查看图片可浏览我的BLOG

http://blog.163.com/buypc_hao/blog/static/1079207752009227101622780/edit/

 

E-mail联系我,有PDF教程

 

更新于:2010年11月18日
后来发现[用户修改密码+安全设置]章节中,即使把.bash_profile 改权限也可以被用户删除的.因为linux的权限是看上一级目录的,home目录的用户有700的权限,所以既然home目录下的文件只有400,也可以被用户删除,因为上级目录已经赋予700的权限给下下级的目录和文件了.
为避免用户修改.bash_profile 登录服务器,可使用chattr +i 这个命令为文件附加一个不能修改和删除的权限,chattr +i 后管理员也无权删除,只有chattr -i 把i 属性去掉才可以.
所以,我们应该把
# find /home -name .bash_profile |xargs chmod 400
改为
# find /home -name .bash_profile |xargs chattr +i

你可能感兴趣的:(杂文)