热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux下FTP服务器是配置及其应用

一.FTP简介:Ftp:filetransferprotocol(文件传输协议)是一个用于在两台或者多台不同的操作系统中传输文件的协议,从FPT的诞生至今已经40年了。今年是它的40年纪念。所以它理所当然的成为了这个世界上最古老的协议,没有之一。二.FTP工作原理FTP的

一.FTP简介:

Ftp: file transfer protocol (文件传输协议)是一个用于在两台或者多台不同的操作系统中传输文件的协议,从FPT的诞生至今已经40年了。今年是它的40年纪念。所以它理所当然的成为了这个世界上最古老的协议,没有之一。 

二.FTP工作原理

FTP的工作基于TCP协议     

我们最常见的也是最常用的端口:

21号端口:是实现命令控制的。(当我们验证之后,我们执行一些比如put get ls等命令都是通过这个端口进行传输的)

20号端口:实现数据传输的。 

服务器有两种数据传输模式:

1.主动模式。

2.被动模式。        

主动模式和被动模式是针对服务器来说的,而到底在运作的过程中到底采用主动模式还是被动模式,则是由客户端来决定的。主动模式要求客户端和服务器端同时打开并且监听一个端口以创建连接。在这种情况下,客户端由于安装了防火墙会产生一些问题。所以,创立了被动模式。被动模式只要求服务器端产生一个监听相应端口的进程,这样就可以绕过客户端安装了防火墙的问题。 

主动模式的实现方式:

a.客户端打开一个随机的端口(端口号大于1024,在这里,我们称它为x),同时一个FTP进程连接至服务器的21号命令端口。此时,该tcp连接的来源地端口为客户端指定的随机端口x,目的地端口(远程端口)为服务器上的21号端口。

b.客户端开始监听端口(x+1),同时向服务器发送一个端口命令(通过服务器的21号命令端口),此命令告诉服务器客户端正在监听的端口号并且已准备好从此端口接收数据。这个端口就是我们所知的数据端口。

c.服务器打开20号源端口并且创建和客户端数据端口的连接。此时,来源地的端口为20,远程数据(目的地)端口为(x+1)。

d.客户端通过本地的数据端口创建一个和服务器20号端口的连接,然后向服务器发送一个应答,告诉服务器它已经创建好了一个连接。    

三.FTP的用户/服务器类型:

1)FTP服务器可以支持的用户类型主要有3大类。

                  1.匿名用户: anonymous 或者 ftp

                            一般使用的就是匿名用户。

                  2.本地用户:

                            账号名称、密码等信息保存在passwd、shadow文件中

                  3.虚拟用户:

                            使用独立的账号/密码数据文件。

                            可以是 db 数据库,也可以直接放在mysql 中,也可以放在一个文件上

        

2)常见的FTP服务器:

                  IIS Serv-U(在windows上比较常用的)

                  wu-ftpd(现存最古老的) 、

                  Proftpd (功能非常强大的ftp软件,根据你的需要,它可以制定)

                  pureftpd (功能强大的ftp软件)

                  vsftpd(RedHat上最常用的,轻量级的  只有140K,但是却非常安全)

 

3)常见的FTP客户端:

ftp命令 

lftp命令

gftp (linxu上图形化的ftp工具)

CuteFTP

FlashFTP(号称是最快的FTP)、

Ftps 会有通过ssl加密的机制。

 

四.vsftpd 服务器

我们以vsftpd服务器的构架,来讲解到底如何架构一个FTP服务器

首先要知道,我们vsftpd服务器就是用ftp这个用户的身份来运行的。而vsftpd又受到selinux的控制,所以要先把selinux关了。 

1.  安装vsftpd:

  1. yum install vsftpd  

          安装好之后,我们可以看到vsfptd这个命令被安装在了/usr/sbin目录中叫做vsftpd

           配置文件保存在/etc/vsftpd目录下

而它的所有文件保存在/var/ftp中 

2.如何配置vsftpd

首先进入/etc/vsftpd目录下

①  ftpusers 文件:

                            这个是一个定义文件里面定义着那些被禁止登陆的用户

②  user_list 文件:

                            这个文件中的列表提供一份FTP用户列表,定义了是否禁止用户登录,而这个文件是否能生效,取决于主配置文件中的设置

③  /etc/vsftpd.conf

主配置文件,详细的定义了所有的规则:

我们来看看常用的规则:

local_enable=YES 是否允许以本地用户身份访问

                                     本地用户默认通过ftp登陆默认在家目录下

                  write_enable 是否允许本地用户登录后可写?(只创建文件)

                  anon_mkdir_write_enable=YES 允许本地用户登录后可创建文件夹

                  anon_upload_enable=YES   是否允许匿名用户上传

                  chown_upload=YES  对匿名用户上传的文件进行一次自动的更改属主

                            chown_username=root   定义更改的属主

        

                  dirmessage_enable=YES 给当前目录增加一个欢迎信息

                            message_file=.message  你的欢迎文件的位置。

                  xferlog_enable=YES 是否开启日志信息

                           xferlog_file=/var/log/vsftpd.log配置日志文件在哪

        

                  idle_session_timeout=600 会话的响应时间

                  data_connection_timeout=120 数据响应时间

        

                  ftpd_banner=Welcome to bash FTPservice.  FTP的欢迎信息。

        

                  chroot_list_enable=YES 这项的作用是是否把用户锁在它的家目录中。

                            这个不开启的话是非常危险的。不对用户进行限制则会让一个用户各种乱跑,并且修改文件。当这个开启的时候,用户登录到这个目录中后,使用pwd命令则根本不显示你到底位于何方。

                  

                  chroot_list_file=/etc/vsftpd/chroot_list通过这个表,你可以定义到底限制哪些用户。

        

                  listen=YES  让FTP以独立进程运行在我们的机子上的。

                            如果改成 NO, 则让他以一个非独立的进程。则成为init的一个子进程。

        

                  pam_service_name=vsftpd 基于pub认证

                  userlist_enable=YES  是否开启列表的控制  user_list 文件:

                   userlist_deny=YES    他默认是拒绝的,只要你想进去,则会立刻拒绝。如果我们改成NO,则仅能这个列表中的用户访问。

lftp-u student 172.16.100.1 则可以进行验证     


推荐阅读
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 众筹商城与传统商城的区别及php众筹网站的程序源码
    本文介绍了众筹商城与传统商城的区别,包括所售产品和玩法不同以及运营方式不同。同时还提到了php众筹网站的程序源码和方维众筹的安装和环境问题。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文介绍了关于apache、phpmyadmin、mysql、php、emacs、path等知识点,以及如何搭建php环境。文章提供了详细的安装步骤和所需软件列表,希望能帮助读者解决与LAMP相关的技术问题。 ... [详细]
  • 本文介绍了在MacOS系统上安装MySQL的步骤,并详细说明了如何设置MySQL服务的开机启动和如何修改MySQL的密码。通过下载MySQL的macos版本并按照提示一步一步安装,在系统偏好设置中可以找到MySQL的图标进行设置。同时,还介绍了通过终端命令来修改MySQL的密码的具体操作步骤。 ... [详细]
  • 本文总结了Linux下多线程执行shell脚本的4种方法,包括切换到工作目录执行、使用绝对路径执行、直接使用bash或sh执行。同时介绍了为什么需要加上"./"来执行脚本的原因。 ... [详细]
author-avatar
贤慧201077
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有