|
終于完成了,由于自己菜的原因,這個整合花了我好多時間??!一開始UID同步,但密碼不同步,現(xiàn)在密碼都是用smbpasswd 同步管理的。現(xiàn)在把自己的成果分享給大家,哪里寫錯或解釋錯請糾正,有問題可在BLOG中留言,我看到后第一時間會回復(fù)的。
安裝前準備本教程的系統(tǒng)平臺: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配置
復(fù)制samba.schema 到ldap 的安裝目錄下的schema 目錄,以便ldap 整合samba # cp /usr/share/doc/samba-3.0.28/LDAP/samba.schema /etc/openldap/schema/samba.schema
復(fù)制DB_CONFIG數(shù)據(jù)文件到ldap指定的數(shù)據(jù)目錄,默認在/var/lib/ldap下 # cp /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
開始編輯openldap的config 文件 # vim /etc/openldap/slapd.conf 在include /etc/openldap/schema/XXX.schema 下添加以下一行 include /etc/openldap/schema/samba.schema #加載samba模塊
把suffix、rootdn、rootpw修改為, suffix "dc=rookie,dc=com" #基本dc 信息 rootdn "cn=root,dc=iaspec,dc=com" #管理員信息 rootpw iaspec123 #管理員密碼,默認已被注釋,可去掉’#’
OK,保存退出!
導(dǎo)入初始數(shù)據(jù) 請自己創(chuàng)建一個初始數(shù)據(jù)的文件 # 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
保存退出后導(dǎo)入剛剛創(chuàng)建的數(shù)據(jù)(導(dǎo)入前先啟動ldap) # ldapadd -x -D "cn=root,dc=rookie,dc=com" -w root123 -f /data/data.ldif
看到以下信息就證明導(dǎo)入成功了 adding new entry "dc=rookie,dc=com" adding new entry "cn=root,dc=rookie,dc=com"
再創(chuàng)建一個ou # vim ou.ldif
dn: ou=user,dc=rookie,dc=com objectClass: top objectClass: organizationalUnit ou: user
再導(dǎo)入 # ldapadd -x -D "cn=root,dc=rookie,dc=com" -w root123 -f /data/ou.ldif
添加ldap 系統(tǒng)日志 # vim /etc/syslog.conf
在最后添加一行 local4.* /var/log/ldap.log 保存退出后重啟syslog,OK!
VSFTPD 配置
這個服務(wù)沒什么設(shè)置的,簡單修改一下配置文件 # vim /etc/vsftpd/vsftpd.conf
安全考慮,把匿名關(guān)閉 anonymous_enable=NO
xferlog_file=/var/log/vsftpd.log 把默認注釋“#”去掉
在文件最底添加以下幾行 local_root=/data #作用是指定用戶登錄后的目錄 chroot_local_user=YES #用戶不能離開自家目錄
Ok,保存退出!
SAMBA 配置
編輯smb 的配置文件 # vim /etc/samba/smb.conf 修改以下行 workgroup = WORKGROUP #設(shè)定工作組 passdb backend = ldapsam:ldap://127.0.0.1 #指定用戶驗證的LDAP服務(wù)器地址
添加以下行 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 #是否有寫的權(quán)限
SUBVERSION 配置
svn 不需要改配置文件,只需要建了資料庫和導(dǎo)入數(shù)據(jù)就行了!
創(chuàng)建資料庫 # svnadmin create /data/repository 當看到/data/repository 目錄下自動生成了幾個文件就證明資料庫創(chuàng)建成功了!
把數(shù)據(jù)導(dǎo)入到SVN的資料庫 # svn import /data/program/ file:///data/repository -m "program data" 說明一下,前面的路徑是你要導(dǎo)入數(shù)據(jù)的路徑,后面的路徑是你前面創(chuàng)建的資料庫路徑,-m 后面只是一個描述文字。
其它 配置
【authconfig-tui設(shè)置】
運行# authconfig-tui user information 選擇 [Use LDAP] authentication 選擇 [Use MD5 Passwords] [Use Shadow Passwords] [Use LDAP Authentication] [Use SMB Authentication]
下一步之后,LDAP Setting 框中的 Base DN 填入服務(wù)器的DN dc=rookie,dc=com
再下一步,SMB Settings 柜中Servers 填入服務(wù)器IP 127.0.0.1
【SELINUX關(guān)閉】
因為SELINUX開啟的原因,可能會有不少出錯,現(xiàn)在把SELINUX關(guān)閉 # vim /etc/selinux/config SELINUX=enforcing 改成 SELINUX=disabled 保存退出,關(guān)閉了selinux 后要重啟才能生效。
除了關(guān)閉selinux ,使用某些服務(wù)的時候還是有限制,如果出現(xiàn)限制問題,查看自己Firewall 里相應(yīng)的端口有沒有打開,從安全角度上看,做為服務(wù)器Firewall 是不能關(guān)的,如果作為配置學習,可以暫時把Firewall 關(guān)閉。
【apache 設(shè)置】
修下一下apache 的配置,到時在LDAP中添加一個UID用戶,方便在瀏覽器中瀏覽svn 的庫文件(這一步可有可無)。 # vim /etc/httpd/conf/httpd.conf 在最后的位置加上
<Location /svn> 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" //網(wǎng)站說明文字 Require valid-user //允許合法用戶登錄 </Location>
安裝一個組件,否則啟動httpd 的時候會報以下錯誤
Starting httpd: Syntax error on line 993 of /etc/httpd/conf/httpd.conf: Unknown DAV provider: svn
# yum install mod_dav_svn
現(xiàn)在svn整合了apache 了,但不是標題說到的那種密碼同步的整合,這一小節(jié)的整合目的只是提供用戶能在瀏覽器上查看一下版本庫的資料,前提是在openldap 的客戶端添加一個uid,才能在瀏覽器中登錄svn資料庫。
【ssh安裝】
安裝SSH的目的是希望svn 能與ssh 整合成一個訪問模式,通過svn+ssh 訪問才能同步系統(tǒng)用戶的用戶名和密碼。 # yum install ssh*
簡單配置一下ssh # vim /etc/ssh/sshd_config
#PermitEmptyPasswords no 改成 PermitEmptyPasswords no #不允許空密碼登錄
保存退出
【開機自動啟動服務(wù)】
每次開始都要server XXX start 多麻煩啊,不過,可以把他們設(shè)成開機自動運行 # ntsysv
啟動服務(wù)管理窗口后,在以下服務(wù)前的[]加上*號(按空格鍵) [*]httpd [*]ldap [*]smb [*]vsftpd [*]sshd
OK后退出 隨便提一下,有時開啟會在加載IPV6的時候等很久 applying ip6tables firewall rules: 我們其實可以把IPV6停了,把ip6tables 前面的* 去掉就行了! [ ]ip6tables 【用戶添加】
由于 SAMBA 的用戶由 smbpasswd 來管理,而在LDAP中新建的svn UID用戶的密碼又不能由smbpasswd 來設(shè)置,所以只能用戶和密碼都由 smbpasswd 來管理了,換句話說,用戶和密碼都在終端里創(chuàng)建的。
SAMBA用到的用戶必須是系統(tǒng)用戶,所以建SAMBA用戶前要先建系統(tǒng)用戶 也為了方便管理,我們把使用在subversion,samba,vsftpd的用戶放在同一個組里,有需要的話也可以按照部門來分 # groupadd team 建立一個team 的組
# useradd rookie –g team 建立一個屬于 team 組的 rookie 用戶
新建一個 rookie 的系統(tǒng)用戶后,就可以新建一個相應(yīng)的samba 用戶 # smbpasswd –a rookie
輸入密碼后,提示 Added user rookie ,證明成功建立了smb用戶
如果需要修改密碼就輸入 smbpasswd [用戶],就能修改相應(yīng)的用戶密碼,而且同時把subversion、vsftpd 的登錄密碼也修改了
【用戶修改密碼+安全設(shè)置】
希望用戶能自行修改密碼,但又不希望他能訪問服務(wù)器其它目錄。
通過svn+ssh 登錄的用戶同時也可以通過遠程登錄服務(wù)器終端,不能直接限制用戶拒絕登錄終端,否則svn+ssh 登錄也失敗了,但可以修改一下用戶的配置文件,使他們通過終端登錄服務(wù)器后只能修改用戶密碼,修改完成后就馬上退出。
轉(zhuǎn)到home 目錄下的某一用戶目錄里,ls –a 可以發(fā)現(xiàn)幾個隱藏的文件,執(zhí)行以下命令可以實現(xiàn)一登錄服務(wù)器就修改當前用戶密碼(注意,bash 前有個小點) # echo "smbpasswd">>.bash_profile
把exit 放到.bash_profile文件里的最后一行,實現(xiàn)修改完密碼后就退出 # echo "exit">>.bash_profile
現(xiàn)在,被加入exit 的用戶通過終端登錄服務(wù)器,一登錄就退出了。但為了不被該用戶刪除和修改這個配置文件,把home 目錄下所有的.bash_profile 改成只讀 # find /home -name .bash_profile |xargs chmod 400
【解決samba、vsftpd 中文亂碼】
如果在samba 中傳了中文名的文件,在ftp 中會顯示亂碼。因為ftp 使用的是gbk 編碼,samba 使用的是utf-8 編碼,windows 可以識別gbk ,所以現(xiàn)在需要把samba 轉(zhuǎn)成gbk 編碼。
# vim /etc/samba/smb.conf 在[global]里加上以下三行 display charset = gbk dos charset = gbk unix charset = gbk
如果原來的samba 已經(jīng)存在一些文件的話,可以用convmv 轉(zhuǎn)換一下,前提是要先安裝convmv # yum install convmv
進入到samba 存放文件的目錄,運行 # convmv -f utf8 -t gbk --notest -r ./
重啟smb 后就不會存在亂碼的問題了。 【磁盤配額】
quota 前提是所做的分區(qū)是單獨的一個partition,現(xiàn)在我希望samba 一個分區(qū),ftp 一個分區(qū),而且samba 的用戶限定他們1G的空間,ftp 限定他們500M的空間
添加file system 的quota 支持 # vim /etc/fstab
在希望做配額的分區(qū)一行中,defaults 后加上” ,usrquota,grpquota” (不包括兩個雙引號),切記不要寫錯,寫錯的話有可能會重啟加載分區(qū)的時候失敗而無法開機的。 /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 分區(qū),再mount quota 分區(qū) 或 mount –o remount [分區(qū)],這三種方法使quota 生效。
使用quotacheck 掃描一下quota 分區(qū) # quotacheck -avug
成功的話,在相應(yīng)的quota 分區(qū)下會多了aquota.group aquota.user 兩個文件 現(xiàn)在可以啟動quota 了 # quotaon -avug /dev/md5 [/ftp]: group quotas turned on /dev/md5 [/ftp]: user quotas turned on
看到turned on 就證明啟動成功了! 需要開機自動運行quota的,輸入以下命令,不運行就沒有配額功能,即使設(shè)置了用戶配額,用戶在沒有開啟quota 的情況下所存的數(shù)據(jù)不會記錄在quota 的blocks中 # echo "quotaon -avug">>/etc/rc.d/rc.local
現(xiàn)在開始用戶磁盤空間限制了 edquota –u [用戶] #修改用戶配額 edquota –p [用戶] [用戶2] #把[用戶]配額復(fù)制至[用戶2] edquota –t #設(shè)置寬限時間 edquota –g [組] #設(shè)置組配額
如現(xiàn)在需要配置rookie 用戶的配額,samba 分區(qū)1G,ftp 分區(qū)500M,在hard 下改相應(yīng)的數(shù)字(以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
如果需要軟配額可以設(shè)置soft 項,因為我不需要,所以沒設(shè)。 之后的用戶如果限額一樣,可以通過edquota –p [用戶] [用戶2] 命令來復(fù)制限額。 要安裝的都安裝了,想知道整合是否成功,reboot后測試一下就可以知道了! 萬事俱備,只欠測試了! # smbclient -U rookie -L 10.44.100.160 再輸入相應(yīng)的密碼,當你看到一些共享的文件時候,證明登錄成功了!
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
在WINDOWS平臺上更容易,在開始->運行中輸入要訪問的samba 服務(wù)器IP 如 //10.44.100.160 提示輸入用戶名和密碼的時候,正常輸入剛剛設(shè)置的用戶名和密碼,能正常登錄就成功了!
【VSFTPD 測試】
在本機或其它linux 終端和windows DOS 提示符下輸入 # ftp 10.44.100.160 正常填寫用戶名和密碼,提示Login successful. 就登錄成功了!
【SUBVERSION 測試】
在本機或其它安裝了SVN的linux 機器上輸入 # svn list svn+ssh://rookie@10.44.100.160/data/repository
其中rookie 是登錄的用戶名,10.44.100.160是登錄的服務(wù)器IP,后面的是庫文件的路徑 密碼輸入正常后就能顯示庫中的文件
為了便于使用,介紹一款常用的svn 客戶端軟件 TortoiseSVN,目前最新版本是
安裝完成后,隨便在一個文件夾點擊右鍵,你會發(fā)現(xiàn)多了“SVN檢出”和 “TortoiseSVN”兩個選項,選擇“TortoiseSVN”,再選擇“版本庫瀏覽器”
彈出一個要求你輸入URL的新窗口,輸入svn服務(wù)器的URL,注意,前面要加上svn+ssh svn+ssh://rookie@10.44.100.160/data/repository 有點麻煩的是,要輸入幾正確的密碼才能登錄的!但檢收,更新,提交等操作就只需要輸入一次密碼就OK了! 密碼輸入后,如果能顯示相關(guān)的庫文件就證明認證成功了!
LDAP 整合教程到此完成,隨著實際使用的需要和技術(shù)的提高,我會不斷更新教程! ^_^
注: 部分論壇可能沒上傳圖片,如需查看圖片可瀏覽我的BLOG http://blog.163.com/buypc_hao/blog/static/1079207752009227101622780/edit/
或E-mail聯(lián)系我,有PDF教程
更新于:2010年11月18日 |
|
|