Linux下的vsFTPd 架设基础及方法
   1vsFTPd server简介
FTP File Transfer Protocol文件传输协议)的英文简称,而中文简称为文传协议。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。用户可以通过它把自己的PC机与世界各地所有运行FTP协议的服务器相连,访问服务器上的大量程序和信息。FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)察看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。
vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序。特点是小巧轻快,安全易用。
 
2vsFTPd server的安装(RHEl5)
首先查看一下是否安装了vsftpdRPM包:
[root@localhost~]# rpm –qa|grep vsftpd
默认的情况下是没有安装vsftpd 这个包的。这个时候要安装的话就必须从RHEL5中的第二张光盘找到vsftpd-2.0.5-10.el5.i386.rpm包进行安装。
[root@localhost~]# rpm –ivh vsftpd-2.0.5-10.el5.i386.rpm
正常情况下,安装树立进行。
 
启动vsftpd服务,看能否正常启动。
[root@localhost~]# /etc/rc.d/init.d/vsftpd start
 
查看进程:
[root@localhost~]# ps –eaf|grep vsftp
 
如果有正在运行一般只有开启 TCP-21端口
[root@localhost~]#netstat –anp|grep :21
可以看见由root 用户正在使用该进程所包含的端口,如果FTP工作是被动的话还需要采用其他的端口,在此为了方便起见,我们先把防火墙的相关信息清空。
[root@localhost~]#iptables  -F
 
这样我们就可以在Windows下,最常用的就是用浏览器匿名访问,
打开IE浏览器,在URL栏中键入ftp://192.168.27.252,正常情况下,能看见pub文件夹,默认的这个文件夹可以支持你来下载东西,但不能上传。
我们也可以用账户的形式:
选择“文件”菜单下的“登录”,然后输入用户名和密码。
 
那么我们先创建一个名为”abc”的账户,密码为vsftpdd:
[root@localhost~]# useradd abc
[root@localhost~]# passwd abc     
两次键入“vsftp”即可,如果是以账户登录的话就可以上传文件。此时应说vsftpd server 正常工作,介绍下配置方法。
 
3vsFTPd server的配置方法
主配置文件在/etc/vsftpd/vsftpd.conf
可以先查看一下初始内容:
[root@localhost~]# vi /etc/vsftpd/vsftpd.conf
 
这个时候先认识其中一些语句及其意义:
  
Anonymous_enable=yes                        #允许匿名登陆
Dirmessage_enable=yes          #
切换目录时,显示目录下.message的内容

Local_umask=022                                  #FTP
上本地的文件权限,默认是
077
Connect_form_port_20=yes                   #
启用FTP数据端口的数据连接
  
Xferlog_enable=yes                               #
激活上传和下传的日志

Xferlog_std_format=yes                         #
使用标准的日志格式

Ftpd_banner=XXXXX                              #
显示欢迎信息

Pam_service_name=vsftpd                      #
验证方式

Listen=yes                                           # 
独立的VSFTPD服务器
Anon_upload_enable=yes                      # 
匿名用户上传权限

Anon_mkdir_write_enable=yes                #
创建目录的同时可以在此目录中上传文件

Write_enable=yes                                  #
本地用户写的权限

Anon_other_write_enable=yes                #
匿名帐号可以有删除的权限

Anon_world_readable_only=no                #
匿名用户浏览权限

Ascii_upload_enable=yes                         #
启用上传的ASCII传输方式

Ascii_download_enable=yes                     #
启用下载的ASCII传输方式

Banner_file=/var/vsftpd_banner_file          #
用户连接后欢迎信息使用的是此文件中的相关信息

Idle_session_timeout=600
(秒)              #用户会话空闲后10分钟

Data_connection_timeout=120
(秒)      #将数据连接空闲2分钟断

Accept_timeout =60
(秒)                      # 将客户端空闲1分钟后断

Connect_timeout=60
(秒)                     #中断1分钟后又重新连接

Local_max_rate=50000
bite               #本地用户传输率
50K
Anon_max_rate=30000
bite               #匿名用户传输率
30K
Pasv_min_port=5000                             #
将客户端的数据连接端口改在

Pasv_max_port=6000                             #5000—6000
之间

Max_clients=200                                   # FTP
的最大连接数

Max_per_ip=4                                       #
IP的最大连接数

Listen_port=5555                                  #
5555端口进行数据连接

Local_enble=yes                                    #
本地帐户能够登陆

Write_enable=no                                   #
本地帐户登陆后无权删除和修改文件

Chroot_local_user=yes                            #
本地所有帐户都只能在自家目录

Chroot_list_enable=yes                           #
文件中的名单可以调用

Chroot_list_file=/etc/vsftpd.chroot_list      
前提是
chroot_local_user=no
Userlist_enable=yes                                #
在指定的文件中的用户不可以访问

Userlist_deny=yes
Userlist_file=/etc/vsftpd.user_list
Banner_fail =/
路径/文件名                          #连接失败时显示文件中的内容

Ls_recurse_enable=no
Async_abor_enable=yes
one_process_model=yes
Listen_address=10.2.2.2                          #
将虚拟服务绑定到某端口

Guest_enable=yes                                   #
虚拟用户可以登陆

Guest_username=
所设的用户名                  #将虚拟用户映射为本地用户

Chown_uploads=yes                               # 
改变上传文件的所有者为
root
Chown_username=root
Deny_email_enable=yes                           #
是否允许禁止匿名用户使用某些邮件地址

Banned_email_file=//
任意指定的路径
/xx/
Pasv_enable=yes                                     #
服务器端用被动模式

User_config_dir=/
任意指定的路径//任意文件目录 指定虚拟用户存放配置文件的路径。
4vsFTPd server的匿名服务配置方法(rhel5
首先看看/etc/passwd:
 [root@localhost~]# more /etc/passwd,       有个FTP用户,可以知道起主目录为/var/ftp  也就是我们经常配置好VSFTP后的默认共享文件夹。
[root@localhost~]# cd /var/ftp
先可以复制一个文件(以vsftpd.conf
[root@localhost~]# cp /etc/vsftpd/vsftpd.conf  ./
那么的复制成功,一般情况下匿名是上传不了文件的,那么我们不需要上传时,怎么办?
修改配置文件来实现:
Wirte_enable =yes
Anon_upload_enable=yes
保存退出,重启服务,返回windows 重新连接VSFTPD SERVER.结果还是上传不了,纳闷,原来这个时候受系统权限限制。为了保证能过匿名上传,那么接下来做如下的操作:】
/var/ftp下创建一个upload子目录
[root@localhost~]# cd /var/ftp
[root@localhost~]# mkdir upload
默认情况下upload这个文件是由root操作,其他的用户是没有W权限的。
 
使用系统命令将upload文件改为FTP FTP账号:
[root@localhost~]# chowm ftp.ftp upload
[root@localhost~]# ls
查看一下,返回windows,重新打开IE,可以看见upload, 那么就再次上传一个文件。但不可以删除文件。这个要删除在配置文件中增加语句
[root@localhost~]# vi /etc/vsftpd/vsftpd.conf
在原有的文件中添加
anon_other_wirte_enable =yes     #因为要删除FTP文件
存档,重启。重新连接。
 
匿名登录创建子目录的配置:
[root@localhost~]# vi /etc/vsftpd/vsftpd.conf
在原有的文件中添加
Anon_mkdir_write_enable =yes 
 
5vsFTPd server的虚拟用户服务配置方法
[root@localhost~]# cd
[root@localhost~]# vi ftpuser.txt
在编辑状态下加入虚拟用户的账号和密码:
User1
Pass1
User2
Pass2
User3
Pass3
注意格式一定要对(如上)保存
 
 
生成虚拟数据库,首先要确保DB库和工具包
先查看下:
[root@localhost~]# rpm –qa|grep db4
看是否有了,为了安装db 4,从第二张光盘里安装
[root@localhost~]# rpm –ivh db4-untils-4.3.29-9.fe4.i386.rpm
正常安装顺利进行。
[root@localhost~]# db _load –T –t hash –f ./ftpuser.txt  /etc/vsftpd/ftpuse.db
[root@localhost~]# chmod 600 /etc/vsftpd/ftpuse.db
[root@localhost~]# vi  /etc/pen.d/vsftpd.login
输入内容:
Auth required /livb/security/pam_userdb db=/etc/vsftpd/ftpuser
他将调用数据库。
 
创建虚拟账号
[root@localhost~]#useradd –d /home/ftpsite –s /abin/nologin ftp_virt
[root@localhost~]#chmod 700 /home/ftpsite
 
修改配置文件:
原有的不变,添加:
guest_enable=yes
guest username=ftp_vrit
pas_service_name = sftpd_login
存盘退出  重新启动VSFTPD服务 ,关闭原来的连接。
使用虚拟的账号登录。这个是侯的本地用户不能使用的。
 
设置虚拟账户的权限
[root@localhost~]#virtual_use_local_prive=yes   设置跟本地的权限一样
不同的权限设置
在配置文件添加语句:
User_config_dir*/etc/varftpd
存盘退出
 
在给对应的虚拟账户创建相应的子目录:
[root@localhost~]# mkdir  user1
[root@localhost~]# mkdir  uesr2     user1账户的主目录
 
[root@localhost~]# chown ftp_virt user1
[root@localhost~]# chown ftp_virt user2
[root@localhost~]# vi /etc/vsftpd/user1
输入内容:
Local _root- /home/ftpsite/user1    #表示user1其主目录
存盘退出。(其他的虚拟目录同样)
 
返回windows下测试,分别来登录两个连接,可以上传文件
返回RHEL5系统
进入USER1账户的主目录,使用LS命令看看是否有了刚刚上传的文件名称以及相关信息。