FTP服务系列一FTP的基础知识以及服务器端的配置

名称解析:Username --> UID,Group --> GID ,Service Name  --> port,hostname --> IP

Username -->UID :/etc/passwd

Hostname-->IP:DNS,/etc/hosts

Service Name -->Ports:/etc/services,MySQL:services,ports

只要有一种数据存储格式,能够保存对应的数据关系,都可以称为解析库

不同的解析库需要不同的解析方式

各个主机之间实现文件共享服务,工作在应用层的协议,

还有一种基于RPC(Remote Procedure Calling 远程过程调用)的协议有很大的不同,主要用于位于不同主机的两个进程利用二进制实现数据通信。

NFS(network file system)网络文件系统,基于RPC

Samba :CIFS/SMB,共享机制比较底层,实现能够让linux系统支持CIFS协议,实现linux与windows实现文件共享,使linux能够出现在windows的网上邻居中

对我们而言最为关键的是NFS与Samba,

接下来说明ftp服务

FTP:File Transfer Protocol文件传输协议,工作在应用层,主要考虑文件的传输过程,监听在TCP的21端口

有两个连接,只要客户端不断开,那么就长期处于连接状态,客户端请求时,如果问文件存在,那么要开始进行传输,那么要重新打开一个连接,进行传输

因此分为:控制连接(命令连接)与数据连接


控制连接监听在TCP的21号端口一直在线,而数据连接只有当数据进行传输的时候才会打开,按需打开,按需关闭


数据连接:分为两种情况,

主动模式:将服务器监听在tcp的20号端口

被动模式:因为主动模式存在客户端防火墙的问题,对于客户端来说不是一个合理的方式,当客户端请求传输数据的时候,服务器端不是直接将数据发送,而是仍然通过命令连接,给客户端发送一个能够开始传输数据的消息,都不连接20号端口,而是打开一个随机端口进行数据传输,服务器端再也不通过20号端口进行传输。因此在被动模式下,监听的端口随机。

防火墙拥有连接追踪的功能,能够自己判断连接之间的特征,识别请求响应连接彼此之间的关系,

客户端发起的状态为新请求状态,服务器的响应称为ESTABLISHED状态,而客户端请求之后,命令连接打开,数据连接才能启动,命令连接与数据连接之间的关系称为RELATED,相关联的连接。

传输模式有两种:文本(html),二进制方式(mp3.jpeg),遵循文件本身的模式,基于哪种模式的传输,要让服务器与客户端自行协商,否则会有致命的错误

ps:三种类型:结构化数据,半结构化数据,非结构化数据

支持文本命令可以使用telnet,可以使用C/S命令

get mget put mput cd ls 等等众多的命令,类似于本地文件的命令,由客户端进程将命令使用命令连接发送到服务端,由服务端的命令解析来执行操作,

完成数据连接基于套接字来完成,

实现ftp的服务器端程序:

wu-ftpd:华盛顿大学研究的ftpd

proftpd:功能强大的服务器,

vsftpd:Very Secure Ftp Daemon:精小,主要关注ftp的安全性(红帽系统提供)

pureftpd

filezilla新出现的开源服务程序:server&client

windows:Serv-U

实现ftp的客户端程序:

ftp

lftp(命令行格式)

图形格式:

gftpd(红帽)

windows:flasFXP,Cuteftp filezilla

vsftpd:

/etc/vsftpd:配置文件目录

/etc/init.d/vsftpd服务脚本

/isr/sbin/vsftpd:主程序

基于PAM实现用户认证

两个机制/etc/pam.d/*

/lib/security/*

/lib64/security/*

支持虚拟用户放在其他存储空间的,用来表示获取当前服务的用户凭证,不是系统账号,不能登录

不允许root用户以外的用户拥有写权限

vsftpd的安装及配置

1.安装ftp

#wget ftp://172.16.0.1/pub/gls/server.repo -O /etc/yum.repos.d/server.repo

#yum install vsftpd

ftp的用户:

匿名用户: -->对应的系统用户

虚拟用户:--> 对应的系统用户

系统用户

ftp访问的文件一定访问的是用户的家目录,/var/ftp

2.启动

3.测试

anonymous为匿名

这样我们的vsftpd已经开始简单的使用

查看他的配置文件

打开vsftpd.conf,任何的启动指令之前不能有空白字符,否则为语法错误

  1. anonymous_enable=YES/NO,是否允许匿名用户
  2. local_enable=YES/NO,是否允许所有用户
  3. write_enable=YES/NO定义系统用户能否上传文件
  4. anon_upload_enable=YES/NO定义匿名用户能否上传文件
  5. anon_mkdir_write_enable=YES/NO定义匿名用户能否创建目录
  6. dirmessage_enable=YES/NO切换目录时的显示信息
  7. anon_other_write_enable=YES/NO定义其他的写权限
  8. xferlog_enable=YES/NO定义是否打开传输日志
  9. xferlog_file定义日志目录
  10. chroot_list_enable=YES/NO定义是不是用一个文件来定义它特定用户所在他的家目录下
  11. chroot_list_file=打算在哪一个文件之中创建一个用户列表,所有的列表中的用户要被禁锢
  12. listen=YES,vsftpd是否工作为一个独立的守护进程

13. max_client_ip=#定义最多可以几个客户IP进行访问

安全通信方式

1.ftps:ftp+ssl/tls

2.sftp:Opessl,SubSystem,sftp(基于SSH实现)

实现1 的方式:创建一个CA,给ftpd发送一个证书,配置ftp的启用的指令:

接下开要安装ftp的客户端,客户端使用的程序可以是FileZilla,并且完成拥有认证功能的ftp服务还需配置相关的数据库等

欲知后事如何,请看下回分解。

时间: 2024-10-07 06:00:31

FTP服务系列一FTP的基础知识以及服务器端的配置的相关文章

考试备战系列--软考--02基础知识复习

这部分主要是计算机基础知识的概念介绍,相关系列文章如下所示. 考试备战系列--软考--01基础架构概念 考试备战系列--软考--02基础知识复习 考试备战系列--软考--03综合知识复习 考试备战系列--软考--04考题收集 考试备战系列--软考--05案例收集 考试备战系列--软考--06论文准备 操作系统时计算机系统的核心系统软件,其他软件均建立在其上,其分类包括:单用户操作系统和批处理操作系统.分时操作系统和实时操作系统.网络操作系统和分布式操作系统.嵌入式操作系统.其4大特征为并发性.共

oracle学习入门系列之二 数据库基础知识

oracle学习入门系列之二 数据库基础知识 本篇蛤蟆要梳理下那些被淡忘的数据库基础知识,也许根本就没被人记住过.不管是哪种情况,该记住的必须记住,记不住就把他记下来吧. 首先问几个问题如下: 数据库基础知识是什么? 好吧,蛤蟆直接吐后而不亡,看目录开始吧. 本人邮箱:[email protected] 微信公众号:HopToad 欢迎各界交流 1      基本概念 概念就是概念,大伙对这些名词不要死磕,但是对定义一定要理解,理解方能领悟,领悟方能运用自如后创新. 1.1      数据 数据

Ant学习-001-ant 基础知识及windows环境配置

一.Ant 概要基础知识 Apache Ant 是一个将软件编译.测试.部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发,用以构建应用,或结合其他开源测试工具例如 git.TestNG等搭建持续集成测试开发环境,从而高效.高质量的构建产品. Ant 有以下一些优点: 跨平台,可移植.Ant 是 Java 语言编写的,所以有很好的跨平台性和可移植性,无论是在 windows.Linux,还是 mac. 操作简单. Ant 是由一个内置任务和可选任务组成的,运行时需要一个构

FTP服务系列二完整FTP服务的搭建

一.安装所需要程序 1.事先安装好开发环境和mysql数据库; # yum -y install mysql-server mysql-devel # yum -y groupinstall "Development Tools" "Development Libraries" 2.安装pam_mysql-0.7RC1 # tar zxvf  pam_mysql-0.7RC1.tar.gz # cd  pam_mysql-0.7RC1 # ./configure -

iOS开发系列--C语言之基础知识

概览 当前移动开发的趋势已经势不可挡,这个系列希望浅谈一下个人对IOS开发的一些见解,这个IOS系列计划从几个角度去说IOS开发: C语言 OC基础 IOS开发(iphone/ipad) Swift 这么看下去还有大量的内容需要持续补充,但是今天我们从最基础的C语言开始,C语言部分我将分成几个章节去说,今天我们简单看一下C的一些基础知识,更高级的内容我将放到后面的文章中. 今天基础知识分为以下几点内容(注意:循环.条件语句在此不再赘述): Hello World 运行过程 数据类型 运算符 常用

设计微服务架构需要掌握的基础知识

基础知识: 领域驱动设计(DDD) Restful API设计以及深入理解HTTP协议 Restful API设计框架(JAX-RS(CXF,Jersey,RestEasy) . Spring MVC . Play) 部署微服务而设计的开发框架 Spring Boot Docker 微服务运维工具 服务自动负载均衡(Nginx.HAProxy) 日志监控ELK: Elasticsearch/Logstash/Kibana 基于Docker的部署和管理

Python学习系列(二)(基础知识)

Python基础语法 Python学习系列(一)(基础入门) 对于任何一门语言的学习,学语法是最枯燥无味的,但又不得不学,基础概念较繁琐,本文将不多涉及概念解释,用例子进行相关解析,适当与C语言对比,避免陷入语法的苦海.我认为初学者学习语法的目标是学会使用即可,关于对概念的深入理解,剖析,没有一定的知识积累是很难做到的. 学习Python,基本语法不是特别难,有了C的基本知识,理解比较容易.本文的主要内容是Python基础语法,学完后,能熟练使用就好.(开发环境依然是Python2.7,简单使用

LNMP 下安装 Pureftpd 开启FTP服务以及修改FTP端口

军哥的 LNMP 环境包 1.2 内置了 Pureftpd 的安装程序. 安装 Pureftpd 进入lnmp解压后的目录,执行:./pureftpd.sh 会显示如下图: 按提示输入当前MySQL的root密码,输入完成,回车确认,会提示如下信息: 这一步是设置FTP用户管理后台的登陆密码.输入完成回车确认 因为PHP管理后台需要连接数据库,所以会在MySQL上创建一个ftp用户,这里设置的就是这个用户的密码.输入完成,回车确认. 回车 显示 "Press any key to start i

LNMP下安装Pureftpd开启FTP服务以及修改FTP端口的方法

LNMP 环境包 1.2 内置了 Pureftpd 的安装程序. 安装 Pureftpd 进入lnmp解压后的目录,执行:./pureftpd.sh 会显示如下图: 按提示输入当前MySQL的root密码,输入完成,回车确认,会提示如下信息: 这一步是设置FTP用户管理后台的登陆密码.输入完成回车确认 因为PHP管理后台需要连接数据库,所以会在MySQL上创建一个ftp用户,这里设置的就是这个用户的密码.输入完成,回车确认. 回车 显示 ”Press any key to start insta