一、简介

  vsftp是一个基于GPL发布的类unix系统上使用的ftp服务器软件,它的全称是very secure FTP ,软件的编写初衷是为了代码的安全,另外高速与高稳定性也是vsftp的两个重要特性。

二、ftp服务的连接方式

  ftp并不是只单一的支持一种工作模式,它可以支持主动模式(active ftp)和被动模式(passive ftp)两种模式。

  1 主动模式

  首先,ftp客户端随机开启一个大于1024的端口S,并和服务器的21端口建立连接,然后打开一个S+1端口进行监听,同时向服务器发出PORT(S+1)命令,(port命令表示了客户端用什么端口接受数据)。服务器端在传送数据的时候,通过自己的TCP 20端口发送数据,因此ftp必须和客户端建立一个新的连接用于数据传输。

  2 被动模式

  在被动模式下建立控制通道类似于在主动模式下建立通道的操作:ftp客户端随机开启一个大于1024的端口S 向服务器的21 号端口发起连接,同时会开启一个S+1 号端口,然后向服务器发送PASV 命令,通知服务器处于被动模式。服务器收到命令后,开放一个大于1024的端口P 进行监听,然后用PORT P命令通知客户端,自己的数据端口是P。客户端收到命令后,通过S+1 号端口连接服务器的端口P,然后在两个端口之间进行数据传输。

  通过这两种模式的介绍可以看出,主动模式的FTP是服务器主动连接客户端的数据端口,被动模式的ftp是服务器被动地等待客户端连接自己的数据端口。   多数防火墙都不允许接受外部发起的连接,所以ftp的主动模式通过防火墙通常都会受到限制。ftp的被动模式通常用于防火墙后的ftp客户访问外借的ftp服务器。因此,如果有防火墙,最好是采用被动模式,但是如果对安全的需求很高,还是建议采用主动模式较好。

三、安装

  • 安装方式

  1.可以通过包管理器直接安装编译好的二进制文件。

  2.可以去官网上下载源码包自己编译安装。

  • 安装过程

  1.使用wget下载官方源码包

wget https://security.appspot.com/downloads/vsftpd-3.0.2.tar.gz

  2.解压文件

 tar -zxvf vsftpd-3.0..tar.gz 

  3.编译安装

#进入到解压的文件夹内
cd vsftpd-3.0./
#里面有自带的安装说明文件INSTALL #根据自己的实际需求,修改builddefs.h头文件
#里面定义了一些编译选项,可以根据自己的要求选择是否编译某个模块,
#例如,tcp_wrapper等。 #进行编译
make
#查看是否编译成功,成功的话会有vsftpd二进制文件生成
ls -l vsftpd

编译时出现错误如下,可以查看:http://www.cnblogs.com/z-books/p/4171195.html

/usr/bin/ld: cannot find -lcap
collect2: ld returned exit status
make: *** [vsftpd] Error
#解决办法
#根据上面连接可知,查看是否安装了libcap文件
rpm -qa|grep libcap #查看libcap的相关文件
rpm -ql libcap #查看Makefile文件
#根据查看可以知道,需要libcap.so文件
#做一个链接
ln -s /lib64/libcap.so. /lib64/libcap.so #继续编译
make #设置一些vsftpd需要的必须条件
#vsftpd默认配置中需要一个nobody用户
useradd nobody #默认配置中需要一个空的目录
mkdir /usr/share/empty/ #对于匿名FTP,需要一个ftp用户,还有它的主目录
mkdir /var/ftp
useradd -d /var/ftp ftp #更改匿名用户主目录权限
chown root.root /var/ftp
chmod og-w /var/ftp #安装vsftpd配置文件,可执行文件,man手册
make install
#复制配置文件到/etc
cp vsftpd.conf /etc #vsftpd可以独立运行或者依附于超级服务
#独立运行
vim /etc/vsftpd.conf
#增加一行
listen=YES
#这可以告诉vsftpd它以独立服务运行,而不是依赖于超级服务 #运行vsftpd
/usr/local/sbin/vsftpd & #安装ftp客户端
yum install ftp #测试
ftp localhost
#匿名登录用户名ftp,密码为空
#如果不能访问,可以关闭selinux
#添加端口21,22到iptables或者关闭iptables服务

三、实现方式

  vsftp的实现方式有三种形式:

  1.匿名用户形式:在默认安装的情况下,系统只提供匿名用户访问;

  2.本地用户形式:以/etc/passwd中的用户名为认证方式;

  3.虚拟用户形式:支持将用户名和口令保存在数据库文件或数据库服务器中。

比较:相对于ftp的本地用户形式来说,虚拟用户只是ftp服务器的专有用户,虚拟用户只能访问ftp服务器所提供的资源,这大大增强了系统本身的安全性。相对于匿名用户而言,虚拟用户需要用户名和密码才能获取ftp服务器中的文件,增加了对用户和下载的可管理性。对于需要提供下载服务,但又不希望所有人都可以匿名下载;既需要对下载用户进行管理,又考虑到主机安全和管理方便的ftp站点来说,虚拟用户是一种极好的解决方案。

linux学习之-vsftp的更多相关文章

  1. Linux 学习笔记之超详细基础linux命令(the end)

    Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 14---------------- ...

  2. Linux学习日记-使用EF6 Code First(四)

    一.在linux上使用EF 开发环境 VS2013+mono 3.10.0 +EF 6.1.0 先检测一下EF是不是6的 如果不是  请参阅 Linux学习日记-EF6的安装升级(三) 由于我的数据库 ...

  3. Linux学习之CentOS(二十二)--单用户模式下修改Root用户的密码

    在上一篇随笔里面详细讲解了Linux系统的启动过程 (Linux学习之CentOS(二十一)--Linux系统启动详解),我们知道Linux系统的启动级别一共有6种级别,通过 /etc/inittab ...

  4. Linux学习笔记之兄弟连

    systemctl --user enable pulseaudio说明:安装完成后系统没有声音,用该命令可以打开.ifconfig eth0 192.168.118.1说明:给网卡设置IP地址.ap ...

  5. Linux学习内容

    Linux学习要点(转载自红联) 一.学习Linux的基本要求1. 掌握至少50个以上的常用命令. 2. 熟悉Gnome/KDE等X-windows桌面环境操作 . 3. 掌握.tgz..rpm等软件 ...

  6. Linux 学习笔记

    Linux学习笔记 请切换web视图查看,表格比较大,方法:视图>>web板式视图 博客园不能粘贴图片吗 http://wenku.baidu.com/view/bda1c3067fd53 ...

  7. Linux学习心得之 Linux下命令行Android开发环境的搭建

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Linux学习心得之 Linux下命令行Android开发环境的搭建 1. 前言2. Jav ...

  8. Linux学习心得之 Linux下ant安装与使用

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Linux学习心得之 Linux下ant安装与使用 1. 前言2. ant安装3. 简单的a ...

  9. 实验楼 linux 学习

    实验楼 linux 学习     一.Linux 用户管理 1.查看用户 who am i // who mom likes whoami   ====--------====== 输入的第一列表示打 ...

随机推荐

  1. 浅谈JavaScript中闭包

    引言 闭包可以说是JavaScript中最有特色的一个地方,很好的理解闭包是更深层次的学习JavaScript的基础.这篇文章我们就来简单的谈下JavaScript下的闭包. 闭包是什么? 闭包是什么 ...

  2. Hibernate SQL优化技巧dynamic-insert="true" dynamic-update="true"

    最近正在拜读Hibernate之父大作<Java Persistence with Hibernate>,颇有收获.在我们熟悉的Hibernate映射文件中也大有乾坤,很多值得我注意的地方 ...

  3. vim查找替换

    http://www.cnblogs.com/ltang/articles/2034291.html %: 表示百分百,表示所有 行的意思... 如果不指定行号, 则表示当前行; g: 表示一行中的所 ...

  4. 让vim成为ide

    gvim的tabe标签页打开跟在同一个页面(标签中)打开,对buffer的影响都是一样的,都是增加新的buffer 可以认为gvim的命令行模式跟bash shell里的操作差不多 在命令行模式中通过 ...

  5. centos 安装 mysql5.7.9初始密码问题

    mysql5.7.9在安装完成后会,root用户会产生一个不为空的初始密码,登陆mysql就会产生问题了,有必要修改一下登陆密码: 这是从网上找的一个方法,加以总结得出来的,亲测可以:# /etc/i ...

  6. 繁华模拟赛day8 科技树

    /* 贪心,很明显是越容易升级的越先升级 */ #include<iostream> #include<cstdio> #include<string> #incl ...

  7. winServer2003除默认端口外的其他端口只能本地访问,关闭防火墙即可

    winServer2003除默认端口外的其他端口只能本地访问,关闭防火墙即可

  8. OC第七节——内存管理

    戏言: iOS开发已经到了一个ARC时代,一般不需要我们过多的去关注内存是怎么分配,怎么管理的.很长一段时间,我也不知道内存管理是什么鬼,但如果遇到这方面的问题,却找不到解决办法确实很头疼的.So,还 ...

  9. 修改dedecms默认文章来源 "未知"改为关键词

    在dedecms后台发表文章时文章来源是可选的,有时我们没有选择或没填写,那么前台默认文章来源即“未知”.如何将dedecms默认文章来源改为自己想要的关键词呢?即将“未知”改为“keyword”呢? ...

  10. updatepanel用法之triggers(局部刷新,全部刷新)使用示例

    asyncpostbacktrigger(异步回调触发器):局部刷新,只刷新updatepanel内部的内容postbacktrigger(普通回调触发器):全部刷新 <asp:ScriptMa ...