終于完成了,由于自己菜的原因,這個整合花了我好多時間?。∫婚_始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
復(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ù)目錄,默認(rèn)在/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 #管理員密碼,默認(rèn)已被注釋,可去掉’#’
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!
這個服務(wù)沒什么設(shè)置的,簡單修改一下配置文件
# vim /etc/vsftpd/vsftpd.conf
安全考慮,把匿名關(guān)閉
anonymous_enable=NO
xferlog_file=/var/log/vsftpd.log 把默認(rèn)注釋“#”去掉
在文件最底添加以下幾行
local_root=/data #作用是指定用戶登錄后的目錄
chroot_local_user=YES #用戶不能離開自家目錄
Ok,保存退出!
編輯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)限
svn 不需要改配置文件,只需要建了資料庫和導(dǎo)入數(shù)據(jù)就行了!
創(chuàng)建資料庫
# svnadmin create /data/repository
當(dāng)看到/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
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開啟的原因,可能會有不少出錯,現(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)的,如果作為配置學(xué)習(xí),可以暫時把Firewall 關(guān)閉。
修下一下apache 的配置,到時在LDAP中添加一個UID用戶,方便在瀏覽器中瀏覽svn 的庫文件(這一步可有可無)。
# vim /etc/httpd/conf/httpd.conf
在最后的位置加上
<Location /svn>
DAV svn //開啟sbuversion
SVNPath /data/ repository //庫的目錄
AuthType Basic //使用基本的密碼認(rèn)證
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 了,但不是標(biāo)題說到的那種密碼同步的整合,這一小節(jié)的整合目的只是提供用戶能在瀏覽器上查看一下版本庫的資料,前提是在openldap 的客戶端添加一個uid,才能在瀏覽器中登錄svn資料庫。
安裝SSH的目的是希望svn 能與ssh 整合成一個訪問模式,通過svn+ssh 訪問才能同步系統(tǒng)用戶的用戶名和密碼。
# yum install ssh*
簡單配置一下ssh
# vim /etc/ssh/sshd_config
#PermitEmptyPasswords no 改成 PermitEmptyPasswords no #不允許空密碼登錄
保存退出
每次開始都要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 的登錄密碼也修改了
希望用戶能自行修改密碼,但又不希望他能訪問服務(wù)器其它目錄。
通過svn+ssh 登錄的用戶同時也可以通過遠程登錄服務(wù)器終端,不能直接限制用戶拒絕登錄終端,否則svn+ssh 登錄也失敗了,但可以修改一下用戶的配置文件,使他們通過終端登錄服務(wù)器后只能修改用戶密碼,修改完成后就馬上退出。
轉(zhuǎn)到home 目錄下的某一用戶目錄里,ls –a 可以發(fā)現(xiàn)幾個隱藏的文件,執(zhí)行以下命令可以實現(xiàn)一登錄服務(wù)器就修改當(dāng)前用戶密碼(注意,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 中傳了中文名的文件,在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后測試一下就可以知道了! 萬事俱備,只欠測試了! 開始測試
【SAMBA
測試】
# smbclient -U rookie -L 10.44.100.160
再輸入相應(yīng)的密碼,當(dā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è)置的用戶名和密碼,能正常登錄就成功了!
在本機或其它linux 終端和windows DOS 提示符下輸入
# ftp 10.44.100.160
正常填寫用戶名和密碼,提示Login successful. 就登錄成功了!
在本機或其它安裝了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)的庫文件就證明認(rèn)證成功了!
LDAP 整合教程到此完成,隨著實際使用的需要和技術(shù)的提高,我會不斷更新教程!
^_^
注:
部分論壇可能沒上傳圖片,如需查看圖片可瀏覽我的BLOG
http://blog.163.com/buypc_hao/blog/static/1079207752009227101622780/edit/
或E-mail聯(lián)系我,有PDF教程
更新于:2010年11月18日
后來發(fā)現(xiàn)[用戶修改密碼+安全設(shè)置]章節(jié)中,即使把.bash_profile 改權(quán)限也可以被用戶刪除的.因為linux的權(quán)限是看上一級目錄的,home目錄的用戶有700的權(quán)限,所以既然home目錄下的文件只有400,也可以被用戶刪除,因為上級目錄已經(jīng)賦予700的權(quán)限給下下級的目錄和文件了.
為避免用戶修改.bash_profile 登錄服務(wù)器,可使用chattr +i 這個命令為文件附加一個不能修改和刪除的權(quán)限,chattr +i 后管理員也無權(quán)刪除,只有chattr -i 把i 屬性去掉才可以.
所以,我們應(yīng)該把
# find /home -name .bash_profile |xargs chmod 400
改為
# find /home -name .bash_profile |xargs chattr +i