博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Centos下搭建FTP服务器基础笔记
阅读量:4496 次
发布时间:2019-06-08

本文共 3155 字,大约阅读时间需要 10 分钟。

搭建的FTP基于Centos6.8,使用的FTP软件为小巧的vsFTP

1,FTP的工作流程与基本概念

FTP工作使用的数据包协议是可靠的TCP协议,它在工作逻辑上使用了两个TCP通道,一个用于传输操作命令,一个用于传输实际数据

其中按数据通道链接发起方的不同,FTP服务器的工作模式又可以分为被动模式(Passive)和主动模式(Active)

主动模式

  首先,这个模式要求服务器和客户端都各自拥有一个公共的IP地址.其次,客户端会先主动连接服务器的21端口,来建立命令通道,这个通道建立后客户端就可以通过这个

  连接来对服务器执行命令,查询文件名,列出目录,下载上传等都是通过这个通道来执行

  当上述命令通道建立完成后,如果客户端的操作需要涉及到数据流,此时服务器会通知客户端,客户端会打开一个端口等待服务器的连接,然后服务器将使用20端口来

  连接到客户端建立数据流通道,至此,一个完整的逻辑关系就建立了

被动模式

  同样,被动模式也需要客户端和服务器建立命令通道,这个过程和主动模式一样.不一样的是数据流通道的建立,由于一些原因,服务器并不能主动的连接到客户端,所以需要

  客户端去主动连接到服务器,此时客户端会先发出PASV的连接要求主动连接服务器建立数据流通道,等待服务器响应.

可以发现,主动模式和被动模式的区别就在于数据流通道的建立方式,如果是服务器连接到客户端,就是主动模式.反过来就是被动模式

2,FTP可登录的用户分类

匿名用户

  anonymous,通常在FTP中这种用户类型受到很多的限制,最多只能下载服务器提供的数据,并不能上传和修改文件建立目录,而且下载带宽也会受到限制,在服务器只是简单的提供共享

  时会使用到,而且也有它的好处就是简便,只要知道服务器地址即可

实体用户

  这是系统中已经存在的账号,权限通常比较大,可以上传,修改建立新文件等.而且如果不使用chroot进行限制那么这类用户就可以在整个文件系统中自由的遨游,这也是一种危险的行为,如果

  账户被第三方意外取得,那么整个文件系统将会陷入危险的境地,所以对这种实体用户要加以小心的使用.通常我们会使用adduser命令来为使用FTP功能特地建立一个账号,并且限制这类账号

  登录系统,同时使用chroot功能

3,我们使用vsftpd

   vsftpd是一个小巧且足够安全的ftp软件实现,先来介绍一下它的软件结构.

  /etc/vsftpd/vsftpd.conf    :这是vsftpd的主要配置文件,大多数的功能的开启关闭设置都是在这里边进行

  /etc/pam.d/vsftpd             :vsftpd启用PAM模块是的配置文件,主要用来作为用户身份认证和阻挡一些用户

  /etc/vsftpd/ftpuser    :当PAM模块启用时,写入这个文件的用户账户无法登陆FTP服务,文件内的格式为每行一个账户名

  /etc/vsftpd/user_list    :这是vsftpd的独立的账号访问是否放行功能的实现.和PAM的那个很像,它和PAM组成双保险,它的文件格式也是每行一个账户

  /usr/sbin/vsftp        :vsftpd的唯一一个执行文件

  /var/ftp          :当我们的FTP服务器启用匿名登录功能时,这是默认的匿名用户的根目录

 

4,/etc/vsftpd/vsftpd.conf配置文件说明

  vsftpd.conf的配置文件使用"赋值"格式的方式,每行一项,例如,name=value,等号两边不能有空格

  connect_from_port_20=YES(NO)  当服务器使用主动模式时,这个服务器端数据流通道的端口号

  listen_port=21            这是vsftpd默认使用的命令通道,当然也可以使用其它非常规的端口号

  listen=YES(NO)           值为YES时,表示vsftpd使用的是stand alone启动方式

  pasv_enable=YES(NO)      是否支持被动模式

  use_localtime=YES(NO)       vsftpd默认使用GMT时间,这个设置项设置是否使用本地时间

  write_enable=YES(NO)      是否允许实体用户进行文件上传的功能

  local_enable=YES(NO)      启用实体用户登录功能,这样在/etc/passwd内的账号就有机会登录ftp服务,当然还需要其它的设置项基于配合

  chroot_local_user=YES(NO)     是否将实体用户的作业范围限制在其主目录内

  userlist_enable=YES(NO)       是否启用vsftpd的访问阻挡来处理某些账户,当然也需要和下一个设置项进行配合

  userlist_deny=YES(NO)       这个设置项要在userlist_enable启用时才有意义,当本项设置为YES时,在user_list文件中的账户会被阻挡不能使用FTP服务,相反,当设置为NO时,只有此文件中的账户才可以使用FTP服务

  userlist_file=/etc/vsftpd/user_list  这就是上面中提到的user_list,当然也可以不使用默认的文件,改成自己想要的文件,文件格式依旧是每行一个账户名

  anonymous_enable=YES(NO)    是否启用匿名用户登录功能

  anon_world_readable_only=YES(NO)  是否启用匿名用户上传文件功能,不推荐使用NO选项

5,启动vsftpd服务

  Centos6.8中默认没有安装vsftpd,我们使用yum install vsftpd即可

  启动vsftpd服务:  service vsftpd start

  开机启动vsftp:    chkconfig vsftpd on

6,自定义vsftpd设置项

  我需要一个专门的账号来上传一些数据到服务器,这个账号仅仅可以使用FTP服务,而又不能登录系统,它的默认主目录为/home/jack,现在来一步步配置FTP服务器

  首先添加一个普通账号,并且不允许它登录系统:  useradd jack -d /home/jack -s /sbin/nologin

  然后设定一个适当的密码:  passwd jack 根据提示输入密码即可

  接着自定义vsftpd.conf文件项目值

  anonymous_enable=NO 关闭匿名用户登录

  local_enable=YES  启用本地用户功能

  write_enable=YES  允许本地用户上传文件

  chroot_local_user=YES  限制本地用户的作业范围在它的主目录

  userlist_enable=YES  启用vsftp自己的阻挡访问机制

  userlist_deny=NO  允许列表文件内的用户登录

  userlist_file=/etc/vsftpd/user_list  指定列表文件的位置

  use_localtime=YES  使用本地时间

  这些都设定好后,编辑文件/etc/vsftpd/user_list,添加一个新帐户jack

  最后重启vsftpd:  service vsftpd restart

  至此,一个简单的FTP就搭建好了

转载于:https://www.cnblogs.com/ifgo/p/7441764.html

你可能感兴趣的文章
利用DFS求联通块个数
查看>>
总结:
查看>>
spring boot 整合redis --sea 方式1
查看>>
Android Http请求方法汇总
查看>>
缓存技术PK:选择Memcached还是Redis?
查看>>
Laravel-lumen 配置JWT
查看>>
linux中tomcat内存溢出解决办法 分类: 测试 ...
查看>>
jQuery $.each用法
查看>>
推荐一款能写原创诗词的小程序
查看>>
Codeforces Round #496 (Div. 3) ABCDE1
查看>>
《程序是怎样跑起来的》第三章
查看>>
Jquery回到顶部效果
查看>>
开园第一笔
查看>>
Houdini 节点参数读取输入节点的数据列表
查看>>
初识Linq to Entity
查看>>
Linux vmstat命令实战详解
查看>>
FastDFS在centos上的安装配置与使用
查看>>
HDU 1709 The Balance
查看>>
2016/7/7 设置wamp2.5 mysql密码 重点是mysql版本
查看>>
简介几种负载均衡原理
查看>>