文件传输服务器

编者小语:丰哥的Linux小站:linuxdocs.cublog.cn
 
    刚开始接触计算机时,不像现在实时通信软件这么发达,我们随时可通过MSN、QQ等传送信息以及文件。因此要下载文件,多半都是使用FTP这样的服务,特别是影音文件、办公软件以及应用软件。
    网络开始兴起时,一般拨接上网的速度为64K bits,实际可用顶多40到50K bits(约5-6K Bytes),因此在文件的传输上,必须使用最省时的传输方式。试想,一个3M Bytes的mp3文件,FTP就要花十来分钟下载,更别说其他的传输方式了。
    时至今日,尽管文件传输方式已经相当多元且网络带宽已经到达1M bits以上,但FTP仍占有一席之地,主要原因还是对于单一文件的传输效能较好。若我们要传递数十或是数百兆的文件,透过FTP来传输仍是不二之选。
    笔者第一次架设FTP服务器,是用Serv-U这软件在Windows 98上架设,安装一个软件、开个用户、并设定登入目录,就可以让人联机抓取数据。这虽然方便,但整体的功能、稳定性、与安全性不足,直到后来接触Unix与Linux,才开始操作功能性较强的FTP服务器:WU-FTP。
    WU-FTP这软件在众多Linux中被广泛的使用,直到Red Hat 9中将默认的FTP服务器改为VSFTP后,才慢慢的淡出Linux FTP服务器。现在尽管还有许多人爱用WU-FTP,但多数的Linux套件商已将VSFTP做为默认的FTP服务器。
 
1  FTP服务概述
 
1.1  FTP服务器简介
 
 ◆FTP协议与运行原理
    FTP,file transfer protocol,这是文件传输的通讯协议,也是一般最常用来传送文件的方式。
 
 ◆Port与Passive传输模式丰哥的Linux  小站:li   nu  xd  ocs .cub   log  .c  n
    FTP分为两类,一种为PORT FTP,也就是一般的FTP﹔另一类是Passive FTP,分述如下:
    PORT FTP是一般形式的FTP,首先会建立控制频道,默认值是port 21,也就是跟port 21建立联机,并透过此联机下达命令。其次,由FTP server端会建立数据传输频道,默认值为20,也就是跟port 20建立联机,并透过port 20作数据的传输。
    PASV FTP跟PORT FTP类似,首先会建立控制频道,默认值是port 21,也就是跟port 21建立联机,并透过此联机下达命令。其次,会由client端做出数据传输的请求,包括数据传输port的数字。
    这两者的差异为何?PORT FTP当中的数据传输port是由FTP server指定,而PASV FTP的数据传输port是由FTP client决定。通常我们使用PASV FTP,是在有防火墙的环境之下,透过client与server的沟通,决定数据传输的port。
 
 ◆WU-FTP
WU-FTP是Washington University FTP的简称,顾名思义,就是由美国华盛顿大学研发而成的FTP服务器软件,这在早期的Linux中为默认的FTP服务器,但在这三年来,已较少被使用。


 ◆VSFTP
    VSFTP,是Very Secure FTP的简称,表示它是一个非常安全的FTP服务器。从Red Hat 9之后的版本,包括Fedora、Red Hat Enterprise、Mandriva等都以它为默认的服务器。
从Red Hat的历史来看,VSFTP服务器做了一些改变:第一,ftp server(FTP服务器)中只剩下vsftp,原有的wuftp、proftp等都没放入﹔第二,vsftp从XINETD中独立出来,并将配置文件从 /etc/vsftpd.conf之中移到 /etc/vsftpd/vsftpd.conf。
    这样的改变的原因有二:第一,vsftp已有独立运作的能力,不需要藉由XINETD启动﹔第二,本身功能与安全控管强大,不需要躲在XINETD的保护之下。此外,类似sendmail、httpd、ssh、samba等,将配置文件放入/etc下的独立目录vsftpd。到了近期的Red Hat enterprise与Fedora中,vsftp结合了SELinux更强大的安全防护,在使用上多了根目录的权限限制。
 
1.2  FTP的优点与适用环境
 
    FTP的用途就是网络上的文件传输,除了FTP之外,网上的文件传输方式还包括网上邻居的复制黏贴、实时通讯软件的点对点传输、E-mail的附档夹带等。在这众多的传输方式中,FTP是最节省资源,且传输效益最高的一种方式。
 
2  安装与运行
 
2.1  软件安装
 
    VSFTP软件的来源有二:一者为安装光盘中的文件,一者为网络下载的文件。
 ◆yum安装(Red Hat与Fedora下的安装)

    使用yum的命令为yum install vsftpd,执行过程如下:
 

[root@localhost ~]# yum install vsftpd

载入插件: refresh-packagekit

设置安装进程

分析安装参数的语法

解决依赖相关

-->运行处理检查

---> 包 vsftpd.i386 0:2.0.7-1.fc10 设置为 升级

updates/filelists_db | 1.4 MB 02:11

--> 完成依赖性检查

 

依赖性解决

=======================================================================

包       架构    版本            仓库       大小

=======================================================================

正在安装:

vsftpd   i386   2.0.7-1.fc10    fedora    145 k

Transaction Summary

=======================================================================

Install 1 Package(s)

Update 0 Package(s)

Remove 0 Package(s)

总共下载大小: 145 k

确定是这样吗? [y/N]: y                      -->输入y继续

下载软件包: vsftpd-2.0.7-1.fc10.i386.rpm | 145 kB 00:02

运行 rpm_check_debug

运行测试事务处理

传输测试完成

事务处理测试成功

运行事务处理

 

已安装:

vsftpd.i386 0:2.0.7-1.fc10

恭喜你!成功完成!

 ◆apt-get安装(Debian与Ubuntu下的安装)(本文略)
 ◆emerge安装(gentoo下的安装)(本文略)
 ◆原始文件安装(本文略,需要请留言)

2.2  启动与停止
    如果透过套件管理程序,如R
PM、apt-get、或emerge安装的服务器,可透过以下方式启动与停止。
我们可以使用以下命令启动VSFTP服务器:
/etc/init.d/vsftpd start
执行过程如下:

[root@localhost ~]# /etc/init.d/vsftpd start

为 vsftpd 启动 vsftpd:                                                                [ 确定 ]

若要停止服务器,可使用以下命令:
/etc/init.d/vsftpd stop
执行过程如下:

[root@localhost ~]# /etc/init.d/vsftpd stop

关闭 vsftpd:                                                                             [ 确定 ]

若要重新启动服务器,可使用以下命令:
/etc/init.d/vsftpd restart
执行过程如下:

[root@S ~]# /etc/init.d/vsftpd restart

关闭 vsftpd:                                                                              [ 确定 ]

为 vsftpd 启动 vsftpd:                                                                 [ 确定 ]

3  配置实例丰  哥  的  L  i  n  u  x  小   站:linuxdocs.cublog.cn

    在这节中介绍VSFTP的配置实例,让读者了解VSFTP服务器应用的层面。若读者需要架设FTP服务器,也可以根据自身的需要在底下的范例中挑选适合者加以应用。

3.1  一般运行范例

    这里介绍的是VSFTP一般运行的范例,包含直接运行、更换port、以及一些问题的处理。

范例1. 直接启动VSFTP服务

图1
    这个范例是套用Fedora的默认范例,直接启动vsftp。用户可联机服务器的端口21,如图1所示。
    /etc/init.d/vsftpd start
 
范例2. 目录乱码问题
 
    这个问题源于编码,因此使用FTP时应避免使用中文。在终端机输入的中文,在FTP上会是乱码,反之亦然。若要使用中文,可统一在FTP上使用。
    在第一次启动时所建立的用户,系统会默认建立以下的目录:
 
[root@localhost admin]# ll
总计 148
drwxrwxr-x 2 admin admin  4096 2007-06-05 18:43 www
drwxr-xr-x 2 admin admin  4096 2007-06-01 23:21 下载
drwxr-xr-x 2 admin admin  4096 2007-06-01 23:21 公共
drwxr-xr-x 2 admin admin  4096 2007-06-01 23:21 图片
drwxr-xr-x 2 admin admin  4096 2007-06-01 23:21 影片
drwxr-xr-x 2 admin admin  4096 2007-06-01 23:21 文件
drwxr-xr-x 2 admin admin  4096 2007-06-01 23:21 桌面
drwxr-xr-x 2 admin admin  4096 2007-06-01 23:21 模板
drwxr-xr-x 2 admin admin  4096 2007-06-01 23:21 音乐

    这些目录在FTP所见会是乱码,若无特别需要,可直接删除这些目录。之后使用useradd,或是图形接口新增用户,并不会产生这些目录,因此不会再有这样的乱码。

范例3. 文件时间错误问题

    在vsftp之中的时间默认值是显是GMT时间,因此我们会发现上面的时间与我们时寄存取的时间差八小时。要调整这个设定,可在/etc/vsftpd/vsftpd.conf中新增以下一行:

use_localtime=YES

    接着重新启动vsftpd即可:丰哥的Linux小站:linuxdocs.cublog.cn
    /etc/init.d/vsftpd restart

范例4. 更换port提供服务:将默认的port 21更换为2121

 

图2
    为了安全或是隐密性,我们会将ftp port换为默认21之外的port。在本例中以更换为2121端口为例说明,如图2,步骤如下:
Step1. 修改 /etc/vsftpd/vsftpd.conf
    新增下面一行
 

listen_port=2121

Step2. 重新启动vsftpd
    /etc/init.d/vsftpd restart
!要注意,改了port要注意防火墙的设定喔!!

3.2  匿名登录权限配置

    这里介绍的是匿名登录,也就是anonymous登入的相关设定。

范例5. 让匿名登录者anonymous可以上传文件

    若是我们允许匿名者登入并上传文件,则可参考以下步骤:

Step1. 修改 /etc/vsftpd/vsftpd.conf

anonymous_enable=YES
anon_upload_enable=NO

改为

anonymous_enable=YES                   # <=确定这行为YES
anon_upload_enable=YES                 # 将这行的NO改为YES即可
anon_mkdir_write_enable=YES          # 若加上这行,则匿名登录者可新增目录

Step2. 重新启动vsftpd
/etc/init.d/vsftpd restart

Step3. 修改/var/ftp/pub/的目录权限
执行以下命令:
chmod -R 777 /var/ftp/pub/

Step4. 修改/var/ftp/pub的SELinux权限
执行以下命令,修改/var/ftp/pub这目录的类型:
chcon -R -t ftpd_anon_rw_t /var/ftp/pub/

范例6. 取消anonymous登录

图3
若是我们的主机拒绝用户匿名登录,如图3,则可参考以下步骤:
Step1. 修改 /etc/vsftpd/vsftpd.conf

anonymous_enable=YES

改为

anonymous_enable=NO

Step2. 重新启动vsftpd
/etc/init.d/vsftpd restart

3.3  本机用户的配置丰 哥   的   Linux小站 : l i n u x docs.cublog.cn
这里介绍本机用户的相关配置,包含各别用户的控管与高级设置。

范例7. 允许本机的用户上传或是下载文件
   

    设定位置在/etc/vsftpd/vsftpd.conf,内容如下:

local_enable=YES
write_enable=YES

!若安装SELinux,会发现通过了密码验证,但就是看不到目录。这是由于SELinux的保护措施。我们必须使用root的身份执行:setsebool ftp_home_dir 1
执行后就可以联机并正确登录。

范例8. 不允许本机的用户上传或是下载文件

    若是完全不希望有任何FTP的行为,当然关闭FTP服务器,命令如下:
    /etc/init.d/vsftpd stop

    若我们允许匿名登录但不希望本机用户登入,可执行以下步骤:

Step1. 修改 /etc/vsftpd/vsftpd.conf
修改下面一行:

local_enable=YES

改为

local_enable=NO

Step2. 重新启动vsftpd
    /etc/init.d/vsftpd restart

范例9. 限制本机用户可使用FTP的名单

图4

    如图4,若我们接受用户kevin登入,但不接受用户test登入,可以透过userlist_enableuserlist_deny这两个参数达到这样的要求,步骤如下:丰哥 的Linux小站:linuxdocs.cublog.cn
 
Step1. 修改 /etc/vsftpd/vsftpd.conf
新增底下两行:

userlist_enable=YES
userlist_deny=NO

Step2. 重新启动vsftpd
    /etc/init.d/vsftpd restart

执行完毕后,我们只要将允许访问的名单kevin建立在/etc/vsftpd.user_list之中即可。不在这文件内的名单将无法登入FTP服务器。

范例10. 改变根目录
    在vsftpd中默认的根目录是用户登入的根目录,默认值为/home/用户名称,若要改成其他路径,可新增底下一行:

local_root=/opt

    接着重新启动vsftpd即可:
    /etc/init.d/vsftpd restart
    这样我们就把ftp登入的目录改到/opt之下了。要注意,这样的设定会让所有的用户登入ftp都会到/opt之下。

范例11. 特定用户peter、john不得变更目录
    用户的默认目录为/home/username,若是我们不希望用户在ftp时能够切换到上一层目录/home,则可参考以下步骤。

Step1. 修改 /etc/vsftpd/vsftpd.conf
将底下三行

#chroot_list_enable=YES
# (default follows)
#chroot_list_file=/etc/vsftpd.chroot_list

改为

chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd.chroot_list

Step2. 新增一个文件: /etc/vsftpd/chroot_list
内容增加两行:

peter
john

Step3. 重新启动vsftpd
    /etc/init.d/vsftpd restart
    若是peter欲切换到根目录以外的目录,则会出现以下警告:

ftp> cd /home
550 Failed to change directory.

3.4  来源与安全性的配置
这部分介绍来源地址的控管、联机数目、防火墙等的结合与应用。

范例12. 将VSFTP与TCP_wrappers结合
    与TCP_wrappers结合后可在 /etc/hosts.allow之中定义允许或是拒绝的来源地址,这是简易的防火墙设定,具体步骤如下:

Step1. 确定 /etc/vsftpd/vsftpd.conf 之中tcp_wrappers的设定为YES,如下所示:

tcp_wrappers=YES

Step2. 重新启动vsftpd
    /etc/init.d/vsftpd restart

范例13. 透过TCP_wrappers限制联机的来源
    承接着上例12,当我们已经将VSFTP与TCP_wrappers结合后,就可以直接在/etc/hosts.allow中设置允许联机的IP地址。
    设定 /etc/hosts.allow,提供111.22.33.4以及10.1.1.110.1.1.254联机:

vsftpd : 111.22.33.4 10.1.1. : allow
ALL : ALL : DENY

设定后直接生效。丰哥的 Li n  ux 小站:lin  uxdocs.cub   log.c  n

范例14. 限制最大联机总数与用户最大线程数

图5
 
图6
 
    若我们要限制全部联机的总数,可设置max_clients这参数;若要限制每个IP地址最多的联机数,可设置max_per_ip这参数。底下设定最大联机总数为20(如图6),用户最大线程数为2(如图5)。
 
Step1. 修改 /etc/vsftpd/vsftpd.conf
设置底下两行:

max_clients=15
max_per_ip=2

Step2. 重新启动vsftpd

/etc/init.d/vsftpd restart

范例15. 建置一个防火墙下的ftp server,使用PORT FTP mode:默认的ftp port:21以及ftp data port:20
    启动VSFTPD之后执行以下两行命令,只允许port 21以及port 20开放,其他关闭。
iptables -A INPUT -p tcp -m multiport --dport 21,20 -j ACCEPT
iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset

范例16. 建置一个防火墙下的ftp server,使用PORT FTP mode:ftp port:2121以及ftp data port:2020

Step1. 执行以下两行命令,只允许port 2121以及port 2020开放,其他关闭。
iptables -A INPUT -p tcp -m multiport --dport 2121,2020 -j ACCEPT
iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset

Step2. 修改 /etc/vsftpd/vsftpd.conf
新增底下两行

listen_port=2121
ftp_data_port=2020

Step3. 重新启动vsftpd
    /etc/init.d/vsftpd restart

注记: 15、16个例子中,ftp client(如cuteftp)的联机方式不能够选择passive mode,否则无法建立数据的联机。也就是读者可以连上ftp server,但是执行ls、get等等的命令时,便无法运作。
    使用PORT FTP mode,会使得许多在防火墙内的主机无法正常建立FTP data port,导致无法正确联机。

在这边我们示范一个linux平台上的联机范例:由test联机到11.22.33.1,ftp port为2121,而ftp data port为2020。

 

[scfeng@test scfeng]$ ftp 11.22.33.1 2121
Connected to 11.22.33.1 (11.22.33.1).
220 "======= Welcome to Vulpecula FTP service ======= "
Name (11.22.33.1:scfeng): scfeng
331 Please specify the password.
Password:
230 Login successful. Have fun.
Remote system type is UNIX.
Using binary mode to transfer files.

ftp> ls
227 Entering Passive Mode (11,22,33,1,142,237)
ftp: connect: Connection refused
ftp>

    我们会发现无法建立data port联机,试试passive这个命令,来将passive mode设为off,如下所示:

ftp> passive
Passive mode off.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxr-xr-x 2 500 500 4096 Apr 20 08:05 20030420
-rw-r--r-- 1 500 500 32038828 Apr 20 18:31 RedHat9.exe
drwx------ 2 500 500 4096 Apr 20 08:04 mail
-rw-rw-r-- 1 500 500 85473 Apr 20 12:01 封面.pdf
226 Directory send OK.
ftp>

这样就能正确联机了。

范例17 建置一个防火墙下的ftp server,使用PASS FTP mode:ftp port:2121以及ftp data port从9981到9986

Step1. 执行以下两行命令,只允许port 2121以及port 9981-9986开放,其他关闭。
iptables -A INPUT -p tcp -m multiport --dport 2121,9981,9982,9983,9984,9985,9986 -j ACCEPT
iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset

Step2. 修改 /etc/vsftpd/vsftpd.conf
新增底下四行

listen_port=2121
pasv_enable=YES
pasv_min_port=9981
pasv_max_port=9986

Step3. 重新启动vsftpd
    /etc/init.d/vsftpd restart

注:在这边要注意,在这个例子中,ftp client(如cuteftp)的联机方式必须选择passive mode,否则无法建立数据的联机。也就是读者可以连上ftp server,但是执行ls、get等等的命令时,便无法运作。
    在这范例中限制了FTP data port的范围:9981-9986共六个port,一般而言,这个数字是太低的,因为每个client使用passive mode,通常会建立2到3个联机,因此这个范围要看使用量而定。

范例18 将vsftpd并入XINETD(略)

3.5  连接速度的配置丰哥 的Li n ux小站:linuxdo cs.cu blog.cn
这部分介绍连接速度的配置,真对一般用户与匿名用户,以及不同用户间的配置。

范例19 如图7,限制传输文件的速度:本机的用户最高速度为 512K bytes/s,匿名登录者所能使用的最高速度为256K bytes/s

图7

Step1. 修改 /etc/vsftpd/vsftpd.conf
新增底下两行

anon_max_rate=512000
local_max_rate=256000

Step2. 重新启动vsftpd
    /etc/init.d/vsftpd restart

    在这边速度的单位为Bytes/s,其中anon_max_rate所限制的是匿名登录的用户,而local_max_rate所限制的是本机的用户。
注记:
VSFTPD对于速度的限制,范围大概在80%到120%之间,也就是我们限制最高速度为100KBytes/s,但实际的速度可能在80KBytes/s到120KBytes/s之间,当然,若是带宽不足时,数值会低于此限制。

范例20 如图8,针对不同的用户限制不同的速度:假设test1(用户user1)所能使用的最高速度为256KBytes/s,test2(用户user2)所能使用的最高速度为500KBytes/s

图8

Step1. 修改 /etc/vsftpd/vsftpd.conf
新增底下一行

 

user_config_dir=/etc/vsftpd/userconf

Step2. 新增一个目录:/etc/vsftpd/userconf
mkdir /etc/vsftpd/userconf

Step3. 在/etc/vsftpd/userconf之下新增一个名为test1的文件
内容增加一行:

local_max_rate=250000

Step4. 在/etc/vsftpd/userconf之下新增一个名为test2的文件
内容增加一行:

local_max_rate=500000

Step5. 重新启动vsftpd
    /etc/init.d/vsftpd restart


3.6  其他设置范例
    这部分的范例介绍其他的设置范例,包括欢迎话语与独立的process运行。

范例21 安排欢迎话语
    若是我们希望用户在登入时,能够看到欢迎话语,可能包括对该主机的说明,或是目录的介绍,可参考以下步骤。
Step1.首先确定在 /etc/vsftpd/vsftpd.conf当中是否有底下这一行:

dirmessage_enable=YES

Step2.接着,在各目录之中,新增名为.message的文件,再这边假设有一个用户test1,且此用户的根目录下有个目录名为abc,那首先我们在 /home/test1之下新增.message,内容如下:

Hello~ Welcome to the home directory
This is for test only...

Step3.接着,在 /home/test1/abc的目录下新增 .message,内容如下:

Welcome to abc's directory

        This is subdir...

那么,当用户test1登入时,会看到以下信息:

230- Hello~ Welcome to the home directory
230-
230- This is for test only...
230-

若是切换到abc的目录,则会出现以下讯息:

250- Welcome to abc's directory
250-
250- This is subdir ...

范例22.对于每一个联机,以独立的process来运行。(略)

4  配置文件说明

4.1  vsftpd.conf说明
    vsftpd.conf内容的特性包含:每一行即为一项设定、空白行或是开头为#的一行,将会被忽略、格式只有一种:选项=value,如 listen_port=2121、等号两边不能加空格,底下列出所有设定:

1. ascii 设定

 ◆ascii_download_enable
value:YES或NO
管控是否可用ASCII模式下载。默认值为NO。 

 ◆ascii_upload_enable
value:YES或NO
管控是否可用ASCII模式上传。默认值为NO。

2. 个别用户设定

 ◆chroot_list_enable
value:YES或NO
如果启动这项功能,则除了列在 /etc/vsftpd.chroot_list之中的用户之外,所有的本机用户登入均可进到根目录之外的文件夹。默认值为NO。

 ◆userlist_enable
value:YES或NO
若是启动此功能,则会读取/etc/vsftpd.user_list当中的用户名称。此项功能可以在询问密码前就出现失败讯息,而不需要检验密码的程序。默认值为关闭。

 ◆userlist_deny
value:YES或NO
这个选项只有在userlist_enable启动时才会被检验。如果将这个选项设为YES,则在/etc/vsftpd.user_list中的用户将无法登入﹔若设为NO,则只有在/etc/vsftpd.user_list中的用户才能登入。而且此项功能可以在询问密码前就出现错误讯息,而不需要检验密码的程序。

 ◆user_config_dir
value:目录
定义个别用户配置文件所在的目录,例如定义user_config_dir=/etc/vsftpd/userconf,且主机上有用户test1,test2,那我们可以在user_config_dir的目录新增文件名为test1以及test2。若是test1登入,则会读取user_config_dir下的test1这个文件内的设定。默认值为无。

3. 欢迎语设定

 ◆dirmessage_enable
value:YES或NO
如果启动这个选项,用户第一次进入一个目录时,会检查该目录下是否有.message这个文件,若是有,则会出现此文件的内容,通常这个文件会放置欢迎话语,或是对该目录的说明。默认值为开启。

 ◆banner_file
value:含完整路径的文件
当用户登入时,会显示此设定所在的文件内容,通常为欢迎话语或是说明。默认值为无。

 ◆ftpd_banner
value:字符串
这边可定义欢迎话语的字符串,相较于banner_file是文件的形式,而ftpd_banner是字符串的格式。默认为无。

4. 特殊安全设定

 ◆chroot_local_user
value:YES或NO
如果设定为YES,那么所有的本机的用户都可以切换到根目录以外的文件夹。默认值为NO。

 ◆hide_ids
value:YES或NO
如果启动这项功能,所有文件的拥有者与群组都为ftp,也就是登入后使用ls -al之类的命令,所看到的文件拥有者跟群组均为ftp。默认值为关闭。

 ◆ls_recurse_enable
value:YES或NO
若是启动此功能,则允许登入者使用ls -R这个命令。默认值为NO。

 ◆write_enable
value:YES或NO
这个选项可以控制FTP的命令是否允许更改file system,譬如STOR、DELE、RNFR、RNTO、MKD、RMD、APPE以及SITE。默认是关闭。 

 ◆setproctitle_enable
value:YES或NO
启动这项功能,vsftpd会将所有联机的状况以不同的process呈现出来,换句话说,使用ps -ef这类的命令就可以看到联机的状态。默认值为关闭。

 ◆tcp_wrappers
value:YES或NO
如果启动,则会将vsftpd与tcp wrapper结合,也就是可以在 /etc/hosts.allow与 /etc/hosts.deny中定义可联机或是拒绝的来源地址。

 ◆pam_service_name
value:用户
这边定义PAM所使用的名称,默认为vsftpd。

 ◆secure_chroot_dir
value:目录
这个选项必须指定一个空的文件夹且任何登入者都不能有写入的权限,当vsftpd不需要file system的权限时,就会将用户限制在此文件夹中。默认值为 /usr/share/empty

5. 记录文件设定

 ◆xferlog_enable
value:YES或NO
如果启动,上传与下载的信息将被完整纪录在底下xferlog_file所定义的文件中。默认为开启。

 ◆xferlog_file
value:含完整路径的文件
这个选项可设定纪录文件所在的位置,默认值为/var/log/vsftpd.log。   

 ◆xferlog_std_format
value:YES或NO
如果启动,则纪录文件将会写为xferlog的标准格式,如同wu-ftpd一般。默认值为关闭。

6. 超时设定

 ◆accept_timeout
value:数值
接受建立联机的逾时设定,单位为秒。默认值为60。

 ◆connect_timeout
value:数值
响应PORT方式的数据联机的逾时设定,单位为秒。默认值为60。

 ◆data_connection_timeout
value:数值
建立数据联机的逾时设定。默认值为300秒。

 ◆idle_session_timeout
value:数值
发呆的逾时设定,若是超出这时间没有数据的传送或是命令的输入,则会强迫断线,单位为秒。默认值为300。

7. 速率限制

 ◆anon_max_rate
value:数值
匿名登录所能使用的最大传输速度,单位为每秒多少bytes,0表示不限速度。默认值为0。

 ◆local_max_rate
value:数值
本机用户所能使用的最大传输速度,单位为每秒多少bytes,0表示不限速度。默认值为0。

8. 新增文件权限设定

 ◆anon_umask
value:屏蔽数值
匿名登录者新增文件时的umask数值。默认值为077。

 ◆file_open_mode
value:屏蔽数值
上传文件的权限,与chmod所使用的数值相同。默认值为0666。

 ◆local_umask
value:屏蔽数值
本机登入者新增文件时的umask数值。默认值为077。

9. port设定

 ◆connect_from_port_20
value:YES或NO
若设为YES,则强迫ftp-data的数据传送使用port 20。默认值为YES。

 ◆ftp_data_port
value:端口号
设定ftp数据联机所使用的port。默认值为20。

 ◆listen_port
value:端口号
FTP server所使用的port。默认值为21。

 ◆pasv_max_port
value:端口号
建立资料联机所可以使用port范围的上界,0表示任意。默认值为0。

 ◆pasv_min_port
value:端口号丰哥 的 L i n ux小站:linuxdocs.cublog.cn
建立资料联机所可以使用port范围的下界,0表示任意。默认值为0。

10. 其他

 ◆local_enable
value:YES或NO
启动此功能则允许本机用户登入。默认值为YES。

 ◆local_root
value:目录
本机用户登入时,将被更换到定义的目录下。默认值为无。

 ◆text_userdb_names
value:YES或NO
当用户登入后使用ls -al之类的命令查询该文件的管理权时,默认会出现拥有者的UID,而不是该文件拥有者的名称。若是希望出现拥有者的名称,则将此功能开启。默认值为NO。

 ◆pasv_enable
value:YES或NO
若是设为NO,则不允许使用PASV的模式建立数据的联机。默认值为开启。

11. 更换文件所有权

 ◆chown_uploads
value:YES或NO
若是启动,所有匿名上传数据的拥有者将被更换为chown_username当中所设定的用户。这样的选项对于安全及管理,是很有用的。默认值为NO。 

 ◆chown_username
value:用户
这里可以定义当匿名登录者上传文件时,该文件的拥有者将被置换的用户名称。默认值为root。

12. guest 设定

 ◆guest_enable
value:YES或NO
若是启动这项功能,所有的非匿名登录者都视为guest。默认值为关闭。

 ◆guest_username
value:用户
这里将定义guest的用户名称。默认值为ftp。

13. anonymous 设定

 ◆anonymous_enable
value:YES或NO
管控使否允许匿名登录,YES为允许匿名登录,NO为不允许。默认值为YES。 

 ◆no_anon_password
value:YES或NO
若是启动这项功能,则使用匿名登录时,不会询问密码。默认值为NO。

 ◆anon_mkdir_write_enable
value:YES或NO
如果设为YES,匿名登录者会被允许新增目录,当然,匿名用户必须要有对上层目录的写入权。默认值为NO。 

 ◆anon_other_write_enable
value:YES或NO
如果设为YES,匿名登录者会被允许更多于上传与建立目录之外的权限,譬如删除或是更名。默认值为NO。 

 ◆anon_root
value:目录
使用匿名登录时,所登入的目录。默认值为无。

 ◆anon_upload_enable
value:YES或NO
如果设为YES,匿名登录者会被允许上传目录的权限,当然,匿名用户必须要有对上层目录的写入权。默认值为NO。 

 ◆anon_world_readable_only
value:YES或NO
如果设为YES,匿名登录者会被允许下载可阅读的文件。默认值为YES。 

 ◆ftp_username
value:用户丰 哥的Li nux小 站:lin uxdoc s.cu blog.cn
定义匿名登录的用户名称。默认值为ftp。

 ◆deny_email_enable
value:YES或NO
若是启动这项功能,则必须提供一个文件/etc/vsftpd.banner_emails,内容为email address。若是使用匿名登录,则会要求输入email address,若输入的email address在此文件内,则不允许联机。默认值为NO。

14. Standalone选项

 ◆listen
value:YES或NO
若是启动,则vsftpd将会以独立运作的方式执行,若是vsftpd独立执行,,则必须启动﹔若是vsftpd包含在xinetd之中,则必须关闭此功能,如Red Hat 8。 

 ◆listen_address
value:IP address
若是vsftpd使用standalone的模式,可使用这个参数定义使用哪个IP address提供这项服务,若是主机上只有定义一个IP address,则此选项不需使用,若是有多个IP address,可定义在哪个IP address上提供ftp服务。若是不设定,则所有的IP address均会提供此服务。默认值为无。

 ◆max_clients
value:数值
若是vsftpd使用standalone的模式,可使用这个参数定义最大的总联机数。超过这个数目将会拒绝联机,0表示不限。默认值为0。

 ◆max_per_ip
value:数值
若是vsftpd使用standalone的模式,可使用这个参数定义每个IP address所可以联机的数目。超过这个数目将会拒绝联机,0表示不限。默认值为0。


4.2  其他配置文件说明
    VSFTP的主配置文件只有vsftpd.conf,其他的设定文件都是伴随着vsftpd.conf而来,下面列出常见的配置文件。


 ◆/etc/vsftpd.chroot_list
    这个文件中设置用户名单,一行一个。在这文件中的用户进行FTP访问时,无法切换到个人根目录以外的目录,而不在此文件的用户则没有这个限制。这对于安全的控管有更高的要求。

 ◆/etc/vsftpd.user_list
    这个文件中设置用户名单,一行一个。若在vsftpd.conf中userlist_deny设为YES,则在这文件中的用户无法进行FTP访问,其他用户可以访问;若设为NO,则只有在这文件中的用户可以进行FTP’访问,其他用户不行。

 

 

4.3  FTP数字代码的意义
    底下列出FTP访问中所出现数字代码的含意。


110 重新启动标记应答。                  
120 服务在多久时间内ready。             
125 数据链路端口开启,准备传送。          
150 文件状态正常,开启数据端口。      
200 命令执行成功。                      
202 命令执行失败。                      
211 系统状态或是系统求助响应。          
212 目录的状态。                        
213 文件的状态。                        
214 求助的讯息。                        
215 名称系统类型。                      
220 新的联机服务ready。                 
221 服务的控制端口关闭,可以注销。    
225 数据链接开启,但无传输动作。        
226 关闭数据端口,请求的文件操作成功。
227 进入passive mode。                  
230 用户登录。                        
250 请求的文件操作完成。                
257 显示目前的路径名称。                
331 用户名称正确,需要密码。            
332 登入时需要帐户信息。                
350 请求的操作需要进一部的命令。        
421 无法提供服务,关闭控制连结。        
425 无法开启数据链路。                  
426 关闭联机,终止传输。                
450 请求的操作未执行。                  
451 命令终止:有本地的错误。            
452 未执行命令:磁盘空间不足。          
500 格式错误,无法识别命令。            
501 参数语法错误。                      
502 命令执行失败。                      
503 命令顺序错误。                      
504 命令所接的参数不正确。              
530 未登入。                            
532 储存文件需要账户登入。              
550 未执行请求的操作。                  
551 请求的命令终止,类型未知。          
552 请求的文件终止,储存位溢出。      
553 未执行请求的的命令,名称不正确。

 

5  客户端配置
    联机FTP服务器的方式有三种:第一为命令模式,第二为浏览器登入,第三为FTP联机软件。

5.1 命令模式
    在Windows下的命令模式为DOS,在Linux下就是一般的命令操作画面(终端机),介绍如下。

 ◆连接命令
    若FTP服务器的IP地址为123.45.6.7,并使用默认的21端口,则可输入以下命令联机:
        ftp 123.45.6.7
    若FTP服务器的IP地址为123.45.6.7,并使用自定义的5656端口,则Linux可输入以下命令联机:
        ftp 123.45.6.7 5566
    但Window则无法直接在IP地址后面接上空格再加端口号来联机,正确的运行方式如下:

C:/Documents and Settings/Jos>ftp
ftp> open 123.45.6.7 5566
Connected to 123.45.6.7.235.
220 (vsFTPd 2.0.5)
User (123.45.6.7:(none)):

 

5.2 浏览器登录
    浏览器只能登入默任的21端口,因此若服务器使用其他端口,则无法使用此登入方式。
首先在网址列输入
ftp://123.45.6.7 (如图9),其中123.45.6.7为FTP的IP地址 。

图9

    输入后,就会要求输入FTP登入名与密码(如图10):

图10

    登入后,则会出现目录列表(如图11):

 
图11

!IE若在7.0之后的版本中出现问题,可使用我的电脑中的地址栏达到同样的效果。

 

5.3 FTP联机软
    除了上述两种方式,最常用的就是透过FTP软件联机,常用的软件包括CuteFTP、LeapFTP等。这样的窗口软件可以透过拖拉的方式将文件上传或是下载,底下以CuteFTP为例说明。
    点开软件后,会出现图12中的窗口,在这画面中可设置常用的FTP服务器信息,如名称、IP地址、端口、以及传输模式等。

图12

    正确登入后,则会出现图13,左边的窗口为客户端个人计算机上的文件,右边的窗口为FTP服务器上的文件,只要我们点选文件并使用拖拉的方式,就会进行传递的任务。
    如果我们拖拉左边窗口的文件到右边,就代表将个人客户端的文件上传到FTP服务器上;若从右边的窗口拖拉到左边,则代表从服务器上下载文件。

图13

    若以操作模式而言,这样的软件是最方便我们进行文件传输的。

 

你可能感兴趣的:(linux,ftp服务器,linux,防火墙,list,server,tcp)