欢迎来到千汐

 

博客名称:千秋云染
博客网址:https://www.cnblogs.com/skyrainmom

寄语:在混乱不堪的世界里你只管前行,时间替会证明一切

world cookie

Hello,World!

 

FTP服务器:

文件传输协议(File Transfer Protocol,FTP)是用于在网络上进行文件传输的协议。如果用户需要将文件从本机发送到另一台计算机,可以使用FTP上传操作;反之,用户可以使用FTP从其他计算机将文件下载到本机。

FTP不挑操作系统,可支持Windows与Linux,且两大操作系统的FTP服务端口号均为21,客户端端口随机,但PORT >1024。

FTP采用C/S架构,用户通过FTP客户端程序连接到FTP服务器,实现文件传输

1,控制连接(存在传输端口)

FTP客户端希望与FTP服务器建立上传,下载的数据时,它首先向FTP服务器的TCP21号端口发起连接的请求,FTP服务器接受来自FTP客户端的请求,完成控制连接的建立。

2,数据连接(存在数据端口)

控制连接建立后,可以开始传输文件,传输文件数据的连接称为数据连接,数据连接使用TCP20号端口。

注意:数据连接存在的时间段内,控制连接也同时存在,一旦控制连接断开,数据连接也会自动关闭。

FTP的数据传输模式:

1,主动模式(POST)

在主动模式下,客户端随机打开一个端口号大于1024的N号端口,向服务端的21号端口发起连接,并向服务器发出“PORT N+1”命令,同时开放N+1号端口进行监听。服务器接受到该命令后,默认使用服务器的20号端口主动与客户端指定的N+1号端口建立数据连接,进行数据传输。

2,被动模式(PASV)

在被动模式下,客户端随机打开两个端口,分别是端口号大于1024的N号端口和N+1号端口,然后使用N号端口向服务器的21号端口发起连接,并向服务器发出“PASV”命令,通知服务器使用被动模式。服务器收到命令后,开放一个端口号大于1024的P端口进行监听,然后用“PORT P”命令通知客户端自己的数据端口是P。客户端收到指令后,再通过N+1号端口与服务器的P端口建立数据连接,然后进行数据传输

两种模式的不同点及优缺点:

1,主动模式的FTP的控制方向与数据连接方向相反,客户端向服务器建立控制连接,而服务器主动向客户端建立数据连接;被动模式下FTP的控制方向与数据连接方向相同,被动模式中控制连接与数据连接都由客户端发起,服务器只是被动地接受连接。

2,主动模式对于客户端的防火墙来说,数据连接是从外部到内部的连接,可能会被防火墙阻塞;被动模式解决了从服务器主动连接客户端的数据端口被防火墙阻塞的问题,在互联网上,客户端通常没有独立的公网IP地址,服务器主动连接客户端的难度太大,因此,FTP服务器大多采用被动模式。

主动传输:下载文件

被动传输:上传文件

FTP服务器用户:

1,匿名用户

如果FTP服务器提供匿名访问功能,则该类用户可以匿名访问服务器上的某些公开资源。使用匿名用户访问FTP服务器时,使用anonymous或ftp账户及任意口令登录(NULL也行)。匿名用户登录后,默认目录为匿名FTP服务器的根目录(不是系统根目录)。一般情况下,匿名FTP服务器只会提供下载功能,不提供上传功能或上传功能受到一定的限制。

2,本地用户(服务器上创建好的用户)

本地用户在FTP服务器上拥有shell登录用户。该类用户访问FTP服务器时,可以通过

自己的账户和口令授权登录。本地用户登录后,默认目录就是该用户自己的家目录,而且可以变更到其他目录(可以访问宿主目录和其他目录)。本地用户在FTP服务器中既可以下载内容,又可以上传内容。

3,虚拟用户

虚拟用户在FTP服务器上只能访问其主目录中的文件。不能访问其主目录以外的文件(只能访问宿主目录)。由于虚拟用户并非系统中真实存在的用户,仅供FTP服务器认证使用(仅用来进行口令认证),因此,FTP服务器通过这种方式来保障服务器上其他用户的安全。通常,虚拟用户在FTP服务器中即可以下载内容,又可以上传内容。

配置FTP服务:

FTP在Linux中即为vsftpd

1,实现服务器与客户端网路互通,进行Linux的网路配置环节,改网卡配置文件(切换root用户登录,root用户才有改的权限),实现Linux与Windowns互ping,二者ping通即可。

2,配置yum仓库

(1)挂载镜像:进入虚拟机设置连接镜像,终端输入以下命令:mount  /dev/cdrom /media(cdrom后面一定要加空格再加/media或/mnt均可)

(2)创建yum仓库:终端输入以下命令:vim /etc/yum.repo.d/local.repo

写local.repo文件参数:

[local(不唯一,与name后面跟的参数相同即可)]

name=local(上面中括号内对应参数名)

baseurl=file:///media(光盘挂载目录)

gpgcheck=0 (用于校验软件包来源的安全性,0为不校验,1为校验)

enabled=1 (用于设置是否启用该仓库源,0为不启用,1为启用)

(3)清空缓存:终端输入以下命令:yum clean all

(4)检索:终端输入以下命令:yum repolist

3,创建共享文件夹

终端输入以下命令:mkdir /opt/fipdir

4,安装vsftpd(FTP)服务的安装包

终端输入以下命令:yum -y install vsftpd

5,配置vsftpd.conf文件

终端输入以下命令:vim /etc/vsftpd/vsftpd.conf

(1)在第一个参数前加:anon_root=/opt/ftpdir  (等号两侧不允许有空格)

6,重启服务

(1)终端输入以下命令:systemctl restart vsftpd

(2)确认vsftpd服务正常运行,查看21号端口是否被监听

终端输入以下命令:netstat -ntlp | grep vsftpd

7,设置自启动

终端输入以下命令:systemctl enable vsftpd

8,关防火墙

终端输入以下命令:systemctl stop firewalld (注意:Windowns也要关防火墙)

9,关闭SELinux安全子系统

终端输入以下命令:setenforce 0 (或者vi /etc/selinux/config 出现SELINUX,改它的 参数为disabled)

10,测试

在客户端为Windowns上,在“我的电脑”中“此电脑”一栏输入:ftp://(Linux配置的 IP地址)

访问不成功的原因与注意事项:

1,对于文件夹权限不足,自vsftpd2.3.5版本开始,如果用户被限定在FTP根目录下,则不允许对自己的根目录具有写权限,但对子目录并不限制写入,所以一般只修改根目录下的子目录问修改权限,权限问题还在于子目录的所有者是否为ftp,如需更改所有者,则:chown ftp:ftp <子目录文件名>

2,防火墙,通常解决防火墙阻拦的方法是直接关闭,一劳永逸,但是如果在开启的状态下设置放行ftp规则也是可以的:firewall-cmd --permanent --add-service=ftp

3,配置文件/etc/vsftpd/vsftpd.conf里面没有开启对于用户的写权限,以匿名用户为例:

A)anon_upload_enabled=YES     允许匿名用户上传文件

B)anon_mkdir_write_enable=YES   允许匿名用户创建文件

C)anon_other_write_enable=YES    允许匿名用户有其他写权限,如删除和重命名文件

值得注意的一点是:A,B项只有当write_enable=YES时,才会生效

4,安全子系统,selinux非常不建议改它的上下文和bool值,一般是直接setenforce 0关掉,若不关,就只有执行setsebool -P ftp_full_access=on的命令,去改bool值

Linux搭建FTP服务的更多相关文章

  1. Linux——搭建FTP服务

    一.FTP基本概念: 1.FTP的作用: 实现文件系统的安全匿名访问:包括上传.下载和查看,可以应用于Windows和Linux系统 2.FTP的工作原理 server与client都支持ftp传输协 ...

  2. linux 搭建ftp服务并设置限制访问目录

    服务器有好几个项目,新项目前端外包,因为要微信授权登陆,所以前端没有办法本地调试,必须上次ftp在我们服务器上调试代码,当然要限制ftp访问的目录,否则整个服务器项目都能看到了. 安装vsftpd s ...

  3. linux 搭建ftp服务

    一. 安装ftp yum -y install vsftpd 二.配置 安装完之后在/etc/vsftpd/路径下会存在三个配置文件. vsftpd.conf: 主配置文件 ftpusers: 指定哪 ...

  4. Linux下搭建ftp服务

    Linux下ftp服务可以通过搭建vsftpd服务来实现,以CentOS为例,首先查看系统中是否安装了vsftpd,可以通过执行命令 rpm -qa | grep vsftpd 来查看是否安装相应的包 ...

  5. Linux(Centos7) 实例搭建 FTP 服务

    本文以 CentOS 7.2 64位系统为例,使用 vsftpd 作为 FTP 服务端,FileZilla 作为客户端.指导您如何在 Linux 云服务器上搭建 FTP 服务. 操作步骤 安装 vsf ...

  6. Linux:服务器(CentOS)搭建FTP服务

    Vsftpd(very secure FTP deamon)是众多Linux发行版中默认的FTP服务器.本文以CentOS 8(腾讯云)服务器为例,使用vsftpd搭建Linux云服务器的FTP服务器 ...

  7. Linux centosVMware xshell使用xftp传输文件、使用pure-ftpd搭建ftp服务

    一.xshell使用xftp传输文件 Ctrl+Alt+F 弹出 下载进入 填写任意名字,自己邮箱 进入邮箱点击网址就自动下载了 然后安装 二.使用pure-ftpd搭建ftp服务 yum insta ...

  8. 使用Linux搭建FTP服务器实现文件共享

    使用Linux搭建FTP服务器实现文件共享... ---------------- Linux中的文件共享:FTPVSFTPDVSFTPD虚拟用户 FTP可以用在Linux与Linux 和Window ...

  9. Linux 搭建FTP

    Linux 搭建FTP 步骤一:安装 vsftpd 1,运行以下命令安装 vsftpd. yum install -y vsftpd 出现下图表示安装成功. 2,打开etc/vsftpd cd /et ...

  10. 快速搭建FTP服务

    Linux下ftp服务可以通过搭建vsftpd服务来实现,以CentOS为例,首先查看系统中是否安装了vsftpd,可以通过执行命令 rpm -qa | grep vsftpd 来查看是否安装相应的包 ...

随机推荐

  1. java生态下的后端开发都有哪些技术栈?

    前言 我08年毕业,那时(2003-2010)C#还比较时髦的,大学跟着老师进修的,毕业后就从事winform窗体应用程序开发.慢慢的web网站兴起,就转到aps.net开发,再到后来就上了另一艘船( ...

  2. Javaweb知识复习--MyBatis+Mapper代理开发

    一种持久层框架,主要用于简化JDBC MyBatis应用步骤 1.在数据库里面创建一个表 2.创建模块,导入坐标 就是新建一个Maven项目,在pom.xml里面导入mybatis相应导包依赖代码: ...

  3. 做bad apple第一步:超级好用的you-get下载各大网站音频!!!!

    1 安装在cmd中输入pip3 install you-get 就行了 2 简单用法下载视频: 超级暴力,直接 you-get + "网站" 就没了,会下载到当前路径.我想下载到哪 ...

  4. springboot---多环境启动命令格式

    一.多环境命令启动 maven插件中首先clean,再package打包,(修改字符集为UTF-8) 使用cmd命令java -jar s(Tab键自动补全)  -spring.profiles.ac ...

  5. Kubernetes 的亲和性污点与容忍

    写在前面 我们在使用k8s过程中经常有这样的需求:我的k8s集群有多台服务器,配置不尽相同.我想把数据库部署到CPU.内存比较好的这几台机:我想把静态承载服务部署到有固态硬盘的机器等:而这些需求,就是 ...

  6. 从零开始学习Java系列教程之Windos下dos命令行使用详解前言

    在上一篇文章中,壹哥重点给大家讲解了Java开发和运行环境的安装及配置,分析了JDK与JRE的区别,而且还给大家提到了dos命令行.可能有些童鞋对dos命令的使用还不熟悉,其实我们在初学Java时,经 ...

  7. 简述SpringAOP的实现原理

    ​ Spring默认采取的动态代理机制实现AOP,当动态代理不可用时 (代理类无接口)会使用CGlib机制. Spring提供了两种方式来生成代理对象:JDKProxy和Cglib,具体使用哪种方式生 ...

  8. protobuf 详解

    protobuf protobuf概述 protobuf简介 Protobuf是Protocol Buffers的简称,它是Google公司开发的一种数据描述语言,是一种轻便高效的结构化数据存储格式, ...

  9. put、delete、post、get四种传参方式

    PUT: this.$http.put('url', { modifyTime:this.sizeForm.modifyTime, mqttRes:this.sizeForm.mqttRes, udp ...

  10. Flask框架使用蓝图划分目录、g对象、使用数据库连接池链接数据库

    目录 一.使用蓝图划分项目目录 1.蓝图的介绍 2.蓝图的使用 二.介绍flask框架的g对象 1. g对象是什么? 2. 使用代码再次解释g对象 三.使用数据库连接池链接数据库 1. 引入数据库连接 ...