CentOS 7.0 使用Vsftpd服务传输文件

CentOS 7.0 使用Vsftpd服务传输文件

文件传输协议

文件传输协议(FTP,File Transfer Protocol),即能够让用户在互联网中上传、下载文件的文件协议,而FTP服务器就是支持FTP传输协议的主机,要想完成文件传输则需要FTP服务端和FTP客户端的配合才行。

通常用户使用FTP客户端软件向FTP服务器发起连接并发送FTP指令,服务器收到用户指令后将执行结果返回客户端。

FTP协议占用两个端口号: 
21端口:命令控制,用于接收客户端执行的FTP命令。 
20端口:数据传输,用于上传、下载文件数据。

FTP数据传输的类型: 
主动模式:FTP服务端主动向FTP客户端发起连接请求。 
被动模式:FTP服务端等待FTP客户端的连接请求。**

声明:

Vsftpd即“Very Secure FTP Daemon”是一款运行在类Unix操作系统的FTP服务端程序,Vsftpd主打的是安全性、完全开源及免费、速率高、支持IPv6、虚拟用户功能等等其他FTP服务端软件不具备的功能。

vsftpd程序配置文件参数的作用:

参数 作用
listen=[YES/NO] 是否以独立运行的方式监听服务。
listen_address=IP地址 设置要监听的IP地址。
listen_port=21 设置FTP服务的监听端口
download_enable=[YES/NO] 是否允许下载文件
userlist_enable=[YES/NO];userlist_deny=[YES/NO] 是否启用“禁止登陆用户名单”。
max_clients=0 最大客户端连接数,0为不限制
max_per_ip=0 同一IP地址最大连接数,0位不限制
anonymous_enable=[YES/NO] 是否允许匿名用户访问
anon_upload_enable=[YES/NO] 是否允许匿名用户上传文件
anon_umask=022 匿名用户上传文件的umask值
anon_root=/var/ftp 匿名用户的FTP根目录
anon_mkdir_write_enable=[YES/NO] 是否允许匿名用户创建目录
anon_other_write_enable=[YES/NO] 是否开放匿名用户其他写入权限。
anon_max_rate=0 匿名用户最大传输速率(字节),0为不限制
local_enable=[YES/NO] 是否允许本地用户登陆FTP
local_umask=022 本地用户上传文件的umask值
local_root=/var/ftp 本地用户的FTP根目录
chroot_local_user=[YES/NO] 是否将用户权限禁锢在FTP目录,更加的安全
local_max_rate=0 本地用户最大传输速率(字节),0为不限制

Vsftpd的验证方式

匿名访问:任何人无需验证口令即可登入FTP服务端,顾名思义匿名访问就是所有人均可随意登入FTP服务,这样自然会产生安全问题,一般用于存放公开的数据。

本地用户:使用FTP服务器中的用户、密码信息,所以本地用户则需要用户提供帐号及口令后才能登入FTP服务,更加的安全,而虚拟用户则是最安全的。

虚拟用户:创建独立的FTP帐号资料,所以虚拟用户则需要用户提供帐号及口令后才能登入FTP服务,更加的安全,所以虚拟用户是最安全的。

实验环境:

主机名称 操作系统 IP地址
FTP服务端 CentOS 7.0操作系统 192.168.9.203
FTP客户端 CentOS 7.0操作系统 192.168.9.204

匿名访问模式

声明:FTP匿名访问模式是比较不安全的服务模式,尤其在真实的工作环境中千万不要存放敏感的数据,以免泄露。

关闭VSFTPD防火墙和SELinux

[root@Vsftpd ~]# systemctl stop firewalld
[[email protected] ~]# vim /etc/sysconfig/selinux 

# This file controls the state of SELinux on the system.# SELINUX= can take one of these three values:#     enforcing - SELinux security policy is enforced.#     permissive - SELinux prints warnings instead of enforcing.#     disabled - No SELinux policy is loaded.SELINUX=disabled# SELINUXTYPE= can take one of three two values:#     targeted - Targeted processes are protected,#     minimum - Modification of targeted policy. Only selected processes are protected. #     mls - Multi Level Security protection.SELINUXTYPE=targeted

[root@Vsftpd ~]# getenforce Disabled

第一步:vsftpd程序默认已经允许匿名访问模式,我们要做的就是开启匿名用户的上传和写入权限

[[email protected] ~]# vim /etc/vsftpd/vsftpd.conf

anonymous_enable=YESanon_umask=022anon_upload_enable=YESanon_mkdir_write_enable=YESanon_other_write_enable=YES

第二步:启动服务

[root@Vsftpd ~]# systemctl restart vsftpd[root@Vsftpd ~]# systemctl enable vsftpd

如果重启vsftpd服务程序时没有报错,此时便可以使用FTP客户机(192.168.10.20)尝试登入FTP服务了。

第三步:到客户端,因为CentOS7.0系统中ftp命令默认没有安装,请执行”yum install ftp -y”即可安装完毕。

[[email protected] ~]# yum install -y ftp已加载插件:fastestmirrorRepodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fastbase                                                                        | 3.6 kB  00:00:00     extras                                                                      | 3.4 kB  00:00:00     updates                                                                     | 3.4 kB  00:00:00     Determining fastest mirrors * base: mirrors.zju.edu.cn * extras: mirrors.zju.edu.cn * updates: mirrors.zju.edu.cn正在解决依赖关系--> 正在检查事务---> 软件包 ftp.x86_64.0.0.17-67.el7 将被 安装--> 解决依赖关系完成

依赖关系解决

=================================================================================================== Package             架构                   版本                        源                    大小===================================================================================================正在安装: ftp                 x86_64                 0.17-67.el7                 base                  61 k

事务概要===================================================================================================安装  1 软件包

总下载量:61 k安装大小:96 kDownloading packages:ftp-0.17-67.el7.x86_64.rpm                                                  |  61 kB  00:00:00     Running transaction checkRunning transaction testTransaction test succeededRunning transaction  正在安装    : ftp-0.17-67.el7.x86_64                                                         1/1   验证中      : ftp-0.17-67.el7.x86_64                                                         1/1 

已安装:  ftp.x86_64 0:0.17-67.el7                                                                         

完毕!

注:如果访问时出现没有到主机的路由就可能是vsftp服务器的防火墙没关闭。

第四步:在客户端尝试登入FTP服务:

[[email protected] ~]# ftp 192.168.9.203Connected to 192.168.9.203 (192.168.9.203).220 (vsFTPd 3.0.2)Name (192.168.9.203:root): anonymous331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> cd pub250 Directory successfully changed.ftp> mkdir files550 Permission denied.ftp> 

思考:

在上面操作中已经将防火墙规则清空,在vsftpd.conf文件中也已经允许匿名用户创建目录与写入权限,那怎么会被拒绝了呢?

回想前面的参数细节,匿名访问模式的FTP根目录为/var/ftp:

[[email protected] ~]# ls -ld /var/ftp/pub/drwxr-xr-x 2 root root 6 11月  6 2016 /var/ftp/pub/

原来匿名用户的FTP根目录所有者/组都是root,所以匿名用户没有写入权限,那我们将所有者修改为ftp试试

[root@Vsftpd ~]# chown ftp /var/ftp/pub/

此时再用ftp命令尝试登入FTP服务并创建文件:

[[email protected] ~]# ftp 192.168.9.203Connected to 192.168.9.203 (192.168.9.203).220 (vsFTPd 3.0.2)Name (192.168.9.203:root): anonymous331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> cd pub250 Directory successfully changed.ftp> mkdir files550 Permission denied.ftp> mkdir 1550 Permission denied.ftp> 

思考:

为什么还是不行?想想可能是没有赋予匿名写的权限。

到主配置文件添加一条匿名可写的权限:write_enable=YES,并重启服务。

[[email protected] ~]# vim /etc/vsftpd/vsftpd.conf

anonymous_enable=YESanon_umask=022anon_upload_enable=YESanon_mkdir_write_enable=YESanon_other_write_enable=YESwrite_enable=YES

[root@Vsftpd ~]# systemctl restart vsftpd

到FTP服务器上再测试:

[[email protected] ~]# ftp 192.168.9.203Connected to 192.168.9.203 (192.168.9.203).220 (vsFTPd 3.0.2)Name (192.168.9.203:root): anonymous331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> cd pub250 Directory successfully changed.ftp> mkdir files257 "/pub/files" createdftp> mkdir 1257 "/pub/1" createdftp> 

成功

:如果SELinux没关闭怎么办? 
VSFTP服务器上SELinux没有关闭

[root@Vsftpd ~]# getenforce Enforcing

FTP客户端上测试创建文件夹

[[email protected] ~]# ftp 192.168.9.203Connected to 192.168.9.203 (192.168.9.203).220 (vsFTPd 3.0.2)Name (192.168.9.203:root): anonymous331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> cd pub250 Directory successfully changed.ftp> mkdir 2550 Create directory operation failed.ftp> 

# 失败

想想pub的所有者已经为ftp了,配置文件也已经给了匿名可写的权限了,可是为什么还是报创建操作失败呢?这时就要想到selinux了。

查看VSFTP的SELinux状态

[[email protected] ~]# getsebool -a |grep ftpftp_home_dir --> offftpd_anon_write --> offftpd_connect_all_unreserved --> offftpd_connect_db --> offftpd_full_access --> offftpd_use_cifs --> offftpd_use_fusefs --> offftpd_use_nfs --> offftpd_use_passive_mode --> offhttpd_can_connect_ftp --> offhttpd_enable_ftp_server --> offsftpd_anon_write --> offsftpd_enable_homedirs --> offsftpd_full_access --> offsftpd_write_ssh_home --> offtftp_anon_write --> offtftp_home_dir --> off

设置SELinux服务对ftp服务的访问规则策略为允许。

[[email protected] ~]# setsebool -P ftpd_full_access=on

[[email protected] ~]# getsebool -a |grep ftpftp_home_dir --> offftpd_anon_write --> offftpd_connect_all_unreserved --> offftpd_connect_db --> offftpd_full_access --> onftpd_use_cifs --> offftpd_use_fusefs --> offftpd_use_nfs --> offftpd_use_passive_mode --> offhttpd_can_connect_ftp --> offhttpd_enable_ftp_server --> offsftpd_anon_write --> offsftpd_enable_homedirs --> offsftpd_full_access --> offsftpd_write_ssh_home --> offtftp_anon_write --> offtftp_home_dir --> off

此时再来创建文件或目录就没有问题了:

[[email protected] ~]# ftp 192.168.9.203Connected to 192.168.9.203 (192.168.9.203).220 (vsFTPd 3.0.2)Name (192.168.9.203:root): anonymous331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> cd pub250 Directory successfully changed.ftp> mkdir tj257 "/pub/tj" createdftp> 

本地用户模式:

声明:既然要使用本地用户模式,而本地用户模式确实要比匿名访问模式更加的安全,所以本实验中会关闭匿名访问模式。

第一步:vsftpd服务程序默认已经允许本地用户模式,我们要做的是添加设置本地用户模式权限的参数

[[email protected] ~]# vim /etc/vsftpd/vsftpd.conf

# Allow anonymous FTP? (Beware - allowed by default if you comment this out).anonymous_enable=NO## Uncomment this to allow local users to log in.# When SELinux is enforcing check for SE bool ftp_home_dirlocal_enable=YES## Uncomment this to enable any form of FTP write command.write_enable=YES## Default umask for local users is 077. You may wish to change this to 022,# if your users expect that (022 is used by most other ftpd's)local_umask=022

第二步:启动服务

[[email protected] ~]# systemctl restart vsftpd[[email protected] ~]# systemctl enable vsftpdCreated symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.

在测试之前先查看下ftpusers或user_list文件中禁止登陆用户名单:

[root@Vsftpd ~]# cd /etc/vsftpd/[root@Vsftpd vsftpd]# vim user_list 

第四步:vsftpd服务为了让FTP服务更加的安全,默认禁止以root身份登入,那么创建个普通用户并为tj用户设置密码:

[root@Vsftpd ~]# useradd tj[root@Vsftpd ~]# passwd tj更改用户 tj 的密码 。新的 密码:无效的密码: 密码少于 8 个字符重新输入新的 密码:passwd:所有的身份验证令牌已经成功更新。

第五部:查看所有与ftp相关的SELinux规则:

[[email protected] ~]# getsebool -a |grep ftpftp_home_dir --> offftpd_anon_write --> offftpd_connect_all_unreserved --> offftpd_connect_db --> offftpd_full_access --> offftpd_use_cifs --> offftpd_use_fusefs --> offftpd_use_nfs --> offftpd_use_passive_mode --> offhttpd_can_connect_ftp --> offhttpd_enable_ftp_server --> offsftpd_anon_write --> offsftpd_enable_homedirs --> offsftpd_full_access --> offsftpd_write_ssh_home --> offtftp_anon_write --> offtftp_home_dir --> off

第六步:设置SELinux服务对ftp服务的访问规则策略为允许。

[[email protected] ~]# setsebool -P ftpd_full_access=on[[email protected] ~]# getsebool -a |grep ftpftp_home_dir --> offftpd_anon_write --> offftpd_connect_all_unreserved --> offftpd_connect_db --> offftpd_full_access --> onftpd_use_cifs --> offftpd_use_fusefs --> offftpd_use_nfs --> offftpd_use_passive_mode --> offhttpd_can_connect_ftp --> offhttpd_enable_ftp_server --> offsftpd_anon_write --> offsftpd_enable_homedirs --> offsftpd_full_access --> offsftpd_write_ssh_home --> offtftp_anon_write --> offtftp_home_dir --> off

第七步:在客户端尝试登入FTP服务:

[[email protected] ~]# ftp 192.168.9.203Connected to 192.168.9.203 (192.168.9.203).220 (vsFTPd 3.0.2)Name (192.168.9.203:root): tj331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> mkdir tj257 "/home/tj/tj" createdftp> 

成功

虚拟用户模式:

声明:因为虚拟用户模式的帐号口令都不是真实系统中存在的,所以只要配置妥当虚拟用户模式会比本地用户模式更加安全,但是Vsftpd服务配置虚拟用户模式的操作步骤相对复杂一些,具体流程如下:

第1步:建立虚拟FTP用户数据库文件。

第2步:创建FTP根目录及虚拟用户映射的系统用户。

第3步:建立支持虚拟用户的PAM认证文件。

第4步:在vsftpd.conf文件中添加支持配置。

第5步:为虚拟用户设置不同的权限。

第6步:重启vsftpd服务,验证实验效果。

第1步:建立虚拟FTP用户数据库文件

创建用于生成FTP用户数据库的原始帐号和密码文件:

[root@Vsftpd ~]# cd /etc/vsftpd/[root@Vsftpd vsftpd]# vim vuser.list

tj123456yy123456

第二步:使用db_load命令用HASH算法生成FTP用户数据库文件vuser.db

[[email protected] vsftpd]# db_load -T -t hash -f vuser.list vuser.db

第三步:查看数据库文件的类型

[[email protected] vsftpd]# file vuser.db vuser.db: Berkeley DB (Hash, version 9, native byte-order)

第四步:赋予权限,因为FTP用户数据库内容很敏感,所以权限应给小一些

[root@Vsftpd vsftpd]# chmod 600 vuser.db 

第五步:删除原始的帐号和密码文件

[root@Vsftpd vsftpd]# rm -f vuser.list 

第六步:创建FTP根目录及虚拟用户映射的系统用户

创建用户virtual并设置为不允许登陆系统并定义该用户的家目录:

[root@Vsftpd ~]# useradd -d /var/ftproot -s /sbin/nologin virtual

查看该用户的家目录权限:

[[email protected] ~]# ls -ld /var/ftproot/drwx------. 2 virtual virtual 59 5月  18 00:10 /var/ftproot/

为保证其他用户可以访问,给予rwxr-xr-x权限:

[root@Vsftpd ~]# chmod -Rf 755 /var/ftproot/

第七步:建立支持虚拟用户的PAM认证文件

[[email protected] ~]# vim /etc/pam.d/vsftpd.vu

auth    required        pam_userdb.so db=/etc/vsftpd/vuseraccount required        pam_userdb.so db=/etc/vsftpd/vuser

第八步:在vsftpd.conf文件中添加支持配置。

既然要使用虚拟用户模式,而虚拟用户模式确实要比匿名访问模式更加的安全,配置的同时也关闭匿名开放模式。

[[email protected] ~]# vim /etc/vsftpd/vsftpd.conf

 12 anonymous_enable=NO 16 local_enable=YES 19 write_enable=YES125 pam_service_name=vsftpd.vu128 guest_enable=YES129 guest_username=virtual130 allow_writeable_chroot=YES

# 其他不动

第九步:为虚拟用户设置不同的权限

现在不论是tj还是yy帐户,他们的权限都是相同的——默认不能上传、创建、修改文件,如果希望用户blackshield能够完全的管理FTP内的资料,就需要让FTP程序支持独立的用户权限配置文件了:

指定用户独立的权限配置文件存放的目录:

[root@Vsftpd ~]# vim /etc/vsftpd/vsftpd.conf

添加一条以下的语句:user_config_dir=/etc/vsftpd/vuser.dir

创建用户独立的权限配置文件存放的目录:

[root@Vsftpd ~]# mkdir /etc/vsftpd/vuser.dir

创建空白的tj的配置文件:

[root@Vsftpd ~]# cd /etc/vsftpd/vuser.dir/[root@Vsftpd vuser.dir]# touch tj

指定yy用户的具体权限:

[[email protected] vuser.dir]# vim yy

anon_upload_enable=YESanon_mkdir_write_enable=YESanon_other_write_enable=YES                        

解释:

anon_upload_enable=NO   #如果设为 YES, 匿名用户在某些情况下允许上载文件. 这需要将 write_enable 选项激活, 并且匿名用户应当对应目录有写权限. anon_mkdir_write_enable=NO   #如果设为 YES, 匿名用户将允许在某些情况下创建目录. 这需要激活 write_enable 选项, 并且匿名 ftp 用户需要对父目录有写权限.anon_other_write_enable=NO  #如果设为YES,匿名登入者会被允许下载可阅读的档案。默认值为YES。

第十步:重启vsftpd服务,验证实验效果

确认填写正确后保存并退出vsftpd.conf文件,重启vsftpd程序并设置为开机后自动启用:

[root@Vsftpd vuser.dir]# systemctl restart vsftpd[root@Vsftpd vuser.dir]# systemctl enable vsftpd

如果重启vsftpd并没有看到报错,此时可使用FTP客户机(192.168.10.20)尝试登入FTP服务了(设置SELinux对FTP服务的规则为允许):

[[email protected] vuser.dir]# getsebool -a |grep ftpftp_home_dir --> offftpd_anon_write --> offftpd_connect_all_unreserved --> offftpd_connect_db --> offftpd_full_access --> onftpd_use_cifs --> offftpd_use_fusefs --> offftpd_use_nfs --> offftpd_use_passive_mode --> offhttpd_can_connect_ftp --> offhttpd_enable_ftp_server --> offsftpd_anon_write --> offsftpd_enable_homedirs --> offsftpd_full_access --> offsftpd_write_ssh_home --> offtftp_anon_write --> offtftp_home_dir --> off[[email protected] vuser.dir]# 

第十一步:到FTP客户端测试

用yy来创建文件或目录

[[email protected] ~]# ftp 192.168.9.203Connected to 192.168.9.203 (192.168.9.203).220 (vsFTPd 3.0.2)Name (192.168.9.203:root): yy331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> mkdir yy1257 "/yy1" createdftp> rename yy1 database350 Ready for RNTO.250 Rename successful.ftp> rmdir database250 Remove directory operation successful.ftp> exit221 Goodbye.[[email protected] ~]# 

用tj来创建文件或目录(肯定会报错):

[[email protected] ~]# ftp 192.168.9.203Connected to 192.168.9.203 (192.168.9.203).220 (vsFTPd 3.0.2)Name (192.168.9.203:root): tj331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> mkdir tj550 Permission denied.ftp> 
时间: 2024-10-07 13:00:25

CentOS 7.0 使用Vsftpd服务传输文件的相关文章

CentOS 7.0 使用Vsftpd服务传输文件(唐杰)

http://note.youdao.com/noteshare?id=0b9d94cbbcc220d2e827e6994016e14a

使用 vsftpd 服务传输文件

1.文件传输协议(File Transfer Protocol,FTP) FTP是一种在互联网中进行文件传输的协议,基于客户端/服务器模式,默认使用20.21号端口,其中端口20(数据端口)用于进行数据传输,端口21(命令端口)用于接受客户端发出的相关FTP命令与参数. FTP服务器是按照FTP协议在互联网上提供文件存储和访问服务的主机,FTP客户端则是向服务器发送连接请求,以建立数据传输链路的主机.FTP协议有下面两种工作模式. 主动模式:FTP服务器主动向客户端发起连接请求. 被动模式:FT

第11章 使用Vsftpd服务传输文件

本章讲述一下概念及服务配置文件传输协议FTP(File Transfer Protocol)可插拔认证模块PAM(Pluggable Authentication Module)简单文件传输协议TFTP(Trivial File Transfer Protocol) FTP是一种在互联网中进行文件传输的协议,基于客户端/服务器模式,默认使用20.21号端口,其中端口20(数据端口)用于进行数据传输,端口21(命令端口)用于接受客户端发出的相关FTP命令与参数.FTP协议有下面两种工作模式.主动模

使用Vsftpd服务传输文件

vsftpd(very secure FTP daemon)服务程序vsftpd服务程序三种认证模式(匿名开放模式.本地用户模式.虚拟用户模式)vsftpd服务程序的主配置文件/etc/vsftpd/vsftpd.confvsftpd服务配置格式关于反掩码umask 原文地址:https://blog.51cto.com/948891/2403973

linux学习11章-使用vsftpd服务传输文件和12章-使用Samba或NFS实现文件共享

2019年12月8日 vsftpd作为更加安全的文件传输的服务程序,允许用户以三种认证模式登录到FTP服务器上. 匿名开放模式:是一种最不安全的认证模式,任何人都可以无需密码验证而直接登录到FTP服务器. 本地用户模式:是通过Linux系统本地的账户密码信息进行认证的模式,相较于匿名开放模式更安全,而且配置起来也很简单.但是如果被黑客破解了账户的信息,就可以畅通无阻地登录FTP服务器,从而完全控制整台服务器. 虚拟用户模式:是这三种模式中最安全的一种认证模式,它需要为FTP服务单独建立用户数据库

Vsftpd服务传输

1. FTP简单介绍 文件传输协议FTP(File Transfer Protocol),即能够让用户在互联网中上传.下载文件的文件协议 FTP客户端   FTP服务器端 FTP占用两个端口号(21,20) 21端口:命令控制,用于接受客户端执行的FTP命令. 20端口:数据传输,用于上传.下载文件数据. FTP数据传输类型: 主动模式:FTP服务器端主动向FTP客户端发起连接请求. 被动模式:FTP服务器等待FTP客户端的连接请求. 2. 安装Vsftpd服务程序 Vsftpd即"Very S

centos 7.0 查看根目录下所有文件夹

centos 7.0最小化安装 第一行是登录 [[email protected] ~]# [[email protected] ~]# cd ../ [[email protected] /]# ls bin dev home lib64 mnt proc run srv tmp var boot etc lib media opt root sbin sys usr 跟磁盘文件对比 [[email protected] /]# df 文件系统 1K-块 已用 可用 已用% 挂载点 /dev/

vc++调用web服务传输文件

bool webService::UploadFile(LPWSTR appKey, LPWSTR fileName, const int len, unsigned char * buff) { try { //SoapSerializer用于序列化(串行化),创建,封装SOAP消息.用来构建一个向Web服务发送的SOAP消息 ISoapSerializerPtr Serializer; //SoapReader将SOAP消息解析为一个DOM模型,并提供一系列操作该DOM模型的方法 ISoap

FTP文件传输协议之vsftpd服务

一.FTP服务概述 FTP(File Transfer Protocol,文件传输协议)是典型的C/S结构的应用层协议,需要由服务端软件.客户端软件共同实现文件传输功能 FTP服务器默认使用TCP协议的20.21端口与客户端实现通信.20端口用于建立数据连接,并传输数据文件:21端口用于建立控制连接,并传输FTP控制命令.FTP数据连接分为主动模式和被动模式 主动模式:服务器主动发起数据连接 被动模式:服务器被动等待数据连接 vsftpd软件 vsftpd是目前在Linux/Unix领域应用十分