FTP服务器详解之监控ftp服务器、上传文件到ftp服务器、ftp文件监控的方法

现在FTP文件服务器的使用极为普遍,可以方便地将文件实时存储在FTP文件服务器上,那么如何搭建FTP文件服务器呢,以及如何监控FTP文件服务器文件访问操作日志情况呢?详细如下:

第1页:FTP服务器的作用

FTP服务器(File Transfer Protocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。FTP服务器常常被用来进行文件共享和传输,是互联网领域必不可少的一环。

FTP服务器的作用

FTP服务器是为了解决文件传输障碍问题而产生的。那么FTP服务器在这之间起到了什么作用呢?

在互联网起步时期,在网上进行传输文件是一件十分棘手的事情,不仅各个用户所使用终端不同,如个人电脑、Mac、工作站、大型机等种类各异,而且操作系统也有着很大的区别,Windows、Unix、Dos或者MacOS等系统,运行方式迥异,传输和分享都有着很大的限制。

FTP协议包括了各种客户端和FTP服务器

而为了消除这种交流问题,互联网工作者就需要建立一个统一的传输协议,这就是FTP协议。而FTP协议的两大组成部分就是FTP服务器和FTP客户端。而FTP服务器起到了中转站和存储中心的作用,用来传递、保存和分发文件给各个客户端。

二者间进行文件的上传和下载

FTP服务器内所存储的文件大多都是从用户的客户机程序中利用FTP协议传输拷贝到远程主机上FTP服务器程序后进行存储的,这个过程被称为上载(upload,也叫上传);同理,用户将文件从FTP服务器中拷贝并传输到自己的终端机的过程就是下载(download)。上传和下载过程是我们所能用到的再常见不过的操作过程。

第2页:FTP服务器的连接

FTP服务器的连接

由于FTP服务器承担有文件存储和传播的重任,所以其与用户的连接也有着三重限制。

FTP服务器在使用前必须要先登录获取远程连接后,用户才能接触到所需文件。用户想要取走自己想要的文件通常有两种方式,一种是Standard ,即PORT方式,是一种主动与服务器连接的方式;另一种是Passive,即PASV方式,是一种被动和服务器连接的方式。

FTP协议连接体系

想要取走想要的文件必须要经过三重门。第一重门就是用户登录,即用户ID和口令,否则便无法连接到FTP服务器获取文件。这道门是第一重门,但是问题在于他严重的限制了互联网的开放性,于是乎如今这道门的重要性已经大幅降低。

后两重门都是FTP服务器的端口。第二重门是FTP服务器的TCP 21端口,FTP客户端和这个端口建立连接以后,可以通过这个通道发送命令,客户在收到数据的时候在这个通道中发送命令。

Port方式建立连接

而第三重门则要复杂一些了。过去,上述的命令通常是Port命令,传输给FTP服务器后,服务器就会从自己的TCP20数据端口连接到客户指定的端口进行文件的拷贝和传输。而这种方式的话需要FTP服务器和客户端建立一个新的连接来传输数据,
由于这种新连接的安全性难以保证,FTP服务器的第三重门还有另外一种形态,即用户发送的命令不再使用Port命令,而是Pasv命令。FTP服务器接到这种命令后会打开一个端口号大于1024的高端随机端口,然后通知客户端在这个端口处传输数据请求,在这个端口直接完成数据的传送工作,而FTP服务器并不需要和客户端建立新的连接。

第3页:FTP服务器的匿名机制

FTP服务器的匿名机制

而一些朋友会纳闷了,那我要是在网上下载软件的时候,我也没给他提供什么登录信息、用户ID和口令啊?那是因为FTP服务器还有一种匿名FTP机制。

前面提到,第一重门的存在阻碍了互联网的开放性,所以为了增加信息交流的便捷性,从而创造了一种匿名FTP机制。这种机制中,系统管理员建立了一个特殊的ID,anonymous。所有能上网的人都可以用了这个id,就相当于提供了一个挂在门上的钥匙,用户的口令也可以是任意字符串,登录不会存在任何障碍。

匿名FTP服务器有统一用户名

不过,匿名FTP机制的存在并非让全部文件都可以共享公开的。也就是说当远程主机提供匿名FTP服务的时候,往往开放的是一部分的目录,允许用户匿名存取,而大多数的目录都是处于隐匿状态。

另一个问题接踵而至,由于FTP服务器兼具存取功能,互联网中的木马文件和带有病毒的文件实在是太多,如果这些文件也放进去那不就很容易被传播开了吗?解决方法很简单,那就是大多数的匿名FTP服务器是只取不存的。

而即便是能够提供存放服务,用户能够放进去的也是一个特殊的共享空间,只存不取。而当系统管理员定期对这些文件进行整理之后,将危险文件直接删除弃置,安全文件则可以整理归类后,进行存储或者公开等用处。

这种的话就不允许匿名登录了

理论上来讲,匿名FTP有机会成为世界最大的信息库,因为这些信息和文件经过不断的整理,开放,增长和优化,几乎可以用不关闭,所有的主题都有可能涉及到,而且,这还都是免费的。而这也是当今软件发布和下载最常用的的方法。
某种程度上来讲,互联网能够发展至今就是因为使用的都是通过标准协议提供标准服务的程序,这才让交流有了基础,让信息流动有了价值。而FTP服务器无疑就是最大的助力,其为互联网注入了勃勃的生机。

如果你想监控FTP服务器文件访问操作情况,则可以部署大势至FTP文件服务器监控软件(下载地址:http://www.grabsun.com/ftpjk.html),只需要在FTP服务器上安装之后,就可以全面监控FTP服务器文件访问日志,可以记录修改FTP服务器文件、删除ftp服务器文件以及下载ftp服务器和上传ftp服务器文件等行为,从而便于管理员实时掌握ftp服务器文件使用情况,保护FTP服务器文件安全。如下图所示:

总之,FTP文件服务器的搭建及其文件管理,是一项比较复杂和细致的工作,需要全面掌握相关配置的基础上,再配合相应的FTP文件监控软件,则可以最大限度上保护FTP服务器文件安全。

(0)

相关推荐

  • 用winrar和ftp命令实现自动备份文件并自动上传到指定的ftp服务器

    1.利用winrar建立压缩包 首先将要备份的文件路径收集到一个文本文件里 如我的rat.txt里内容如下: "C:\Documents and Settings\EvanZhang\Desktop\untitled.JPG""C:\Documents and Settings\EvanZhang\Desktop\文具用品领用确认表.xls""C:\Documents and Settings\EvanZhang\Desktop\test.exe"

  • JAVA技术实现上传下载文件到FTP服务器(完整)

    具体详细介绍请看下文: 在使用文件进行交互数据的应用来说,使用FTP服务器是一个很好的选择.本文使用Apache Jakarta Commons Net(commons-net-3.3.jar) 基于FileZilla Server服务器实现FTP服务器上文件的上传/下载/删除等操作. 关于FileZilla Server服务器的详细搭建配置过程,详情请见 FileZilla Server安装配置教程 .之前有朋友说,上传大文件(几百M以上的文件)到FTP服务器时会重现无法重命名的问题,但本人亲

  • Java实现ftp上传下载、删除文件及在ftp服务器上传文件夹的方法

    一个JAVA 实现FTP功能的代码,包括了服务器的设置模块,并包括有上传文件至FTP的通用方法.下载文件的通用方法以及删除文件.在ftp服务器上传文件夹.检测文件夹是否存在等,里面的有些代码对编写JAVA文件上传或许有参考价值,Java FTP主文件代码: package ftpDemo; import java.io.DataOutputStream; import java.io.InputStream; import java.io.OutputStream; import sun.net

  • 实现自动上传文件到ftp服务器的BAT脚本分享

    复制代码 代码如下: @Echo Off Echo open ip_address [port] >ftp.up Echo [username]>>ftp.up Echo [password]>>ftp.up Echo Cd .\ >>ftp.up Echo binary>>ftp.up Echo put "C:\ExAdminAuditLog.txt">>ftp.up Echo bye>>ftp.up FT

  • java实现将文件上传到ftp服务器的方法

    本文实例讲述了java实现将文件上传到ftp服务器的方法.分享给大家供大家参考,具体如下: 工具类: package com.fz.common.util; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; imp

  • 备份文件并上传至FTP服务器的bat代码

    定时备份文件并FTP上传至备份服务器 复制代码 代码如下: @echo offcolor 0ftitle 定时备份文件并FTP上传至备份服务器 rem 要备份的文件夹echo:set /p bak_webFile=        请将要上传的文件(夹)拖到此处= rem 当前日期(格式YYYYMMDD)set bak_date=%date:~0,4%%date:~5,2%%date:~8,2% rem ftp信息set bak_ftpServer=202.96.189.52set bak_ftp

  • Linux实现文件上传ftp服务器脚本代码

    工作期间,每次将文件上传至ftp服务器时,均需要手工输入ip.用户名.密码等,因此,考虑编写脚本完成文件的上传任务.具体的脚本sync.sh如下: #!/bin/bash source ~/.bashrc # 模拟进入ftp命令行模式,其中EOF表示退出标记符 ftp -niv <<- EOF # 根据ftp的ip地址与端口号,连接ftp服务器 open ip port # 输入用户名与密码 user userName password # 以bin模式进行传输,与ASCII模式有区别,使用b

  • Java通过FTP服务器上传下载文件的方法

    对于使用文件进行交换数据的应用来说,使用FTP 服务器是一个很不错的解决方案. 关于FileZilla Server服务器的详细搭建配置过程,详情请见FileZilla Server安装配置教程.之前有朋友说,上传大文件(几百M以上的文件)到FTP服务器时会重现无法重命名的问题,但本人亲测上传2G的文件到FileZilla Server都没有该问题,朋友们可以放心使用该代码. FavFTPUtil.Java package com.favccxx.favsoft.util; import jav

  • Shell脚本实现上传zip压缩文件到FTP服务器

    复制代码 代码如下: # /bin/bash # creator:lihuibin # date : 2014-03-10 16:45 # desc : upload file to ftp hosts="192.168.56.100" port=21 user=test pass=testpwd work_path="/var/www/cms" packname="publish" #hosts=$1 #port=$2 #user=$3 #pa

  • 详解Node.js一行命令上传本地文件到服务器

    现在存在的问题 每次打包完, 都要打开 FileZilla 一顿拖拽然后才能上传代码, 那就立马撸一个自动化脚本就完事了 publish-sftp Github 传送门(顺便来骗个Star) 以后一行命令上传本地文件到服务器啦 publish-sftp -c // 完事 安全性 项目组已经跑了大半年, 没出过幺蛾子, 可放心使用 实现 基于 ssh2-sftp-client 快速上手 install sudo npm i publish-sftp -g sudo npm link publish

  • 实例详解SpringBoot+nginx实现资源上传功能

    最近小编在学习使用nginx放置静态资源,例如图片.视频.css/js等,下面就来记录一下一波学习干货. 1.nginx安装及配置 小编使用的服务器是阿里云的轻量应用服务器,系统使用的是Ubuntu.注意记得开放 9090TCP端口,如果不使用 9090端口作为服务器端口也可不用. 安装 首先,获取安装包是必要的吧,这里提供一个nginx-1.11.3-ubuntu.tar.gz https://pan.baidu.com/s/1vvb41QkOJ4VqfyFckXBkjA (密码45wz) 小

  • 详解IOS开发中图片上传时两种图片压缩方式的比较

    IOS 图片上传时两种图片压缩方式的比较 上传图片不全面的想法:把图片保存到本地,然后把图片的路径上传到服务器,最后又由服务器把路径返回,这种方式不具有扩展性,如果用户换了手机,那么新手机的沙盒中就没有服务器返回的图片路径了,此时就无法获取之前已经上传了的头像了,在项目中明显的不可行. 上传图片的正确方式:上传头像到服务器一般是将图片NSData上传到服务器,服务器返回一个图片NSString地址,之后再将NSString的路径转为url并通过url请求去更新用户头像(用户头像此时更新的便是NS

  • 详解Android WebView的input上传照片的兼容问题

    问题 前几天接到的一个需求,是关于第三方理财产品的H5上传照片问题. 对方说他们的新的需求,需要接入方配合上传资产照片的需求,测试之后发现我们这边的app端,IOS端上传没有问题,而Android端则点击没有任何反应. 对方H5调用的方式是通过<input type='file' accept='image/*'/>的方式调用,本来以为这个问题很简单,就是app端没有设置相机权限,造成的点击无反应情况,而实际上加了之后发现,并非简单的权限问题. 解决问题 因为Android的版本碎片问题,很多

  • 详解Spring Boot中PATCH上传文件的问题

    Spring Boot中上传multipart/form-data文件只能是Post提交,而不针对PATCH,这个问题花了作者26个小时才解决这个问题,最后不得不调试Spring源代码来解决这个问题. 需求:在网页中构建一个表单,其中包含一个文本输入字段和一个用于文件上载的输入.很简单.这是表单: <form id="data" method="PATCH" action="/f" > <input type="tex

  • 详解如何将本地项目上传到Github的方法步骤(图文)

    很早之前就注册了Github,但对其使用一直懵懵懂懂,很不熟练.直到昨天做完百度前端技术学院的task,想把代码托管到Github上的时候发现自己对于Git的操作是如此之愚钝,所以今天决定把Git好好学习一遍,好让自己以后能更好地使用Github,主要还是通过Git教程 - 廖雪峰的官方网站来学习.简要步骤可以直接看最后的总结. Git的安装就不说了. 第一步:我们需要先创建一个本地的版本库(其实也就是一个文件夹). 你可以直接右击新建文件夹,也可以右击打开Git bash命令行窗口通过命令来创

  • Git版本控制服务器详解

    目录 一.Git 简介 1.Git 特点 2.版本控制器 3.Git 工作流程 4.Git 的几个核心概念 二.基于 Linux 部署 Git 服务器 1.Git 使用 2.验证 三.使用 GitHub 1.注册账号 2.在客户端上生成密钥对 3.导入公钥密钥到 GitHub 4.创建储存空间 5.将本地项目上传到 GitHub 6.查看 GitHub 文件 7.同步远程仓库的最新状态到本地仓库 一.Git 简介 Git 是一款开源的分布式版本控制系统,可以有效.高效的处理从很小到非常大的项目版

  • 详解如何热更新线上的Java服务器代码

    一.前言 1.热更新代码的场景 (1)当线上服务器出现问题时,有些时候现有的手段不足以发现问题所在,可能需要追加打印日志或者增加一些调试代码,如果我们去改代码重新部署,会破坏问题现场,可以通过热部署的手段来增加调试代码 (2)线上出现紧急bug,通过Review代码找到问题,修改好后打包部署的流程可能比较久,可以通过热部署代码及时解决问题 二.Arthas的使用 使用阿里巴巴开源的Java诊断工具---Arthas,他可以附着在我们的Java服务器进程上面,查看服务器状态,jvm状态等各种参数指

  • Android 通过webservice上传多张图片到指定服务器详解

    Android 通过webservice上传多张图片到指定服务器详解 当你浏览这个的时候相信你对webservice的基本应用已经有一定的了解了,若是还没有明白的小伙伴,可以看我前面写的文章点击打开链接,这几天在开发一款app,需要上传图片到指定服务器吧,但是我刚开始以为在网上面应该有这样的好文章的吧,结果我在网络上找了好多代码,在传递图片的过程中,遇到各种bug,真是国人的东西就是喜欢复制别人的,自己不动手检验一下代码的正确性,哎,我也是无语了,然后我决定花点时间来填补一下这个空缺,写了这一片

  • Springboot整合Netty实现RPC服务器详解流程

    目录 一.什么是RPC? 二.实现RPC需要解决那些问题? 1. 约定通信协议格式 RPC请求 RPC响应 2. 序列化方式 3. TCP粘包.拆包 4. 网络通信框架的选择 三.RPC服务端 四.RPC客户端 总结 一.什么是RPC? RPC(Remote Procedure Call)远程过程调用,是一种进程间的通信方式,其可以做到像调用本地方法那样调用位于远程的计算机的服务.其实现的原理过程如下: 本地的进程通过接口进行本地方法调用. RPC客户端将调用的接口名.接口方法.方法参数等信息利

随机推荐