一:了解FTP基本知识
Vsftpd

1.什么是FTP?
File Transfer Protocol 基于C/S结构的文件传输协议
2.使用什么协议?什么端口?
TCP 21 建立命令链路
TCP 20 在主动传输模式下服务器使用20端口向客户端建立数据链路
3.FTP工作原理

--------- Client Server--------------

1031 21
1032 20

①客户端向服务器发出连接请求,同时客户端系统动态地打开一个大于1024的端口等候服务器连接(比如1031端口)
②若FTP服务器在端口21侦听到该请求,则会在客户端1031端口和服务器的21端口之间建立一个FTP会话连接
③当需要传输数据时,FTP客户端动态地打开一个大于1024的端口(比如1032端口)连接到服务器的20端口,并在这两个端口之间进行数据的传输。当数据传输完毕后,这两个端口会自动关闭
④当FTP客户端断开与FTP服务器的连接时,客户端上动态分配的端口将自动释放

4.FTP工作模式
主动传输模式(Active FTP):
在主动传输模式下,FTP客户端随机开启一个大于1024的端口N(1025)向服务器的21号端口发起连接,然后开放N+1号端口(1026)进行监听,并向服务器发送PORT 1026命令。服务器接收到命令后,会用其本地的FTP数据端口(通常20)来连接客户端指定的端口1026,进行数据传输。

被动传输模式(Passive FTP):
在被动传输模式下,FTP客户端随机开启一个大于1024的端口N(1025)向服务器的21号端口发起连接,同时会开启N+1号端口(1026),然后向服务器发送PASV 命令。通知服务器自己处于被动模式。服务器收到命令后,会开放一个大于1024端口(1521)进行监听,然后用PORT 命令通知客户端,自己的数据端口是1521.客户端收到命令后会通过1026号端口连接服务器的1521,然后在两个端口之间进行数据传输。
5.FTP传输模式
二进制模式:图片和执行文件压缩文件
文本模式:CGI脚本和普通HTML文件
目前服务器上面和FTP客户端软件能够自动识别文件类型并选择相应的传输方式
6.FTP账户类型
匿名用户:ftp 或 anonymous
本地用户:Linux服务器本机的系统用户账号
虚拟用户:账号信息存放在独立的文件或数据库内
7.默认安装vsftpd特点
匿名用户与本地用户都可以登录
匿名用户登录到/var/ftp,只能下载不能上传
本地用户登录到本地用户的家目录,可以上传和下载
ftp和lftp命令
get 下载
put 上传
mget 下载多个,支持通配符
mput 上传多个,支持通配符
!cmd 执行外面命令
lcd 切换外面路径
9.访问FTP地址表示方法
用户验证访问
ftp://user:pass@192.168.4.5
ftp://user:pass@192.168.4.5/path/to/file

URL,统一资源定位器(网址)
Unified Resource Locator
协议://用户名:密码@服务器地址:端口/目录路径/文件名

10.RHEL6自带的ftp软件包?主配置文件是?服务启动脚本?
vsftpd
/etc/vsftpd/vsftpd.conf
重点字段意义:anonymous_enable=YES #开启匿名共享
local_enable=YES #开启本地账户共享
write_enable=YES #本地账户是否可写
anon_upload_enable=YES #匿名用户是否可以上传文件
anon_mkdir_write_enable=YES #匿名可创建目录
anon_other_write_enable=YES #匿名删除,重命名
chroot_local_user #禁锢本地账户
anon_root=/abc #定义匿名用户根目录为/abc目录
anon_umask=022 #定义匿名用户上传的掩码值

11.配置文件:/etc/vsftpd/vsftpd.conf(主配置)
/etc/vsftpd/ftpusers(黑名单)
/etc/vsftpd/user_list(黑/白名单)
在字段userlist_enable=YES或NO //是否开启user_list文件
在字段userlist_deny=NO时user_list是白名单
12.其他常用选项
listen_port=端口号
listen_address=IP地址

14.并发连接和速度:
max_clients=最大并发连接数
max_per_ip=同一IP地址的最大并发连接数
anon_max_rate=匿名用户访问速度(字节/秒)
local_max_rate=本地用户访问速度(字节/秒)

安装 FTP
1.安装软件包

关掉防火墙和selinux,不然需要提前配好
yum -y install vsftpd

2.启动服务
service vsftpd restart
chkconfig vsftpd on
netstat -anptu | grep vsftpd

3.创建测试文件
ls -l /etc/* > /var/ftp/pub/anon.txt
[root@svr5 ~]# useradd lisi
[root@svr5 ~]# echo 123456 | passwd --stdin lisi
[root@svr5 ~]# ls -l /etc/* > ~lisi/lisi.txt
4.验证:(客户端测试)
浏览器测试:
ftp://192.168.4.5/
ftp://lisi:123456@192.168.4.5/ 用户密码登录方式
命令行测试:
[root@pc205 ~]# yum -y install ftp lftp
[root@pc205 ~]# ftp 192.168.4.5
ftp> cd pub
ftp> ls
ftp> get anon.txt
ftp> !ls
ftp> put install.log
ftp> quit
[root@pc205 ~]# lftp 192.168.4.5
lftp 192.168.4.5:~> user lisi
口令:
[root@pc205 ~]# yum -y install wget
[root@pc205 ~]# wget ftp://lisi:123456@192.168.4.5/lisi.txt 下载文件测试

实验总结:
匿名用户与本地用户都可以登录
匿名用户登录到/var/ftp,只能下载不能上传
本地用户登录到本地用户的家目录,可以上传和下载 用户家目录

实验三:
禁锢本地用户在自己家目录
实验步骤:
先在客户端测试默认结果
[root@pc205 ~]# ftp 192.168.4.5
...
Name (192.168.4.5:root): lisi
331 Please specify the password.
Password:
...
ftp> pwd
257 "/home/lisi"
在服务器端配置
[root@svr5 ~]# cd /etc/vsftpd/
[root@svr5 vsftpd]# cp vsftpd.conf vsftpd.conf.bak
[root@svr5 vsftpd]# vim vsftpd.conf
...
96 chroot_local_user=YES
...
[root@svr5 vsftpd]# service vsftpd restart
在客户端测试:
[root@pc205 ~]# ftp 192.168.4.5
...
Name (192.168.4.5:root): lisi
331 Please specify the password.
Password:
230 Login successful.
ftp> pwd
257 "/"

实验四:用户访问控制(黑白名单)
通过ftpusers阻止mike访问
将user_list设为白名单
允许lisi、mike访问
分别测试匿名访问、lisi和mike访问
将ftp加入白名单,再测试匿名访问
[root@svr5 ~]# useradd mike
[root@svr5 ~]# echo 123456 | passwd --stdin mike
[root@svr5 ~]# grep mike /etc/vsftpd/ftpusers
mike
[root@svr5 ~]# service vsftpd restart
测试:用mike访问ftp
[root@svr5 ~]# vim /etc/vsftpd/vsftpd.conf
...
121 userlist_deny=NO
...
[root@svr5 ~]# service vsftpd restart
[root@svr5 ~]# grep mike /etc/vsftpd/ftpusers
[root@svr5 ~]# tail -n 2 /etc/vsftpd/user_list
lisi
mike
测试:
分别使用mike与lisi登录测试
实验完毕,请将主配置文件121 userlist_deny=NO注释,将user_list和ftpusers里面添加的账户去掉

实验五:
最多100个并发,每IP地址最多2个并发
限制匿名下载速度为50KB/s
限制用户下载速度为500KB/s
通过 ftp、wget 验证上述限制

[root@svr5 ~]# vim /etc/vsftpd/vsftpd.conf
...
122 max_clients=100
123 max_per_ip=2
124 anon_max_rate=50000
125 local_max_rate=500000

[root@svr5 ~]# service vsftpd restart
[root@svr5 ~]# dd if=/dev/zero of=/var/ftp/pub/anon.tgz bs=1M count=1000
[root@svr5 ~]# dd if=/dev/zero of=/home/lisi/local.tgz bs=1M count=1000
测试:
[root@pc205 ~]# wget ftp://192.168.4.5/pub/anon.tgz
[root@pc205 ~]# wget ftp://lisi:123456@192.168.4.5/local.tgz

补充:
匿名用户登录对共享根目录(/var/ftp)禁止有写入权限,否则禁止匿名账户登录!

初级FTP搭建的更多相关文章

  1. Xlight FTP搭建FTP服务器教程

    Xlight FTP搭建FTP服务器教程 1. 服务器公共设置 设置FTP 端口, ip 等 FTP 服务器公共的设定 2. 设定 FTP 用户, FTP 目录 等信息    备注: 这个用户是非Wi ...

  2. FTP 搭建

    FTP 搭建 FTP 是 File Transfer Protocol(文件传输协议)的英文简称,它工作在 0SI 模型的第七层,TCP 模型的第四屋上,即应用层. 一.FTP 简介 FTP 会话时包 ...

  3. linux私有ftp搭建与创建新用户

    一.私有ftp搭建 以后补充 1. 搭建 2.修改配置文件 二.创建新用户 在linux搭建好私有ftp后,默认存放目录是 /var/ftp/ 我们有时候需要给外部公司之类的用,但又不想让他们直接在  ...

  4. ftp搭建后外网无法连接和访问阿里云服务器(非软件)

    阿里云服务器由于性价比高,是不少企业建站朋友们的首选.而在购买阿里云服务器后,不少客户反映其在搭建FTP后出现外网无法访问的问题,这里特意搜集整理了关于ftp搭建后外网无法连接和访问的问题,提供以下解 ...

  5. FTP搭建注意事项

    正常的FTP搭建步骤很简单,随便网搜一篇文章就出来了 下面提出一个网址可供学习 https://blog.csdn.net/m0_38044299/article/details/81627607 但 ...

  6. FTP搭建YUM源服务器

    一.FTP搭建YUM源服务器 1.服务器 挂载centos镜像[root@localhost ~]#yum install vsftpd[root@localhost ~]#systemctl sta ...

  7. 使用FTP搭建YUM

    VSFTP搭建YUM源 1.安装FTP [root@FTP kel]# rpm -qa |grep vsftp vsftpd-2.2.2-6.el6_0.1.x86_64 首先需要安装的ftp软件为v ...

  8. 170116、centos6.4下nginx和ftp搭建图片服务器

    一.需要的组件 图片服务器两个服务: Nginx(图片访问): 1.http服务:可以使用nginx做静态资源服务器.也可以使用apache.推荐使用nginx,效率更高. 2.反向代理 实现 负载均 ...

  9. nginx+ftp搭建图片服务器(Windows Server服务器环境下)

    几种图片服务器的对比 1.直接使用ftp服务器,访问图片路径为 ftp://账户:密码@192.168.0.106/31275-105.jpg 不采用这种方式,不安全容易暴露ftp账户信息 2.直接使 ...

随机推荐

  1. 快速构建Windows 8风格应用17-布局控件

    原文:快速构建Windows 8风格应用17-布局控件 本篇博文主要介绍三种常用的布局控件:Canvas.Grid.StackPanel. Panel类是开发Windows 8 Store应用中一个重 ...

  2. LibVLC audio controls

    原文 http://www.videolan.org/developers/vlc/doc/doxygen/html/group__libvlc__audio.html LibVLC audio co ...

  3. 使用QT来制作串口终端

    为什么要使用QT,因为它是跨平台的. 我现在使用的环境是Win7 64bit,使用VS的编译器来编译QT工程. 安装这套环境简单说一下:先到QT官网下载qt-windows-opensource-5. ...

  4. windows 7 telnet 开启关闭

    win7运行telnet提示:'telnet' 不是内部或外部命令,也不是可运行的程序或批处理文件 原因:win7默认没有打开此功能 解决方案:控制面板->程序和功能->打开或关闭wind ...

  5. .NET简单企业应用

    <.NET简单企业应用>项目开发环境 项目开始,开发团队需要构建一套开发环境,主要包含:开发工具.代码管理/版本控制系统.任务和Bug管理系统和持续集成(CI)系统.本文主要列举项目开发中 ...

  6. leetcode[86] Scramble String

    将一个单词按照这种方式分: Below is one possible representation of s1 = "great": great / \ gr eat / \ / ...

  7. Angularjs web应用

    构建兼容浏览器的Angularjs web应用 背景 随着mvvm逐渐成熟,现在使用jQuery构建web应用已经显得过时了,而且使用jQuery需要编写更多的代码去控制dom的取值.赋值.绑定事件等 ...

  8. Python的@符号

    Python一直都属于用,没有去系统学习过,在一次代码review中见到了@符号,回来看了下,这个符号用于装饰器中,用于修饰一个函数,把被修饰的函数作为参数传递给装饰器,下面举几个例子: 1. @cl ...

  9. mvc项目如何在IIS7.5

    mvc项目如何在IIS7.5上发布的 1.在vs中打开你要发布的项目,右键属性找到发布 2.弹出发布web对话框,选择<新建配置文件...> 在弹出的对话框中输入一个配置文件名称,后确定 ...

  10. HTTP报文格式详解

    HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的.HTTP有两类报文:请求报文和响应报文. HTTP请求报文 一个HTTP请求报文由请求行(request ...