/#
 # =====================================================================================
 #
 #       Filename:  xx.c
 #
 #    Description: 
 #
 #        Version:  1.0
 #        Created:  2010年10月20日 22時16分05秒
 #       Revision:  none
 #       Compiler:  gcc
 #
 #         Author:  chen_baocheng (Richard), baoch8@163.com
 #        Company:  RYOYO
 #
 # =====================================================================================
 #/
[root@RHCE ~]# rpm -qa | grep vsftpd
[root@RHCE ~]# mount /dev/cdrom-hda /mnt
mount: block device /dev/cdrom-hda is write-protected, mounting read-only
[root@RHCE ~]# cp /mnt/Server/vsftpd-2.0.5-16.el5.i386.rpm /
[root@RHCE ~]# chmod 755 /vsftpd-2.0.5-16.el5.i386.rpm
[root@RHCE ~]# rpm -ivh /vsftpd-2.0.5-16.el5.i386.rpm
warning: /vsftpd-2.0.5-16.el5.i386.rpm: Header V3 DSA sign
Preparing…                ########################################### [100%]
   1:vsftpd                 ########################################### [100%]
#如果這個時候你希望只是想做匿名下載的話,那麼,基本上預設的配置檔案已經滿足你的需求了。
#如果希望在這裡使用系統賬戶登陸的話,只需要增加賬戶就行了。
#例如:有三個使用者,chen bao cheng 三個賬戶是系統賬戶,並且希望chen這賬戶可以使用FTP,並且它在上傳與下載時,將速度限制成10KB/s
#1、建立三個賬戶,並設定密碼,並將shell設定成nologin.修改/etc/vsftpd/ftpusers檔案,加入bao cheng這兩個賬戶。
#確保/etc/vsftp/vsftpd.conf裡的local_enable=YES.因為local_root沒有設定,所以chen登入後,會進入其家目錄!
#以下為配置檔案
# Example config file /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
idle_session_timeout=600
data_connection_timeout=120
ftpd_banner=Welcome to blah
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
local_max_rate=10000
#測試,先在chen的使用者裡建立一個檔案,並測試。
[root@OS ~]# ftp 192.168.10.188
Connected to 192.168.10.188.
220 Welcome to blah FTP service.
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
me (192.168.10.188:root): chen
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,10,188,246,92)
150 Here comes the directory listing.
 -rw-r–r–    1 0        0               0 Oct 20 23:04 123
226 Directory send OK.
ftp> get phlinux10all.tar.gz
local: phlinux10all.tar.gz remote: phlinux10all.tar.gz
227 Entering Passive Mode (192,168,10,188,122,23)
150 Opening BINARY mode data connection for phlinux10all.tar.gz (2970276 bytes).
226 File send OK.
2970276 bytes received in 2.9e+02 seconds (10 Kbytes/s)ame (192.168.10.188:root): chen
[root@OS Desktop]# ftp 192.168.10.188
Connected to 192.168.10.188.
220 Welcome to blah FTP service.
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (192.168.10.188:root): bao
331 Please specify the password.
Password:
530 Login incorrect.
Login failed.
2、虛擬使用者的部分
#有10個使用者,一部分為VIP的客戶,一部分是公共使用者。
[root@RHCE /]# rpm -ivh db4*
warning: db4-java-4.3.29-10.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing…                ########################################### [100%]
   1:db4-utils              ########################################### [ 33%]
   2:db4-java               ########################################### [ 67%]
   3:db4-tcl                ########################################### [100%]
[root@RHCE /]# rpm -qa | grep ^db4
db4-tcl-4.3.29-10.el5
db4-devel-4.3.29-10.el5
db4-utils-4.3.29-10.el5
db4-java-4.3.29-10.el5
db4-4.3.29-10.e
[root@RHCE /]# vim /etc/vsftpd/vuser.txt
[root@RHCE /]# db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db
#cat /etc/pam.d/vsftpd
auth        required    /lib/security/pam_userdb.so     db=/etc/vsftpd/vuser
account     required    /lib/security/pam_userdb.so     db=/etc/vsftpd/vuser
設定對應的賬戶:
vip客戶=vip    公共使用者=pub
vip的賬戶有redhat, cisco
pub的賬戶有microsoft
[root@RHCE /]# useradd -s /sbin/nologin -d /var/ftp/vip vip
[root@RHCE /]# useradd -s /sbin/nologin -d /var/ftp/public pub
[root@RHCE /]# passwd vip
Changing password for user vip.
New UNIX password:
BAD PASSWORD: it is too simplistic/systematic
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@RHCE /]# passwd pub
Changing password for user pub.
New UNIX password:
BAD PASSWORD: it is too simplistic/systematic
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
將虛擬使用者的配置檔案放在vsftpd_user_conf裡,並且每個虛擬使用者對應一個檔案
#/etc/vsftpd/vsftpd_user_conf/redhat
local_root=/var/ftp/vip
guest_enable=YES
guest_username=vip
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_upload_enable=YES
anon_world_readable_only=NO
anon_max_rate=100000
#/etc/vsftpd/vsftpd_user_conf/microsoft
local_root=/var/ftp/vip
guest_enable=YES
guest_username=pub
anon_world_readable_only=NO
anon_max_rate=10000
#為了讓虛擬使用者能生效,需要新增以下記錄
user_config_dir=/etc/vsftpd/vsftpd_user_conf
#如此以來,一個基礎的FTP伺服器做好了。

 ------------------------
更新:如果你要從虛擬使用者轉為實體使用者,也就是說把虛擬使用者功能取消了,直接使用實體使用者。那麼我們需要將虛擬使用者的功能取消。
那麼你需要注意的是關於vsftpd的驗證,將之前的用於虛擬使用者認證的資料庫取消。否則你將無法成功登入。
-------------------------