一、基础知识:

1、ftp:file transfer protocal 及文件传输协,工作与应用层。

2、ftp协议的实现:

  服务器端实现软件:vsftpd,pureftpd,filezilla server

  客户端实现软件:ftp,lftp

3、数据传输格式:

  ASCII:ASCII格式传输

  binary:二进制文件传输格式

4、ftp传输连接类型:ftp客户端与服务器端通过命令建立连接后,并不适用命令连接通道传输数据,而是新建一个数据连接传输数据

  命令连接:传输指令

  数据连接:传输数据

5、ftp工作模式:主动模式和被动模式两种。

  主动模式:port模式,服务器监听于某一固定端口。服务器端主动向客户端发起连接请求。

  被动模式:PASV模式,服务器监端口不固定,客户端向服务器端发起连接请求。

  为什么要有两种工作模式?

    因为,客户端出于安全因素考虑,一般会禁用大于1024的端口,但是服务器并不知道客户端哪些端口处于禁用状态,所以主动模式难以生效。因此最好使用被动模式。

6、ftp用户类型

  匿名用户:所有的农名用户,一般映射为本地魔衣固定的系统用户(一般为用户ftp)。家目录为/var/ftp

  本地用户:又称为系统用户,UID一般0~999。存在于/etc/passwd文件中的所有用户

  虚拟用户:使用开了中间层(一般为PAM),如使用mysql数据库存储用户名和密码

    PAM:plugable authentication modules 插入式认证模块。

二、vsftpdf的安装

1、关闭防火墙:service iptables stop

2、关闭selinux:setenforce 0

3、 先用rpm -q vsftpd命令检查是否已经安装,若ftp没有安装,使用yum  -y  install vsftpd 安装

4、设置开机自启 :chkconfig  vsftpd on  。

5、启动vsftpd: service vsftpd  <start |stop|status|restart>

三、vsftpd配置

1、备份配置文件:cp  /etc/vsftpd/vsftpd.conf  /etc/vsftpd/vsftpd.conf.bak

1、写权限全局配置项:

write_enable=YES               ###是否对登录用户开启写权限。属全局性设置。默认NO。  

2、匿名用户配置

anonymous_enable=YES           ###设置是否允许匿名用户登录FTP服务器。默认为YES。所有匿名用户都会映射至某一固定系统用户,此用户一般问ftp,家目录是/var/ftp。
ftp_username=ftp ###定义匿名用户的账户名称,默认值为ftp。
no_anon_password=YES ###匿名用户登录时是否询问口令。设置为YES,则不询问。默认NO。
anon_world_readable_only=YES ###匿名用户是否允许下载可阅读的文档,默认为YES。
anon_upload_enable=YES ###是否允许匿名用户上传文件。前提是write_enable=YES时,该配置项才有效。而且匿名用户对相应的目录必须有写权限。默认为NO。
anon_mkdir_write_enable=YES ###是否允许匿名用户创建目录。前提是write_enable=YES时有效。且匿名用户对上层目录有写入的权限。默认为NO。
anon_other_write_enable=NO ###除去上传和建立目录的权限,其它写权限如删除和更名权限,依赖于次配置。默认值为NO。

2.1、修改匿名用户上传文件属主

# If you want, you can arrange for uploaded anonymous files to be owned by
# a different user. Note! Using "root" for uploaded files is not
# recommended!
chown_uploads=YES
###是否允许匿名用户上传文件,匿名用户上传文件默认属主为root。允许匿名用户上传文件除了  ###write_enable=YES外还需配置匿名用户对家目录(默认为/var/ftp)有写权限。  ####示例,我们将智图表格.txt文件上传到默认匿名用户家目录/var/ftp/下,可以看到文件属主为root

chown_username=test    ####指定匿名用户上传文件的属主。此处设置为test
###示例,匿名登录FTP然后我们将智图.xls表格上传.可以看到上传后的文件属主就是我们指定的test

此处有个问题:当匿名用户对默认家目录/var/ftp有写权限,而且
chown_uploads=YES,或
chown_username=test 同时使用时会限制匿名用户登录。本次示例是通过先启动服务,匿名登录服务器后再赋予写权限后上传成功的。本人没有研究明白问题所在,希望高人指点。

3、访问控制

(1)基于IP
tcp_wrappers=YES:用来设置vsftpd服务器是否与tcp wrapper相结合,进行主机的访问控制。设置为YES时,vsftpd服务器会检查/etc/hosts.allow和/etc /hosts.deny中的配置,通过两个我带你见来判断是否允许客户端访问该FTP服务器。类似于简易的防火墙。

示例:只允许192.168.121.1~192.168.121.254的用户访问ftp服务器,则可编辑/etc/hosts.allow文件中并添加以下内容:
vsftpd:192.168.121.0/255.255.255.0 :allow
all:all:deny 

(2)基于用户
  ①记录在/etc/vsftpd/ftpusers中的用户不允许登录ftp,文件中默认有一些系统用户不允许登录如root。  

[root@localhost vsftpd]# more ftpusers
# Users that are not allowed to login via ftp
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody

  ②指令控制 

  userlist_enable=YES  :控制是否开启由userlist_file=/PATH控制的ftp访问控制文件(默认为/etc/vsftpd/user_list)。

  userlist_file=/etc/vsftpd/user_list   :文件访问控制文件路径

  userlist_deny=YES:代表userlist_file=/PATH指定文件为黑名单,即文件记录所有用户都不允许登录。默认为YES,即黑名单。

  userlist_deny=NO:代表userlist_file=/PATH指定文件为白名单,即只有文件记录用才能登录ftp。

root@localhost vsftpd]# more user_list
# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody

  

  

4、本地用户配置

注意,其他用户不能对/etc/vsftpd/下的三个文件有执行权限,否则不能登录FTP

local_enable=YES               ###是否允许非匿名用户,如本地用户(/etc/passwd中的用户)登录FTP服务器。所有非匿名用户的生效都依赖于此配置。默认为NO。
local_mask=022        ###本地用户上传文件的权限掩码

注意在/etc/vsftpd/ftpusers 中记录的本地用户不允许登录ftp。此配置文件默认包含以下用户。当然本地用户能否登录还与其他配置有关如userlist_enable。

  userlist_enable=YES  :控制是否开启由userlist_file=/PATH控制的ftp访问控制文件(默认为/etc/vsftpd/user_list).

  userlist_deny=YES:代表userlist_file=/PATH指定文件为黑名单,即文件记录所有用户都不允许登录。默认为YES,即黑名单。

  userlist_deny=NO:代表userlist_file=/PATH指定文件为白名单,即只有文件记录用才能登录ftp。

  

示例:要想让root用户能登录系统需要以下配置

  local_enable=YES

  编辑ftpusers,将root用户删除或者注释掉

  userlist_enable=YES 时,若userlist_deny=YES。要编辑userlist_file指向的文件,在黑名单中删除或注释掉root

             ,若userlist_deny=NO。要编辑userlist_file指向的文件,在白名单中添加root 

5、欢迎信息配置

①用户登录成功后欢迎消息设定

# You may fully customise the login banner string:
#ftpd_banner=Welcome to blah FTP service. ###可以自己定制登录横幅字符串,即自己定制一个欢迎登录成功用户的信息
ftpd_banner=Warning:this is my page.
banner_file=/PATH/TO/FILE    ###若欢迎信息较多可以将其写入到某以文件中。


②有时候我们会在用户切换至某一目录时,设置目录消息,用来提醒用户,不要轻易做删除操作等信息。此时就可以使用目录消息设定了。
# Activate directory messages - messages given to remote users when they
# go into a certain directory.
dirmessage_enable=YES
####开启时,用户切换至指定目录后,vsftpd会查看目标目录下的.message(没有时要新建)文件,并将其内容显示给用户。,当然也可使用message_file命令指定文件
,将文件内容显示给用户。此处我们设置.message文件内容为this is a test information.
message_file=/PATH/TO/FILE


6、禁锢用户于自己的家目录。例如test用户登录ftp后默认在其指定的家目录(本人配置的是/home/test),但是默认test用户是可以切换到其他目录的。这样很不安全。

# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
#chroot_local_user=YES
###是否禁锢所有本地用户于自己的家目录中。设置为YES是代表禁锢所有本地用户。
#chroot_list_enable=YES
####有时候我们不想禁锢所有用户,只是禁锢其中的某些用户,此时可以使用此配置项。设置为YES时,开启一个(chroot_list_file)指向的文件。文件中用户不允许cd到本地系统其他目录。  
# (default follows) 
#chroot_list_file=/etc/vsftpd/chroot_list ####默认文件为/etc/vsftpd/chroot_list

示例:chroot_local_user与chroot_list_enable都为YES时,会有什么情况?

我们准备两个用户test和wxx

  ①配置
  chroot_local_user=YES
  chroot_list_enable=YES
  chroot_list_file=/etc/vsftpd/chroot_list
  ②在chroot_list文件中添加用户test
  ③启动ftp服务,结果如下图。即,test用户使用pwd显示的在家目录/home/test,可以cd到其他目录;wxx用户显示在/下,实际是在/home/test,无法cd到其他目录。

④得出结论是都为YES时,只有在chroot_list中的目录才能cd到其他目录,此时chroot_list其实是一个白名单,即允许哪些用户切换目录。具体有以下几种情况


1)当chroot_list_enable=YES,chroot_local_user=YES时,在/etc/vsftpd/chroot_list文件中列出的用户,可以cd到其他目录;未在文件中列出的用户,不能cd到其他目录。
2)当chroot_list_enable=YES,chroot_local_user=NO时,在/etc/vsftpd/chroot_list文件中列出的用户,不能cd到其他目录;未在文件中列出的用户,可以cd到其他目录。
3)当chroot_list_enable=NO,chroot_local_user=YES时,所有用户均不能cd到其他目录。
4)当chroot_list_enable=NO,chroot_local_user=NO时,所有用户均可cd换到其他目录。
5)当用户不允许切换到上级目录时,登录后FTP站点的使用pwd命令显示在/下,其实还是在家目录下。

7、日志文件

# The target log file can be vsftpd_log_file or xferlog_file.
# This depends on setting xferlog_std_format parameter
xferlog_enable=YES ###是否启用上传或下载日志记录
# Switches between logging into vsftpd_log_file and xferlog_file files.
# NO writes to vsftpd_log_file, YES to xferlog_file
xferlog_std_format=YES
###控制是使用vsftpd_log_file 日志文件,还是使用xferlog_file日志文件
NO代表使用vsftpd_log_file;YES代表使用xferlog_file。
# The name of log file when xferlog_enable=YES and xferlog_std_format=YES
# WARNING - changing this filename affects /etc/logrotate.d/vsftpd.log
#xferlog_file=/var/log/xferlog
vsftpd_log_file=/var/log/vsftpd.log

示例:两种文件格式

 

  

8、FTP监听端口

# When "listen" directive is enabled, vsftpd runs in standalone mode and
# listens on IPv4 sockets. This directive cannot be used in conjunction
# with the listen_ipv6 directive.
listen=YES ####YES代表ftp工作于standalone模式。
listen_port=21 ###ftp命令连接监听端口,默认为21
listen_address=*.*.*.* ###设置FTP在哪个IP上监听用户的连接请求。一般注释掉代表监听于本机所有IP,如127.0.0.1

9、FTP并发连接数

max_clients=0 :设置vsftpd允许的最大并发连接数,默认为0,代表不受限制。若设置为200时,则同时允许有200个连接,超出的将拒绝客户端连接请求。只有在standalone模式下有效

max_per_ip=0:设置每个IP地址可以FTP服务器同时建立连接的最大数目。默认为0,代表不受限制。建议设置一个较小值,防止同一个用户建立太多的连接。只有在以standalone模式运行时才有效。

10、会话超时时长

idle_session_timeout:空闲连接超时时长,服务于客户端建立了解后,若在指定时间内在没有互相发送任何指令则自动断开连接。

connect_timeout=60:port模式下

data_connection_timeout=300:数据传输超时时长。

11、PASV模式下端口配置

pasv_enable=YES:  若设置为YES,则启用PASV工作模式;若设置为NO,启用PORT模式。默认为YES,即使用PASV模式。

pasv_max_port=0:PASV模式下,数据连接端口最大值,默认值为0,表示任意端口。

pasv_mim_port=0:PASV模式下,数据连接端口最小值 ,默认值为0,表示任意端口。       
12、传输速率 

anon_max_rate=0:设置匿名用户最大传输速度,单位为b/s。0为默认值代表不受速度限制。
local_max_rate=0 : 设置本地用户最大传输速度。默认为0。

 

示例:一个最简单的FTP配置示例

要求:1、不允许匿名用户登录,只允许本地用户中的指定用户登录。

   2、该用户有读写权限。 

    3、禁锢用户与自己家目录

   4、工作于被动模式

   5、本地用户名为zxy家目录是/tmp/zxy

第一步配置文件相关

①保持/etc/vsftpd/vsftpd.conf文件其他内容默认,更改一下配置

  anonymous_enable=NO

②添加以下指令

  pasv_enable=YES

  pasv_min_port=10000

  pasv_max_port=11000

  userlist_deny=NO

  chroot_local_user=YES

第二步添加用户指定家目录为/tmp/zxy 

  useradd -m /tmp/zxy zxy

  passwd zxy

第三步编辑/etc/vsftpd/user_list

  删除所有已存在用户,添加zxy用户

第四步重启服务

linux ftp配置及实操的更多相关文章

  1. 大数据学习笔记——Linux完整部署篇(实操部分)

    Linux环境搭建完整操作流程(包含mysql的安装步骤) 从现在开始,就正式进入到大数据学习的前置工作了,即Linux的学习以及安装,作为运行大数据框架的基础环境,Linux操作系统的重要性自然不言 ...

  2. 【Linux】php7.2.8 + xdebug + composer + php代码覆盖率 + jenkins配置 (实操记录,亲测可用)

        [一.linux安装php 7.2.8] 1.wget http://nginx.org/download/nginx-1.9.9.tar.gz              # nginx可不安 ...

  3. linux FTP配置详解

    一.vsftpd说明: LINUX下实现FTP服务的软件很多,最常见的有vsftpd,Wu-ftpd和Proftp等.Red Hat Enterprise Linux中默认安装的是vsftpd. 访问 ...

  4. Linux FTP配置

    Linux下实现ftp的软件有很多,最常见的有vsftpd,Wu-ftpd和proftp等.访问ftp服务器时需要验证,只有经过了ftp服务器的验证用户才能访问和传输文件.这里我们用vsftpd,vs ...

  5. Redhat Linux FTP配置

    文件传输协议(FTP:FileTransfer Protocol)使得主机间可以共享文件. FTP 使用 TCP 生成一个虚拟连接用于控制信息,然后再生成一个单独的 TCP 连接用于数据传输.控制连接 ...

  6. ALPS TCP新建配置——网络测试仪实操

    本文主要介绍如何在ALPS平台上Step-By-Step配置TCP新建. 一.TCP新建介绍 TCP新建速率是防火墙等设备的一个重要指标,它用来评估防火墙等设备每秒能够处理的TCP创建的速率. 信而泰 ...

  7. Internet/Custom路由配置——网络测试仪实操

    一.测试说明以及功能原理 本文主要介绍Internet/Custom路由配置方法以及实验: ◆作用:可以通过此功能模拟注入不同百分比掩码的路由 ◆特点:只针对路由协议(目前RIP协议不支持,因为RIP ...

  8. (二)Linux实操之——网络配置、进程管理、服务管理、组管理、YUM

    接上段   (一)Linux实操之——权限.任务调度.磁盘分区 4.网络配置 4.1 NAT模式的网络配置 目前我们采用的网络配置是NAT模式. windows下cmd通过 ipconfig 命令可以 ...

  9. Linux+Nginx+Supervisor部署ASP.NET Core实操手册

    一.课程介绍 在上一节课程<ASP.NET Core托管和部署Linux实操演练手册>中我们学过net core的部署方式多样性和灵活性.我们通过远程工具输入dotnet 程序集名称.dl ...

随机推荐

  1. Java集合框架个人学习笔记

    从网上粘贴的结构图 Collection ├List │├LinkedList │├ArrayList │└Vector(了解,已过时) │ └Stack └Set    Map ├Hashtable ...

  2. vue表单和组件使用

    表单: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title ...

  3. seq2seq+attention解读

    1什么是注意力机制? Attention是一种用于提升Encoder + Decoder模型的效果的机制. 2.Attention Mechanism原理 要介绍Attention Mechanism ...

  4. 【xinsir】分享一个查找文件的脚手架

    program.command('find <name>').action(name => { if (name) { inquirer .prompt([ { type: 'inp ...

  5. post方式实现导出/下载文件

    项目需求: 前端需要传入过多的参数给后端,get地址栏不行,只能接受post方式去导出数据 1.get的下载方式 通常下载方式如下: let url = xxxx.action?a=xx&b= ...

  6. 洛谷P3121 【[USACO15FEB]审查(黄金)Censoring (Gold)】

    双栈+AC自动机 这题其实跟一道KMP算法的题有一些渊源,它就是这道题的简单板. Clear: 给你两个串A,B,每次在B串中从左到右找串A,并将该子串删除,直到找不到为止,问你能删几次. 样例输入: ...

  7. TCP/IP协议第一卷第一章

    1.链路层 链路层有时也称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡.它们一起处理与电缆(或其他任何传输媒介)的物理接口细节.把链路层地址和网络层地址联系起来 ...

  8. [考试反思]1024csp-s模拟测试86:消耗

    %%%两个没素质的和一个萌两小时AK 最近貌似总是可以比较快速的拿下T1,然后T2打到考试结束... T1是套路题没什么好说的. T2是一个比较蠢的博弈题,我花了很长时间干各种乱七八糟的事 什么打表啊 ...

  9. jmeter-手机号验证注册登录

    1.测试计划->线程组 2.首先获取需要注册的手机号,获取手机号的方式如下 (1)使用配置元件导入需要注册的手机 ·右键线程组-->配置元件-->CSV数据文件设置,如图: (2)使 ...

  10. Android Drawable 简析

    Drawable 是开发中经常用到的一个概念,我们经常用它去设置 View 的背景,背景可以一个颜色值,也可以是一张资源图片,还可以是一个自定义的 Drawable等等.这篇文章就简单说下 Drawa ...