環境:centos 5.9 32位
1.使用yum指令直接安裝:yum -y install vsftpd
然後為它建立日志檔案:touch /var/log/vsftpd.log
2.啟動與配置自啟動
使用chkconfig --list來檢視vsftpd服務啟動項情況;
如果看到的是如下顯示的結果:
vsftpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
服務全部都是off的,注意這裡的off表示的是伺服器啟動的時候是否會自啟動服務,我們使用如下指令來配置其自啟動:
chkconfig--level 2345 vsftpd on #2345對應的是上面對應的0-6項
檢視與管理ftp服務:
啟動ftp服務:service vsftpd start
檢視ftp服務狀态:service vsftpd status
重新開機ftp服務:service vsftpd restart
關閉ftp服務:service vsftpd stop
3.db_4資料庫維護工具安裝
#rpm –qa | grep db4
db4-devel-4.2.52-7.1
db4-4.2.52-7.1
db4-utils-4.2.52-7.1
db_load指令存在則不用再裝了,繼續下一步
否則
yuminstall db4 db4-utils 或者 yum install db4*(*表示安裝所有含db4字元的安裝包)
4.建立一個系統虛拟使用者
useradd-d /home/vsftpd -s /sbin/nologin vsftpd
sudochmod go+w /home/vsftpd -R
chmodgo+wr /home/vsftpd –R (不然配置項不起作用,不能上傳、寫目錄等)
5.建立認證資料庫檔案并設定檔案屬性
進行認證:
建立使用者密碼文本/etc/vsftpd/vuser_passwd.txt,注意奇行是使用者名,偶行是密碼
test
123456
接着,生成虛拟使用者認證的db檔案
db_load-T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db
編輯認證檔案/etc/pam.d/vsftpd
注釋掉/etc/pam.d/vsftpd中所有的内容,加入如下内容:
特别注意 以下差別
32位系統增加以下兩句:(備注:required和sufficient似乎都可以)
authsufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
accountsufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
64位系統增加以下兩句:(收集與網絡,未認證)
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
accountrequired /lib64/security/pam_userdb.sodb=/etc/vsftpd/vuser_passwd
6./etc/vsftpd/vsftpd.conf配置(主檔案配置,可将原來的檔案内容删除,将以下内容加入)
anonymous_enable=NO
local_enable=YES
user_config_dir=/etc/vsftpd/user_conf(重要,調取etc/vsftpd/user_conf下檔案,路徑寫對)
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
chroot_local_user=YES
guest_enable=YES
guest_username=vsftpd(vsftpd使用者名,與第4歩建立的檔案)
listen=YES
listen_port=21 (預設21,改為其他端口後,遠端無法擷取檔案目錄)
pasv_min_port=30000
pasv_max_port=30999
dirmessage_enable=YES
pam_service_name=vsftpd
7.建立虛拟使用者個性服務檔案
/etc/vsftpd/user_conf/test
将以下内容加入test
local_root=/opt (注意權限)
write_enable=YES
local_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES(我這裡如果是NO,則無法上傳)
idle_session_timeout=600
data_connection_timeout=120
max_clients=10
max_per_ip=5
local_max_rate=50000
8.servicevsftpd restart
注意:紅色部分要一樣
遇到的一些錯誤
530錯誤
我這裡是配置檔案錯誤導緻的
550Permission denied
網上找了N多答案,主要有,設定selinux,目錄權限是否正确,可我這裡還是不行,後來我将虛拟使用者配置檔案
anon_upload_enable= YES,問題解決,原來虛拟使用者上傳,需要匿名上傳權限
selinux的設定
我的selinux關于ftp的設定
allow_ftpd_anon_write --> on
allow_ftpd_full_access--> on
allow_ftpd_use_cifs--> on
allow_ftpd_use_nfs--> on
allow_tftp_anon_write--> on
ftp_home_dir--> on
ftpd_connect_db--> on
ftpd_disable_trans--> on
ftpd_is_daemon--> on
httpd_enable_ftp_server--> on
tftpd_disable_trans--> on
設定selinux方法:
一種方法:
#setsebool-Pftpd_disable_trans 1
重新開機vsftpd服務
另一種方法
關掉selinux
vim/etc/sysconfig/selinux
selinux=disable
然後重新開機即可。
檢視SELinux設定
# getsebool -a|grep ftp
ftpd_disable_trans --> off
或者
ftp_home_dir-->off
解決方法:
//使用setsebool指令開啟
# setsebool ftpd_disable_trans 1
# setsebool ftp_home_dir 1
再次檢視目前狀态是否是on的狀态
ftpd_disable_trans --> on
ftp_home_dir-->on
/setsebool使用-P參數,無需每次開機都輸入這個指令
# setsebool -P ftpd_disable_trans 1
# setsebool -P ftp_home_dir 1
# service vsftpd restart
本文轉自 穿越防火牆 51CTO部落格,原文連結:http://blog.51cto.com/sjitwant/1409746