FTP是File Transfer Protocol(文件传输协议),就是专门用来传输文件的协议。简单地说,支持FTP协议的服务器就是FTP服务器。

PORT模式:

  首先客户端开启一个非特权端口N(大于1023)与服务端21端口建立控制连接,再开启一个非特权端口N+1并监控此端口,客户端通过命令连接发送PORT命令,命令中包含客户端监听的数据连接端口N+1,服务端收到PORT命令后,会用数据端口20连接客户端N+1端口。

  主动模式下,客户端监听的数据端口是随机端口,如果客户端建立了网络防火墙,server端的数据连接请求就会被屏蔽掉。

PASV模式

  被动模式下,客户端开启非特权端口N(大于1023)与服务器端21建立控制连接,再开启一个非特权端口N+1并监控此端口,客户端通过控制连接发送PAVS命令,服务器端收到给予响应,并打开一个数据端口(大于1023),客户端使用N+1端口与服务器的数据端口建立连接,服务器给予数据连接响应。

安装ftp

  #rpm -qa vsftpd                    //查看是否已经安装

  #yum install vsftpd -y            //安装

  #service vsftpd start             //开启服务

  #ftp 192.168.254.5(ip地址)   //登录

响应码

  也可以说是反馈码,每次进行操作都会反馈回一个数字开头的状态码。以下是各类代码信息:

  1xx:信息

  2xx:成功类代码

  3xx:提示需要进一步操作类代码

  4xx:客户端错误

  5xx:服务端错误

配置ftp

 配置文件/etc/vsftpd/vsftpd.conf

  连接数限制:

  max_clients=#                                    //FTP服务器最大接入客户端数

  max_per_ip=#                                    //每个ip最大连接数

  传输速率限制:

  anno_max_rate=#                              //匿名用户最大传输速率

 1、匿名用户:

  用户名:ftp;密码为空;登录目录:/var/ftp。

  anonymous_enable=YES                        //是否启用匿名用户

  anon_upload_enable=YES                     //上传

  anon_mkdir_write_enable=YES              //创建目录

  anon_other_write_enable=YES              //删除

  限制系统用户锁定在家目录:

 2、系统用户:

  用户名:本地用户;密码:用户密码;登录目录:用户家目录。

  local_enable=YES  //本地用户登录

  write_enable=YES  //上传、创建、删除

  chroot_local_user=YES  //限制所有

  chroot_list_enable=YES  //限制写入chroot_list文件中的用户

  chroot_list_file=/etc/vsftpd/chroot_list  //将需要限制用户写入此文件

  /etc/vsftpd/ftpusers  //文件中的系统用户将被禁止登录

 3、虚拟用户

  在/etc/vsftpd/下创建文本,奇数行为用户名,偶数行为密码;所有虚拟用户目录为一个系统家目录。

  ⑴、创建用户密码文本

    #vim /etc/vsftpd/vsftpd_list

    user1

    redhat1

    user2

    redhat2

  ⑵、生成虚拟用户认证db文件

    #db_load -T -t hash -f /etc/vsftpd/vsftpd_list /etc/vsftpd/vsftpd_list.db

  ⑶、编辑PAM文件

    方法一、vi /etc/pam.d/vsftpd 内容全部注释掉,增加以下两句

        auth required /lib(64)/security/pam_userdb.so db=/etc/vsftpd/vsftpd_list

        account required /lib(64)/security/pam_userdb.so db=/etc/vsftpd/vsftpd_list

    方法二、在/etc/pam.d/下创建新文件vsftpdauth(可自定义),将以上两句写入,然后编辑配置文件vsftpd.conf.

        pam_service_name=vsftpdauth              //改为你创建的文件名

  ⑷、创建一个系统用户,所有虚拟用户都被映射成此系统用户

    #useradd -d /home/vftp -s /sbin/nologin virtual    //用户名为virtual

    #chmod 700 /home/vftp                                    //设置权限

  ⑸、在配置文件中启用虚拟用户,增加以下参数:

    guest_enable=YES                    //启用虚拟用户

    guest_username=virtual            //虚拟用户

  ⑹、重启FTP服务并测试虚拟用户登录

    #service vsftpd restart

    #ftp 192.168.254.5

  ⑺、对不同虚拟用户设置不同权限

    ① 设置配置文件vsftpd.conf.

      添加用户配置文件目录设置:user_config_dir=/etc/vsftpd/vsftp_user_conf

    ② 创建用户配置文件目录

      #mkdir /etc/vsftpd/vsftp_user_conf

    ③ 以用户名创建相应用户的配置文件

      #touch /etc/vsftpd/vsftp_user_conf/user1

    ④ 编辑用户配置文件设置权限

      #vim /etc/vsftpd/vsftp_user_conf/user1

      local_root=/home/vftp/user1

      anon_world_readable_only=NO   //表示用户可以浏览FTP目录和下载文件

      anon_upload_enable=YES          //表示用户可以上传文件

      anon_mkdir_write_enable=YES   //表示用户有创建目录的权限

      anon_other_write_enable=YES   //表示用户具有文件改名和删除文件的权限

  虚拟用户配置已完成

linux系统下FTP服务器的安装和配置的更多相关文章

  1. redis在windows和Linux系统下的下载、安装、配置

    1.下载redis安装包 在redis的官网只有Linux系统下的安装包,微软的GitHub上有提供windows版本的redis安装包 redis中文网:http://www.redis.cn/ 微 ...

  2. Windows server 2008系统下FTP服务器的安装

    一.在 Windows 服务器上安装 FTP 服务 1. 在"开始"菜单上,单击"管理工具",然后单击"服务器管理器". 2. 在" ...

  3. 基于Linux系统下Apache服务器的安装部署

    企业中常用的web服务,用来提供http://(超文本传输协议). web系统是客户端/服务器模式的,所以应该有服务器和客户端里两个部分.常用的服务器程序时Apache,常用的客户端程序是浏览器.ww ...

  4. ubuntu16.04下ftp服务器的安装与配置

    由于要将本地程序上传至云服务器中,所以需要给云服务器端安装ftp服务器.记录一下ftp的安装过程,以便以后使用.服务器端所用系统为Ubuntu16.04. 1. 安装ftp服务器, apt-get i ...

  5. Linux学习总结(21)——CentOS7环境下FTP服务器的安装和配置

    1. 安装vsftpd #安装vsftpd yum install -y vsftpd #设置开机启动 systemctl enable vsftpd.service # 重启 service vsf ...

  6. 红帽(Red Hat Linux)下SVN服务器的安装与配置

    转:http://www.cnblogs.com/xd502djj/archive/2011/01/21/1941404.html 第一章 安装 1. 采用源文件编译安装.源文件共两个,为:subve ...

  7. Linux系统上Nginx服务器的安装与配置

    前言: 详细步骤移步菜鸟教程 一. 安装Nginx,注意虚拟机与宿主机的网络连通性 l  安装编译工具及库文件(zlib库. ssl) yum -y install make zlib zlib-de ...

  8. linux系统下svn服务器操作命令

    linux系统下svn服务器操作命令 .输出指定文件或URL的内容.  svncat 目标[@版本]…如果指定了版本,将从指定的版本开始查找. svncat -r PREV filename > ...

  9. Linux系统下(x64)安装jdk 1.6(jdk-6u45-linux-x64.bin)

    Linux系统下(x64)安装jdk 1.6(jdk-6u45-linux-x64.bin) 一,查看是否安装jdk: # rpm -qa | grep jdk 或者 #rpm -q jdk 或者 # ...

随机推荐

  1. semantic-ui 图片

    1.基础样式 方式一:因为图片是使用img标签,所以直接将class加载img标签中即可.不过要注意的是,class中要指定是ui image. 方式二:使用一个span或者div将img标签包裹,然 ...

  2. 解决jenkins运行磁盘满的问题

    解决jenkins运行磁盘满的问题 - ling811的专栏 - CSDN博客 https://blog.csdn.net/ling811/article/details/74991899 1.自动丢 ...

  3. asp.net mvc5 action多个参数

    需要完成http://site.com/user/add/1/2这样的url解析 使用action的参数直接获取数据的方式 Action声明如下 ) { ViewBag.clubID = id; ) ...

  4. C# 父子页面传值

    业务需求是:父页面点击“选择任务”按钮进入任务列表页.(项目进度周报) 父页面如下: 任务列表页: 选择某一个任务,点击“确定”后返回父页面所需数据. 父页面“选择任务” 按钮触发事件. /// &l ...

  5. ES7的新特性

    ES7的新特性 ES7 特性: 1.Array.prototype.includes2.Exponentiation Operator(求幂运算) 一,Array.prototype.includes ...

  6. Laravel5 创建自定义门面(Facade)

    门面为应用服务容器中的绑定类提供了一个“静态”接口.Laravel 内置了很多门面,你可能在不知道的情况下正在使用它们.Laravel 的门面作为服务容器中底层类的“静态代理”,相比于传统静态方法,在 ...

  7. [转帖]Kerberos和NTLM - SQL Server

    Kerberos和NTLM - SQL Server https://www.cnblogs.com/dreamer-fish/p/3458425.html 当我们使用Windows Authenti ...

  8. MyBatis映射文件2(不支持自增的数据库解决方案/参数处理[单参、多参、命名参数])

    针对Oracle不支持自增的解决方案 Oracle不支持自增,但是它使用序列来模拟自增,每次插入数据的主键是从序列中拿到的值,那么如何获取这个值呢? <insert id="addEm ...

  9. hadoop 管理命令dfsadmin

    hadoop 管理命令dfsadmin dfsadmin 命令用于管理HDFS集群,这些命令常用于管理员. 1. (Safemode)安全模式 动作 命令 把集群切换到安全模式 bin/hdfs df ...

  10. CDH 6.0.1 集群搭建 「After install」

    集群搭建完成之后其实还有很多配置工作要做,这里我列举一些我去做的一些. 首先是去把 zk 的角色重新分配一下,不知道是不是我在配置的时候遗漏了什么在启动之后就有报警说目前只能检查到一个节点.去将 zk ...