一、基本概念介绍

FTP(File Transfer Protocol)文件传输协议,用于控制文件的双向传输,同时也是一个应用程序,可以实现在主机间共享文件,它属于ISO网络结构中的应用层。

当启动FTP从远程计算机复制文件时,事实上启动了两个程序:一个是本地机上的FTP客户程序,它向FTP服务器提出复制文件的请求;另一个是启动在远程计算机上的FTP服务器程序,响应客户机的请求吧指定的文件传送到本地机中。

FTP是应用层的协议,基于传输层为用户服务,负责进行文件的传输。FTP服务一般运行在20和21两个端口。端口20用于在客户端和服务器之间传输数据流,端口21用于传输控制流,并且是命令通向FTP服务器的进口。

IP地址只能定位到具体的主机,但主机系统中运行着无数个进程,具体由哪个进程负责接收和处理数据则要涉及到端口(Socket接口技术),不同的服务采用不同的端口,例如Web服务采用80号端口,FTP采用21号端口,邮件服务器采用25号端口等

按协议类型分类端口:

1、TCP端口,即传输控制协议端口,需要在服务器和客户端之间建立连接,提供可靠的传输。常见的有FTP的21号端口、Telnet服务的23号端口、SMTP服务的25端口和HTTP服务的80端口。

2、UDP端口,即用户数据协议端口,无需再客户端和服务端之间建立连接,安全性不能得到保障。常见的有DNS服务的53端口、SNMP服务的161端口以及QQ使用的8000和4000端口。

二、FTP服务器工作原理

实现的目标:实现文件共享,同时向用户屏蔽不同主机中各种文件存储系统的细节,提供可靠和高效的数据传输,因此可用于使用不同操作系统的主机之间传输文件

FTP系统采用“客户端/服务器”(C/S)模型。在客户端与服务器端程序之间通过面向连接的TCP协议进行通信,一个FTP服务器进程可同时为多个客户进程提供服务。FTP服务器的进程由两大部分组成:一个主进程负责接收新的请求;另外有若干个从属进程,负责处理单个请求。

具体工作过程:

1、FTP客户端发出请求,系统动态为之分配一个端口X

2、若FTP服务器在端口21侦听到该请求,则在客户端的端口X和服务器的端口21之间建立起一个FTP会话连接

3、当需要传输数据时,FTP客户端再动态打开一个连接到FTP服务器端口20的第二个端口Y,数据传输完毕后这两个端口自动关闭

4、当FTP客户端断开与FTP服务器的连接时,客户端动态分配的端口将自动释放

FTP的传输方式

1、ASCII传输方式

2、二进制传输方式

FTP的工作方式

1、主动工作(PORT方式),要求客户端和服务器端同时打开并且监听一个端口以创建连接

工作步骤:

——  客户端打开一个随机的注册端口(端口号大于1024)X,同时客户端的一个FTP进程连接至服务器的21号命令端口

——  客户端开始监听端口Y,同时向服务器发送一个端口命令,告诉服务器客户端正在监听的端口号Y,并且准备从Y端口接收数据

——  服务器打开20号源端口建立和客户端数据端口的连接,此时源端口为20号端口,远程数据端口为Y

——  客户端通过本地数据端口建立一个和服务器20号端口的连接,然后向服务器发送一个应答表示已经建立好连接

2、被动方式(PASV方式),命令连接和数据连接都由客户端发起,以解决从服务器到客户端的数据端口的连接被防火墙过滤掉的问题

工作步骤:

——  客户端的命令端口与服务器的命令端口建立连接,并发送命令“PASV”

——  服务器返回命令"PORT Y,告诉客户端(服务器)用哪个端口侦听数据连接

——  客户端初始化一个从自己的数据端口到服务器端指定的数据端口Y的数据连接

——   服务器给客户端的数据端口返回一个"ACK"响应

匿名FTP服务

在这种设置下,用户不需要账号就可登录服务器。其本质是在提供服务的FTP服务器上建立一个公开账户(一般为anonymous),并赋予该账户访问公共目录的权限。需要登录FTP服务器时,无需事先申请用户账户,而是使用anonymous作为用户名,用自己的Email地址或用户ID作为口令即可登录

FTP主配置文件

#设置服务器是否以独立模式运行,若设置为NO则需受xinetd服务的管理控制

listen=NO

#

# This directive enables listening on IPv6 sockets. By default, listening

# on the IPv6 "any" address (::) will accept connections from both IPv6

# and IPv4 clients. It is not necessary to listen on *both* IPv4 and IPv6

# sockets. If you want that (perhaps because you want to listen on specific

# addresses) then you must run two copies of vsftpd with two configuration

# files.

listen_ipv6=YES

#

#是否允许匿名用户通过FTP登陆

anonymous_enable=NO

#

# 是否允许本地用户登陆,默认值为YES

local_enable=YES

#

# 是否允许访问的用户有写入的权限.

#write_enable=YES

#

# 设置本地用户上传文件的默认权限掩码值

#local_umask=022

#

# 是否允许匿名用户下载文件

#anon_upload_enable=YES

#

# 是否允许匿名用户有创建目录的权限

#anon_mkdir_write_enable=YES

#

# 是否显示目录说明文件

dirmessage_enable=YES

#

# 是否使用本地时间

use_localtime=YES

#

# 是否启用日志记录FTP

xferlog_enable=YES

#

是否确信端口传输来自20

connect_from_port_20=YES

#

# 允许使用一个不同的用户拥有匿名下载的文件,但不建议该用户为root.

# recommended!

#chown_uploads=YES

#chown_username=whoever

#

# 设置日志文件名及路径

#xferlog_file=/var/log/vsftpd.log

#

# 是否使用标准格式存储日志

#xferlog_std_format=YES

#

# 设置默认的断开不活跃session的时间

#idle_session_timeout=600

#

# 设置数据传输超时时间,现为数据连接空闲2分钟后断开

#data_connection_timeout=120

#

# 是否建议在您的系统上定义一个惟一的用户作为一个完全隔离的非特权用户使用.

#nopriv_user=ftpsecure

#

# Enable this and the server will recognise asynchronous ABOR requests. Not

# recommended for security (the code is non-trivial). Not enabling it,

# however, may confuse older FTP clients.

#async_abor_enable=YES

#

#是否使用ASCII格式上传和下载文档

#ascii_upload_enable=YES

#ascii_download_enable=YES

#

# 设置欢迎话语的字符串

ftpd_banner=Welcome to blah FTP service.

#

# 当使用者登陆时会显示此设定所在文件的内容,通常为欢迎话语

#banned_email_file=/etc/vsftpd.banned_emails

#

# 是否将所有用户锁定在主目录

#chroot_local_user=YES

#

# 是否启用锁定用户的名单

#chroot_local_user=YES

#chroot_list_enable=YES

# (default follows)

#chroot_list_file=/etc/vsftpd.chroot_list

#

#避免远程用户在大型计算机上造成过多的I/O网站

#ls_recurse_enable=YES

#

# Customization

#

# Some of vsftpd's settings don't fit the filesystem layout by

# default.

#

# This option should be the name of a directory which is empty. Also, the

# directory should not be writable by the ftp user. This directory is used

# as a secure chroot() jail at times vsftpd does not require filesystem

# access.

secure_chroot_dir=/var/run/vsftpd/empty

#

# This string is the name of the PAM service vsftpd will use.

pam_service_name=vsftpd

#

# This option specifies the location of the RSA certificate to use for SSL

# encrypted connections.

rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem

rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

ssl_enable=NO

#

# Uncomment this to indicate that vsftpd use a utf8 filesystem.

#utf8_filesystem=YES

三、服务器配置实例

设置一个FTP登陆用户uftp用于登陆FTP服务器

1、新建一个用于uftp登陆进入的目录

$  cd /home/uftp

$  vi welcome.txt

2、新建用户uftp,指定其主目录为/home/uftp,为其设置密码

$  useradd -d /home/uftp -s /bin/bash uftp

$  passwd uftp

3、删除掉pam.d中的vsftpd文件,以防影响登陆;设置uftp无法使用bash或其他shell登陆,也就只能通过ftp来登陆啦

$  rm /etc/pam.d/vsftpd

$  usermod -s /sbin/nologin uftp

4、设置FTP主配置文件

$  vi /etc/vsftpd.conf

这里给出我的部分基本配置

listen=NO

listen_ipv6=YES

anonymous_enable=NO

local_enable=YES

write_enable=YES

local_umask=022

dirmessage_enable=YES

use_localtime=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

ftpd_banner=Welcome to blah FTP service.

#将本地用户限制在其home目录下

chroot_local_user=YES

allow_writeable_chroot=YES

#允许读取被限制用户列表,且被限制用户在vsftpd.chroot_list文件中列出

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd.chroot_list

utf8_filesystem=YES

#允许读取被允许登陆用户列表,且被允许用户在vsftpd.user_list文件中列出

userlist_enable=YES

userlist_deny=NO

userlist_file=/etc/vsftpd.user_list

5、新建限制用户列表文件和允许用户列表文件并编辑。因为我没有要限制的用户故vsftpd.chroot_list文件内容为空,而vsftpd.user_list文件中则加入uftp和本地用户

$  vi /etc/vsftpd.chroot_list

$  vi /etc/vsftpd.user_list

6、重启FTP服务

$  /etc/init.d/vsftpd restart

7、查看本机IP地址

$  ifconfig

8、在浏览器中输入ftp://IP地址访问,输入uftp用户名和密码即可访问

9、本机访问输入以下命令,并输入本机用户名和密码

$  ftp localhost

如果新建一个用户并将其加入vsftpd.chroot_list中,可以测试发现用该账号和密码登陆FTP时会提示被限制登陆

ftp服务器app配置文件,Ubuntu FTP服务器配置与应用相关推荐

  1. Ubuntu Server搭建FTP服务器(2) --本地用户FTP服务器架设

    Ubuntu Server搭建FTP服务器(2) --本地用户FTP服务器架设 参考:ubuntu中文wiki百科,网址:wiki.ubuntu.org.cn 环境:Ubuntu 9.04 Serve ...

  2. ftp服务器防火墙配置文件,H3C SecPath系列防火墙 配置指导(V7)(E9524_E9333)-5W301_基础配置指导_FTP和TFTP配置-新华三集团-H3C...

    1.1  FTP简介 FTP(File Transfer Protocol,文件传输协议)用于在FTP服务器和FTP客户端之间传输文件,是IP网络上传输文件的通用协议. FTP协议使用TCP端口20和 ...

  3. linux计算服务器配置,Linux与云计算——第二阶段Linux服务器架设 第八章:FTP服务器架设—安装配置FTP服务和客户端配置...

    Linux与云计算--第二阶段Linux服务器架设 第八章:FTP服务器架设-安装配置FTP服务和客户端配置 安装Vsftpd [1]安装并配置Vsftpd. [root@server ~]# yum ...

  4. win7系统ftp服务器密码修改,win7 ftp服务器密码

    win7 ftp服务器密码 内容精选 换一换 本章主要介绍了如何使用AMH搭建网站.该指导具体操作以搭建DEDECMS系统为例.如果需要用IP访问,将IP地址填在域名栏里即可添加虚拟主机01本示例上传 ...

  5. Linux与云计算——第二阶段Linux服务器架设 第八章:FTP服务器架设—安装配置FTP服务和客户端配置...

    Linux与云计算--第二阶段Linux服务器架设 第八章:FTP服务器架设-安装配置FTP服务和客户端配置 安装Vsftpd [1] 安装并配置Vsftpd. [root@server ~]# yu ...

  6. iphone文件访问ftp服务器,ipad ftp服务器 iPhone/iPad访问FTP服务器设置步骤

    ipad ftp服务器 iPhone/iPad访问FTP服务器设置步骤 2013-02-27 15:35:39 脚本之家 有时候出门在外需要用到电脑中的文件,但是却没有携带电脑或者U盘,那么该怎么办呢 ...

  7. ftp服务器怎么用,ftp服务器怎么用,详细教程

    ftp服务器是什么,FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一.FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端.其中 ...

  8. ftp服务器vsftpd配置文件,最全面的vsftpd配置文件详解

    最详细的vsftpd配置文件,分享给大家. 注意: 使用匿名登入时,所登入的目录.默认值为/var/ftp.注意ftp目录不能是777的权限属性,即匿名用户的家目录不能有777的权限. 对于用户的访问 ...

  9. 通过http协议访问FTP服务器的搭建,ftp+nginx 图片服务器搭建之后使用http访问进行配置文件的修改

    一 ,搭建nginx 先安装nginx服务器,见我之前写的: nginx服务器搭建 二 ,搭建ftp 在安装vsftpd服务器, ftp服务器搭建 三.开始搭建Nginx图片服务器 1.效果 例如:图 ...

最新文章

  1. 安装RADOS gateway(CEPH对象存储)
  2. Java 3.基本数据类型
  3. 存储过程系列之调试存储过程 SQL Server 2005
  4. CentOS系统时间同步(NTP)
  5. matlab 曲线拟合求导,基于matlab曲线拟合的数据预测分析
  6. matplotlib在图像上方添加文字、标签
  7. SC15 供应商质量管理工程师(武汉)
  8. bzoj3007 解救小云公主
  9. python中pip安装报错的一些总结
  10. pod容器发生OOM错误(by quqi99)
  11. win8.1 update1使用初体验
  12. Windows C盘清理方法
  13. intent.setComponent()方法
  14. Android--设置App的启动页面
  15. 用jackson实现json和字符串直接的转换
  16. 分立器件动态参数测试系统|半导体性能测试系统NSAT-2000
  17. 【得物技术】浅尝UI自动化之Airtest实践
  18. 阿里P8架构师分享:我是如和从月薪8K成长到年薪50W的架构师?
  19. 哈尔滨工程大学自动化学院(四系)复试专业课抽题测试常问知识点!
  20. Java代码农夫与牛,农夫和牛的故事!(销售必看)

热门文章

  1. Ubuntu 12.04下NFS安装配置
  2. 除了富二代 据说这9种人最有富豪潜质
  3. [译]GotW #1: Variable Initialization 续
  4. mysql 从中英文混合串中截取字符
  5. 不要版面费的期刊名称
  6. WSL2之gdb通过qemu调试ARM汇编(五)
  7. Ubuntu18.04上AS运行模拟器报错:/dev/kvm device: permission denied
  8. Android APK系列3-------使用platform密钥来给apk文件签名
  9. Dotnet运行之控制台
  10. 一个很好的电磁学科普视频里融入自我的意识流“翻译”