CentOS6 vsFTP安裝與配置

客戶公司要架設兩臺FTP服務器分別給兩個地點的分公司使用,但是這兩臺服務器都比較老了,一臺HP 380G5 ,一臺HP 380 G4,所以他們計劃用linux,用什麼版本他們就沒說,於是我計劃用CentOS6.2,其實安裝和配置vsFTP都很簡單,網上也很多了,不過還是詳細記錄一下好 
環境:CentOS6.0+vsFTP 0:2.2.2-6.el6_2.1  


第一步:安裝vsftp pam db4
yum install vsftpd pam* db4*-y
========================================================================================

Installed: 
  db4-cxx.i686 0:4.7.25-16.el6              db4-devel.i686 0:4.7.25-16.el6  db4-devel-static.i686 0:4.7.25-16.el6  db4-java.i686 0:4.7.25-16.el6    
  db4-tcl.i686 0:4.7.25-16.el6              pam-devel.i686 0:1.1.1-10.el6   pam_ldap.i686 0:185-11.el6             pam_pkcs11.i686 0:0.6.2-11.1.el6 
  pam_ssh_agent_auth.i686 0:0.9-70.el6_2.2  vsftpd.i686 0:2.2.2-6.el6_2.1  

Dependency Installed: 
  pcsc-lite-libs.i686 0:1.5.2-6.el6 

======================================================================================== 
通過setup對系統服務及防火牆進行配置,然後reboot系統 
或者使用命令將vsftp配置爲系統服務 
chkconfig --level 35 vsftpd on


第二步:配置vsftpd服務的宿主
#useradd vsftpdadmin -s /sbin/nologin
這個vsftpdadmin只是用來替換root的,並不需要登錄

第三步:建立ftp虛擬宿主帳戶 
#useradd ftpuser -s /sbin/nologin
這ftpuser只個虛擬帳戶的宿主,本身是不用登錄的

第四步:配置vsftpd.conf
更改配置前最好備份一下然後再改 
vim /etc/vsftpd/vsftpd.conf


修改下面紅色字體的部分爲藍色字體的形式,紫色字體是配置原有的 
anonymous_enable=YES  -->  anonymous_enable=NO   //不允許匿名用戶訪問,默認是允許。 
#chroot_list_enable=YES  -->  chroot_list_enable=YES      //不允許FTP用戶離開自己主目錄,默認是被註釋掉的。 
#chroot_list_file=/etc/vsftpd/chroot_list --> chroot_list_file=/etc/vsftpd/chroot_list  
//如果開啓了chroot_list_enable=YES,那麼一定要開啓這個,這條是鎖定登錄用戶只能家目錄的位置,如果不開啓用戶登錄時就會報500 OOPS的錯。 
注意:/etc/vsftp/chroot_list本身是不存在的,這要建立vim /etc/vsftp/chroot_list,然後將帳戶輸入一行一個,保存就可以了
local_enable=YES      //允許本地用戶訪問,默認就是YES,不用改 
write_enable=YES      //允許寫入,默認是YES,不用改 
local_umask=022
       //上傳後文件的權限掩碼,不用改 
dirmessage_enable=YES //開啓目錄標語,默認是YES,開不開無所謂,我是默認就行 
xferlog_enable=YES    //開啓日誌,默認是YES,不用改 
connect_from_port_20=YES   //設定連接端口20 
xferlog_std_format=YES   //設定vsftpd的服務日誌保存路徑,不用改 
(這步後面要有幾個操作才能運行,也就是touch這個文件(見第五步),因爲它本身不存在,而且還要給文件寫入的權限) 
#idle_session_timeout=600  -->  idle_session_timeout=600  //會話超時,客戶端連接到ftp但未操作,默認被註釋掉,可根據個人情況修改 
#async_abor_enable=YES  -->   async_abor_enable=YES     //支持異步傳輸功能,默認是註釋掉的,去掉註釋 
#ascii_upload_enable=YES  -->   ascii_upload_enable=YES   //支持ASCII模式的下載功能,默認是註釋掉的,去掉註釋 
#ascii_download_enable=YES  -->   ascii_download_enable=YES   //支持ASCII模式的上傳功能,默認是註釋掉的,去掉註釋 
#ftpd_banner=Welcome to blah FTP service  //FTP的登錄歡迎語,本身是被註釋掉的,去不去都行 
#chroot_local_user=YES  --> chroot_local_user=YES    //禁止本地用戶登出自己的FTP主目錄,本身被註釋掉,去掉註釋 
pam_service_name=vsftpd  //設定pam服務下vsftpdd的驗證配置文件名,不用改 
userlist_enable=YES    //拒絕登錄用戶名單,不用改 
TCP_wrappers=YES    //限制主機對VSFTP服務器的訪問,不用改(通過/etc/hosts.deny和/etc/hosts.allow這兩個文件來配置) 
增加
guest_enable=YES    //設定啓用虛擬用戶功能。 
guest_username=ftpuser   //指定虛擬用戶的宿主用戶。 
virtual_use_local_privs=YES   //設定虛擬用戶的權限符合他們的宿主用戶。 
user_config_dir=/etc/vsftpd/vconf   //設定虛擬用戶個人Vsftp的配置文件存放路徑 


第五步:建立日誌文件
#touch /var/log/vsftpd.log    //日誌文件 
#chown vsftpdadmin.vsftpdadmin /var/log/vsftpd.log   //屬於vsftpdadmin這個宿主

第六步:建立虛擬用戶文件
#mkdir /etc/vsftpd/vconf/ 
#touch /etc/vsftpd/vconf/vir_user

第七步:建立虛擬用戶 
#vim /etc/vsftpd/vconf/vir_user 
virtualuser           //用戶名 
12345678           //密碼

注意:第一行用戶名,第二行是上一行用戶名的密碼,其他人的以此類推

第八步:生成數據庫
#db_load -T -t hash -f /etc/vsftpd/vconf/vir_user /etc/vsftpd/vconf/vir_user.db

第九步:設置數據庫文件的訪問權限
#chmod 600 /etc/vsftpd/vconf/vir_user.db 
#chmod 600 /etc/vsftpd/vconf/vir_user

第十步:修改/etc/pam.d/vsftpd內容
echo "auth required pam_userdb.so db=/etc/vsftpd/vconf/vir_user" > /etc/pam.d/vsftpd 
echo "account required pam_userdb.so db=/etc/vsftpd/vconf/vir_user" >> /etc/pam.d/vsftpd 

第十步:創建用戶的配置文件
注意:用戶配置文件的名字要和創建的“虛擬用戶”名字對應 
#touch /etc/vsftpd/vconf/virtualuser 
#vim /etc/vsftpd/vconf/virtualuser 
輸入:
local_root=/home/virtualuser           //虛擬用戶的個人目錄路徑 
anonymous_enable=NO 
write_enable=YES 
local_umask=022 
anon_upload_enable=NO 
anon_mkdir_write_enable=NO 
idle_session_timeout=600 
data_connection_timeout=120 
max_clients=10 
max_per_ip=5 
local_max_rate=1048576
     //本地用戶的最大傳輸速度,單位是Byts/s,我設定的是10M

第十一步:建立虛擬用戶目錄
如果不建立虛擬用戶的個人目錄,那麼所有的虛擬用戶登錄後所在的目錄都是同一個目錄下 
# mkdir /home/virtualuser 
# chown ftpuser.ftpuser ./virtualuser 
# chmod 600 /home/virtualuser 
配置就此完成,如果想增加新的用戶,只要按照上面的第七步、第十步進行就可以了。

遇到的問題                                                    問題
其實這回遇到的問題不多。 
1,450:讀取目錄列表失敗 
在配置完第一臺vsftp後(上面的配置就是)再用同樣的過程做第二臺,完成後用客戶端和瀏覽器死活無法登錄報錯: 
450:讀取目錄列表失敗 
只有在命令提示符和Termin下通過ftp 192.168.88.30後ls沒有問題 
對比了之前的配置,每一步都沒錯,難到是PASV問題,於是在vsftpd.conf加上了一句pasv_enable=NO,然後……沒然後了,一切都正常了

2、中文亂碼
這個是老生常談的問題,好象也一直沒有什麼好的解決辦法,網上也有提出改i18n,不過客戶提出不用改,他們公司主要都是英文檔,也我也省事了,不過還是當個問題記錄吧 

3、500 OOPS:cannot change directory:/home/pmfile
新建用戶後登錄報錯,剛開始以爲是selinux的問題,後來一想不對,其他的帳號都沒事,肯定剛纔己關閉了selinux,那麼就是權限問題了,果然是剛纔忘了把權限給虛擬ftp宿主權限了:chown -R ftpuser.ftpuser /home/publicfile

4、530錯誤:Login incorrect.
這是一個讓我覺的搞笑的問題,第二臺vsftp服務我用自己的本上的客戶端(FileZilla)登錄沒問題,而客戶用他的本登錄就不行,用的軟件都一樣,不同的是我用的是Ubuntu,他用的是win7,但在win7的命令提示符下他卻也能登錄也能ls,不是權限問題,不是pam問題,這兩塊都着手試過,結果發現是客戶在終端輸入的密碼錯誤,之前我還一再問他到底有沒有輸錯密碼,他也十分肯定的說沒有,結果……

5、外網無法登錄,550錯誤,錯誤: 讀取目錄列表失敗

這個問題很是撓頭,在做完第二臺服務器後讓客戶先從內網登錄,一切都很正常,而從外網登錄時就會出現“550 Permission denied.”“錯誤: 連接超時”“錯誤: 讀取目錄列表失敗”,難到是權限?
試來試去什麼PASV、什麼權限更改全做了(這一步是我着實不想做的,要是登錄用戶權限有問題內網也該無法登錄),最後讓客戶的網管帶我去查了一下他們路由器的配置,我才發現他們的內網映射沒有開放TCP20端口,開放後就OK了

本文出自 “青瞳” 博客,請務必保留此出處http://icedot.blog.51cto.com/61369/772452

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章