找了很久,終於找到像樣一點的文章,很詳細,參數方面懂英文基本能看懂,一個教程是否有用,關鍵在於細節。錯了一點點就不能配下去了。
------------------------------------------------------------------------------------------------
1. 查看是否安裝vsftp
rpm –qa|grep vsftpd
如果出現 vsftpd-2.0.5-16.el5_5.1 說明已經安裝 vsftp
安裝vsftp
yum -y install vsftpd
2. 測試是否安裝成功(ip 改成自己啊,不要用俺的此次登錄為匿名登錄 user: anonymous 密碼為空 如果成功登錄會有下面內容 這說明vsftpd安裝成功)如果沒有ftp命令,請運行yum install -y ftp
[root@localhost ~]#service vsftpd start
為 vsftpd 啟動 vsftpd:[確定]
[root@localhost ~]#ftp 127.0.0.1
Connected to127.0.0.1.
220 (vsFTPd 2.0.5)
530 Please loginwith USER and PASS.
530 Please loginwith USER and PASS.
KERBEROS_V4 rejectedas an authentication type
Name(127.0.0.1:root): anonymous
331 Please specifythe password.
Password:
230 Loginsuccessful.
Remote system typeis UNIX.
Using binary mode totransfer files.
ftp> bye
221 Goodbye.
[root@localhost ~]#
3. 修改配置文件/etc/vsftpd/vsftpd.conf
[root@localhost ~]#vi /etc/vsftpd/vsftpd.conf
取消下面內容前面的注釋或添加
anonymous_enable=YES/NO 是否允許匿名用戶訪問
chroot_list_enable=YES 限定用戶不可以離開主目錄
chroot_list_file=/etc/vsftpd/chroot_list
loca_enable=YES/NO 本地用戶是否可以訪問 注:如果為NO 則所有虛擬用戶都將不能訪問原因:虛擬用戶訪問在主機上其實是以本地用戶訪問的
pam_service_name=vsftpd pam認證文件名在/etc/pam.d/vsftpd
guest_enable=YES 啟用虛擬用戶功能
guest_username=ftp 指定虛擬用戶的宿主用戶 –centos 里面已經有內置的ftp用戶了(注:此用戶在chroot_list_file=/etc/vsftpd/chroot_list文件里所指定的用戶)
user_config_dir=/etc/vsftpd/vuser_conf 設置虛擬用戶個人vsftp的服務配置文件
(此文件后面不能出現空格)
4. 查看是否安裝 db4 db4-utils
[root@localhost ~]#rpm -qa|grep db4 運行后出現下面內容 說明已經安裝可以使用db_load命令(主要是 db4-utils)
db4-devel-4.3.29-10.el5_5.2
db4-4.3.29-10.el5_5.2
db4-devel-4.3.29-10.el5_5.2
db4-4.3.29-10.el5_5.2
db4-tcl-4.3.29-10.el5_5.2
db4-utils-4.3.29-10.el5_5.2
[root@localhost ~]#
如果沒安裝則要安裝db4-utils
4.1安裝db4-utils
[root@localhost ~]#yum -y install db4-utils
5. 創建 chroot_list_file=/etc/vsftpd/chroot_list文件
[root@localhost ~]#vi /etc/vsftpd/chroot_list (編輯文件把 /etc/vsftpd/vsftpd.conf 中guest_username的值寫到文件中本例中為 ftp)
或者直接按下面進行操作
[root@localhost ~]#touch /etc/vsftpd/chroot_list
[root@localhost ~]# echoftp >> /etc/vsftpd/chroot_list (此處ftp 也要是/etc/vsftpd/vsftpd.conf中的guest_username的值)
6. 創建虛擬用戶目錄(密碼文本)
[root@localhost ~]#vi /etc/vsftpd/vftpuser.txtx (奇數行為用戶名 ,偶數行為密碼)
本文中添加如下(用cat 命令查看)
[root@localhost ~]#cat /etc/vsftpd/vftpuser.txtx
hope
hope
aa
zzzzz
[root@localhost ~]#
7.生成虛擬用戶的db文件
[root@localhost ~]#db_load -T -t hash -f /etc/vsftpd/vftpuser.txtx /etc/vsftpd/vftpuser.db
8. 生成虛擬用戶的認證文件
[root@localhostvsftpd]# vi /etc/pam.d/vsftpd
#%PAM-1.0
session optional pam_keyinit.so force revoke
auth required pam_listfile.so item=user sense=denyfile=/etc/vsftpd/ftpusers onerr=succeed
auth required pam_shells.so
auth include system-auth
account include system-auth
session include system-auth
session required pam_loginuid.so
注釋掉/etc/pam.d/vsftpd中所有的內容 反正已經不要本地用戶的認證了
特別注意 以下區別
32位系統增加以下兩句:
auth required pam_userdb.so db=/etc/vsftpd/vftpuser
account required pam_userdb.so db=/etc/vsftpd/vftpuser
64位系統增加以下兩句:
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vftpuser
account required /lib64/security/pam_userdb.sodb=/etc/vsftpd/vftpuser
這里我發現加了db后綴以后就不識別數據庫了,51cto大大的一篇教程里面就是加了db,結果完全讀不了數據庫,當然也就不能認證啦。
注:db=/etc/vsftpd/vftpuser 中的vftpuser 是你生成的虛擬用戶的db文件
9. 創建每個虛擬用戶自己的配置文件,配置文件的路徑是/etc/vsftpd/vsftpd.conf中的
user_config_dir=/etc/vsftpd/vuser_conf路徑
在 /etc/vsftpd/vuser_conf/下面創建以用戶名為名稱的文件(名稱是/etc/vsftpd/vftpuser.txtx 下面的奇數行)
[root@localhostvsftpd]# cat /etc/vsftpd/vftpuser.txtx
hope
hope
aa
zzzzz
[root@localhostvsftpd]# mkdir vuser_conf
[root@localhostvsftpd]# vi /etc/vsftpd/vuser_conf/hope
內容如下
local_root=/var/www(虛擬用戶的根目錄根據實際修改)
write_enable=YES (可寫)
download_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_umask=022
10. 給文夾權限(否則不能上傳 權限可自定 本人給的是 777)
[root@localhostvsftpd]# chmod 777 /var/www/
11. 重啟vsftpd
[root@localhostvsftpd]# service vsftpd restart
到此安裝配置完成 如果出現連接被 同位體重置 或其它錯誤 請查看SELinux的當前模式
12. 登錄測試
[root@localhost vsftpd]# ftp 127.0.0.1
Connected to 127.0.0.1.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as anauthentication type
Name (127.0.0.1:root): hope
331 Please specify the password.
Password:
500 OOPS: cannot changedirectory:/var/www
Login failed.
ftp>
查看方法
[root@localhost vsftpd]# getenforce
Enforcing 如果出現(Enforcing )
關閉方法:[root@localhost vsftpd]#setenforce 0(0|1 開|關)
再次測試 登錄成功
[root@localhost vsftpd]# chmod 777/var/www/
[root@localhost vsftpd]# ftp 127.0.0.1
Connected to 127.0.0.1.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as anauthentication type
Name (192.168.1.107:root): hope
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
查看系統是多少位的命令
[root@bogon ~]# getconf LONG_BIT
64 (64|32)