版权声明:本文为博主原创文章。未经博主同意不得转载。 https://blog.csdn.net/linux_player_c/article/details/24869877
1.ftp简单介绍

(1)生活中的ftp

在互联网中我们须要传输数据,尤其是要传输大型数据。

有一个服务是要着重去介绍的:ftp。

事实上我们曾经非常早就接触它了。仅仅是大家可能不怎么关注,迅雷的基本模型就是ftp。只是是要高级的多。

事实上ftp应该是一种传输协议,之前它採用的是明文传输。假设在复杂的网络环境这样使用的话是非常危急的。

为了更安全的使用这个协议,如今我们要採取更安全的软件vsftpd来提供服务。

(2)ftp的功能介绍

1.它有着不同等级的用户身份:server本地用户。訪客;匿名用户。
2.命令记录与日志记录;
3.限制用户的家文件夹。

以上三点将会在我们接下来的实验中体现出来。总之是一个宗旨:我们的server功能尽量单一,给客户提供功能的同一时候要保证server的安全。

(3)ftp的工作流程

首先我们要知道ftp使用的协议是TCP协议。由于大型数据的传输是要建立起稳定的链接的。

ftp的server使用两个链接,各自是

命令管道和数据管道,这样做是非常正确的,由于即使是在计算机的操作系统上也是把代码段和数据段分开的,这会非常的高效。

命令管道port:21
传输数据port:20

2.ftpserver的搭建

(1)首先我们来看看ftpserver的安装包:

安装完了之后我们要清楚两个东西:

1.ftpserver的配置文件文件夹:  /etc/vsftpd
2.ftpserver的默认公布文件夹:     /var/ftp/pub    (这个是能够改动的)

(2)这次我们要体现ftpserver配置的安全意识,所以把selinux打开,改动配置文件/etc/sysconfig/selinux :
  

(3)我们直接开启服务看看能够提供什么功能:

另外一台客户机去訪问该server:

訪问是不被同意的。难道是我们server的防火墙没有刷:

再次訪问试试:

这次就能够登录了,遇到这样的问题通常是火墙没有刷掉。

关于server所开放的功能。我们要去看看vsftpd的配置文件vsftpd.conf。可是大家要注意的是:我们刚刚使用的是匿名用户登录。这事实上是不太好的。假设每一个人都能够去下载你的数据。带宽非常easy被耗尽。最关键的是太不安全。所以普通情况下我们是不会开放匿名用户登录的,这里是为了实验。


这个是配置文件的一部分,我们要配置一定的服务就是要设置这些keyword的值。比如12行的anonymous_enable = YES就是代表全部人都能够訪问ftp。

ftp的配置文件比較复杂(这个是列举网友总结下来的):

1.登录和对匿名用户的设置

write_enable=YES                                                //是否对登录用户开启写权限。

属全局性设置。默认NO
local_enable=YES                                                //是否同意本地用户登录FTPserver。默觉得NO
anonymous_enable=YES                                      //设置是否同意匿名用户登录FTPserver。

默觉得YES
ftp_username=ftp                                                 //定义匿名用户的账户名称,默认值为ftp。

no_anon_password=YES                                      //匿名用户登录时是否询问口令。设置为YES,则不询问。

默认NO
anon_world_readable_only=YES                            //匿名用户是否同意下载可阅读的文档,默觉得YES。

anon_upload_enable=YES                                    //是否同意匿名用户上传文件。

仅仅有在write_enable设置为YES。该配置项才有效。并且匿名用户对相应的文件夹必须有写限。
anon_mkdir_write_enable=YES                             //是否同意匿名用户创建文件夹。仅仅有在write_enable设置为    YES时有效。

且匿名用户对上层文件夹有写入的权限。
anon_other_write_enable=NO                                //若设置为YES。则匿名用户会被同意拥有多于上传和建立文件夹的权限,还会拥有删除和更名权限。

默认值为NO。

2.设置欢迎信息

用户登录FTPserver成功后。server可向登录用户输出预设置的欢迎信息。
ftpd_banner=Welcome to my FTP server. 
//该配置项用于设置比較简短的欢迎信息。

若欢迎信息较多,则可使用banner_file配置项。

banner_file=/etc/vsftpd/banner     
//设置用户登录时,将要显示输出的文件。该设置项将覆盖ftpd_banner的设置。

dirmessage_enable=YES         
//设置是否显示文件夹消息。若设置为YES,则当用户进入特定文件夹(比方/var/ftp/linux)时,将显示该文件夹中的由message_file配置项指定的文件(.message)中的内容。
message_file=.message          //设置文件夹消息文件。可将显示信息存入该文件。

该文件须要放在 相应的文件夹(比方/var/ftp/linux)下

3.设置用户登录后所在的文件夹

local_root=/var/ftp             
// 设置本地用户登录后所在的文件夹。

默认配置文件里没有设置该项。此时用户登录FTPserver后,所在的文件夹为该用户的主文件夹。对于root用户。则为/root文件夹。
anon_root=/var/ftp            
//设置匿名用户登录后所在的文件夹。若未指定,则默觉得/var/ftp文件夹。

4.控制用户是否同意切换到上级文件夹

在默认配置下,用户能够使用“cd..”命名切换到上级文件夹。比方,若用户登录后所在的文件夹为/var/ftp,则在“ftp>”命令行 下,执行“cd..”命令后。用户将切换到其上级文件夹/var。若继续执行该命令,则可进入Linux系统的根文件夹,从而能够对整个Linux的文件系统 进行操作。

若设置了write_enable=YES。则用户还可对根文件夹下的文件进行改写操作。会给系统带来极大的安全隐患,因此。必须防止用户切换到Linux的根文件夹。相关的配置项例如以下:
chroot_list_enable=YES                    
// 设置是否启用chroot_list_file配置项指定的用户列表文件。设置为YES则除了列在j/etc/vsftpd/chroot_list文件里的的帐号外,全部登录的用户都能够进入ftp根文件夹之外的文件夹。

默认NO
chroot_list_file=/etc/vsftpd/chroot_list         
// 用于指定用户列表文件。该文件用于控制哪些用户能够切换到FTP网站根文件夹的上级文件夹。
chroot_local_user=YES                    
// 用于指定用户列表文件里的用户。是否同意切换到上级文件夹。默认NO
注意:要对本地用户查看效果,需先设置local_root=/var/ftp

详细情况有下面几种:
1)当chroot_list_enable=YES,chroot_local_user=YES时,在/etc/vsftpd/chroot_list文件里列出的用户,能够切换到上级文件夹。未在文件里列出的用户,不能切换到网站根文件夹的上级文件夹。
2)当chroot_list_enable=YES,chroot_local_user=NO时。在/etc/vsftpd/chroot_list文件里列出的用户。不能切换到网站根文件夹的上级文件夹;未在文件里列出的用户。能够切换到上级文件夹。

3)当chroot_list_enable=NO,chroot_local_user=YES时。全部用户均不能切换到上级文件夹。
4)当chroot_list_enable=NO,chroot_local_user=NO时,全部用户均能够切换到上级文件夹。
5)当用户不同意切换到上级文件夹时,登录后FTP网站的根文件夹“/”是该FTP账户的主文件夹,即文件的系统的/var/ftp文件夹。

5.设置訪问控制

(1)设置同意或不同意訪问的主机(见TBP14)
tcp_wrappers=YES 用来设置vsftpdserver是否与tcp wrapper相结合。进行主机的訪问控制。默认设置为YES,vsftpdserver会检查/etc/hosts.allow和/etc /hosts.deny中的设置。以决定请求连接的主机是否同意訪问该FTPserver。这两个文件能够起到简易的防火墙功能。
比方,若要仅同意192.168.168.1~192.168.168.254的用户,能够訪问连接vsftpdserver,则可在/etc/hosts.allow文件里加入下面内容:
vsftpd:192.168.168.0/255.255.255.0 :allow
all:all:deny

(2)设置同意或不同意訪问的用户
对用户的訪问控制由/etc/vsftpd/user_list和/etc/vsftpd/ftpusers文件来控制实现。相关配置命令例如以下:
userlist_enable=YES     
// 决定/etc/vsftpd/user_list文件是否启用生效。YES则生效,NO不生效。

userlist_deny=YES       
// 决定/etc/vsftpd/user_list文件里的用户是同意訪问还是不同意訪问。若设置为YES,则/etc/vsftpd/user_list 文件里的用户将不同意訪问FTPserver。若设置为NO。则仅仅有vsftpd.user_list文件里的用户,才干訪问FTPserver。

6.设置訪问速度

anon_max_rate=0       
//设置匿名用户所能使用的最大传输速度。单位为b/s。若设置为0。则不受速度限制,此为默认值。
local_max_rate=0       
// 设置本地用户所能使用的最大传输速度。默觉得0。不受限制。

7.定义用户配置文件

在vsftpdserver中,不同用户还可使用不同的配置。这要通过用户配置文件来实现。

user_config_dir=/etc/vsftpd/userconf //用于设置用户配置文件所在的文件夹。

设 置了该配置项后,当用户登录FTPserver时,系统就会到/etc/vsftpd/userconf文件夹下读取与当前username同样的文件,并依据文件里的配置 命令。对当前用户进行更进一步的配置。比方,利用用户配置文件,可实现对不同用户进行訪问的速度进行控制,在各用户配置文件里,定义 local_max_rate配置,以决定该用户同意的訪问速度。

8.与连接相关的设置

listen=YES        
// 设置vsftpdserver是否以standalone模式执行。以standalone模式执行是一种较好的方式,此时listen必须设置为YES。此为 默认值。建议不要更改。非常多与server执行相关的配置命令。须要此执行模式才有效。

若设置为NO,则vsftpd不是以独立的服务执行。要受xinetd服 务的管理控制,功能上会受限制。

max_clients=0
//设置vsftpd同意的最大连接数,默觉得0,表示不受限制。

若设置为150时,则同一时候同意有150个连接,超出的将拒绝建立连接。仅仅有在以standalone模式执行时才有效。

max_per_ip=0
// 设置每一个IP地址同意与FTPserver同一时候建立连接的数目。默觉得0,不受限制。通常可对此配置进行设置,防止同一个用户建立太多的连接。仅仅有在以standalone模式执行时才有效。

listen_address=IP地址        
//设置在指 定的IP地址上侦听用户的FTP请求。若不设置。则对server所绑定的全部IP地址进行侦听。

仅仅有在以standalone模式执行时才有效。对于仅仅绑定了 一个IP地址的server,不须要配置该项。默认情况下,配置文件里没有该配置项。若server同一时候绑定了多个IP地址,则应通过该配置项,指定在哪个IP地址上 提供FTP服务,即指定FTPserver所使用的IP地址。

注意:设置此值前后,能够通过netstat -tnl对照port的监听情况

accept_timeout=60            
//设置建立被动(PASV)数据连接的超时时间,单位为秒。默认值为60。
connect_timeout=60    
// PORT方式下建立数据连接的超时时间,单位为秒。
data_connection_timeout=300   
//设置建立FTP数据连接的超时时间。默觉得300秒。

idle_session_timeout=600      
//设置多长时间不正确FTPserver进行不论什么操作。则断开该FTP连接。单位为秒,默觉得600秒。

即设置发呆的逾时时间,在这个时间内,若没有数据传送或指令的输入,则会强行断开连接。
pam_service_name=vsftpd     
//设置在PAM所使用的名称。默认值为vsftpd。

setproctitle_enable=NO|YES   
//设置每一个与FTPserver的连接,是否以不同的进程表现出来,默认值为NO,此时仅仅有一个名为vsftpd的进程。若设置为YES。则每一个连接都会有一个vsftpd进程,使用“ps -ef|grep ftp”命令可查看到详细的FTP连接信息。安全起见。建议关闭。

9.FTP工作方式与port设置

(1)FTP工作方式简单介绍
      FTP的工作方式有两种,一种是PORT FTP,另一种是PASV FTP。下面介绍其工作方式。

二者的差别在于PORT FTP的传输数据port是由FTPserver指定的,而PASV FTP则是由FTPclient指定的,并且每次数据连接所使用的port号都不同。正由于如此。所以在CuteFTP等FTPclient软件中,其连接类型设置项中有PORT和PASV两种选择。

当FTPserver设置为PASV工作模式时,client也必须设置为PASV连接类型。若client连接类型设置为PORT,则能建立FTP连接,但在执行ls或get等须要数据请求的命令时,将会出现无响应并终于报告无法建立数据连接。

(2)与port相关的配置
listen_port=21               
// 设置FTPserver建立连接所侦听的port,默认值为21。
连接非标准port演示样例:ftp www.sunflower.org 7000
connect_from_port_20=YES   
// 默认值为YES,指定FTP传输数据连接使用20port。若设置为NO,则进行数据连接时。所使用的port由ftp_data_port指定。

ftp_data_port=20            
//设置PORT方式下FTP数据连接所使用的port,默认值为20。
pasv_enable=YES|NO        
//若设置为YES。则使用PASV工作模式。若设置为NO,使用PORT模式。

默觉得YES。即使用PASV模式。
pasv_max_port=0            
//设置在PASV工作方式下。数据连接能够使用的port范围的上界。默认值为0。表示随意port。
pasv_mim_port=0            
//设置在PASV工作方式下,数据连接能够使用的port范围的下界。默认值为0。表示随意port。

10.设置传输模式

FTP在传输数据时,可使用二进制(Binary)方式,也可使用ASCII模式来上传或下载数据。
ascii_download_enable=YES //设置是否启用ASCII模式下载数据。默觉得NO。

ascii_upload_enable=YES    //设置是否启用ASCII模式上传数据。

默觉得NO。

11.设置上传文档的所属关系和权限

(1)设置匿名上传文档的属主
chown_uploads=YES           
//用于设置是否改变匿名用户上传的文档的属主。

默觉得NO。若设置为YES,则匿名用户上传的文档的属主将被设置为chown_username配置项所设置的username。
chown_username=whoever     
//设置匿名用户上传的文档的属主名。

仅仅有chown_uploads=YES时才有效。建议不要设置为root用户。

但系统默root

(2)新增文档的权限设定
local_umask=022            
// 设置本地用户新增文档的umask,默觉得022。相应的权限为755。umask为022,相应的二进制数为000 010 010,将其取反为111 101 101,转换成十进制数,即为权限值755,代表文档的全部者(属主)有读写执行权,所属组有读和执行权。其它用户有读和执行权。022适合于大多数情 况。一般不须要更改。

若设置为077,则相应的权限为700。
anon_umask=022               //设置匿名用户新增文档的umask。

默认077
file_open_mode=0755          //设置上传文档的权限。权限採用数字格式。

默认0666

12.日志文件

xferlog_enable=YES             //是否启用上传/下载日志记录。

默觉得NO
xferlog_file=var/log/vsftpd.log //设置日志文件名称及路径。

需启用xferlog_enable选项
xferlog_std_format=YES           //日志文件是否使用标准的xferlog日志文件格式(与wu-ftpd使用的格式同样) 。默觉得NO

13.其它设置

text_userdb_names=NO       
//设置在执行ls命令时,是显示UID、GID还是显示出详细的username或组名称。默觉得NO。以UID和GID方式显示,若希望显示username和组名称,则设置为YES。
ls_recurse_enable=YES       
//若设置为YES,则同意执行“ls –R”这个命令,默认值为NO。在配置文件里该配置项被凝视掉了。与此相似的另一些配置,须要启用时,将凝视符去掉并进行YES或NO的设置就可以

4.匿名用户家文件夹的改动

有的时候我们并不想让匿名用户訪问默认公布文件夹,而是让它訪问我们另外设置的文件夹,要做例如以下改动:
(1)首先我们要创建新的默认公布文件夹,并且创建了5个文件:

(2)改动配置文件:

(3)可是我们发现它的安全上下文并非ftp的,这样即使开放服务匿名用户也是看不到的,所以我们要改动他们的安全上下文:

看到这里并不能算结束,由于我们把selinux也打开了。所要还要查看ftp选项的布尔值,当它同意匿名登录时才干够:

重新启动服务看看效果:


显示的刚好就是我们传见的五个文件,说明此时ftp的匿名公布文件夹已经更改为了/ftp/pub。

通知:

由于ftp的配置演示样例挺复杂的,分几个帖子解说。可是我尽量会把演示样例讲的清楚,全部的演示样例运用自如的话,是能够满足企业的工作要求的。
下午在更剩下的演示样例。

转载于:https://www.cnblogs.com/ldxsuanfa/p/10030909.html

linux杂谈(十四):ftp的企业应用级的配置(一)相关推荐

  1. SAP UI5 应用开发教程之五十四 - 如何将本地 SAP UI5 应用配置到本地 Fiori Launchpad 中的试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...

  2. 马哥教育第二十四ftp协议、vsftpd的高级应用、rpc概念及nfs的基本应用、samba及其基本应用...

    1.ftp协议及vsftpd的基本应用          文件共享服务:                  工作在应用层:ftp(file transfer protocol)             ...

  3. linux(十四)程序和进程的深入研究

    目录 一.程序和进程的基础知识 1.1.程序和进程的关系 1.2.进程状态 二.命令解析 2.1.ps 命令 2.1.1.针对查询结构进行补充 2.2.TOP命令 2.2.1.描述 2.2.2 查询结 ...

  4. 嵌入式Linux(十四)IIC

    1. IIC&AP3216C简介   AP3216C是一个环境传感器.连接到I.MU6ULL的I2C1上.I2C1_SCL使用UART4_TXD,复用值为ALT2:I2C1_SDA使用UART ...

  5. 第十四章:详解Jenkins节点配置

    2014-03-02:修正对于lable标签的理解.(1.532.1版本已经给出了官方解释) 2013-12-22:添加JNLP端口修改,修改了一些错误. Jenkins有个很强大的功能:分布式构建( ...

  6. Android开发笔记(二十四)res目录的结构与配置

    res目录结构 res是Android项目工程中存放各类的目录,主要包括布局.图形与配置等等.res的子目录主要有: anim : 存放动画的描述文件 drawable : 存放各类图形的描述文件,包 ...

  7. 实训十四:路由器策略路由(PBR)配置

    一.实验目的 1.掌握策略路由的配置 2.理解策略路由的原理 二.应用环境 PBR 使得用户可以依据饿来进行路由,而不是路由协议,目前支持的策略是:ip 报文大小.源 IP 地址. 三.实验设备 1. ...

  8. SAP UI5 应用开发教程之六十四 - 基于 OData V4 的 SAP UI5 表格控件如何实现 filter(过滤) 和 sort(排序)功能试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...

  9. STM32学习心得二十四:内部温度传感器原理及实验

    记录一下,方便以后翻阅~ 主要内容: 1) STM32内部温度传感器概述: 2) 相关实验代码解读. 实验功能:系统启动后,实时将内部温度传感器的值传至串口助手上. 官方资料:<STM32中文参 ...

最新文章

  1. Python 词典增加和删除
  2. Python爬虫解析html:lxml的HtmlElement对象获取和设置inner html
  3. 【资源】C++学习资料 - 逆天整理 - 精华无密版【最新】
  4. [C++调试笔记]define.h
  5. 送给使用phpstorm+thinkphp开发者的福利
  6. 数据库-索引-普通索引-唯一索引
  7. mysql+server+80_Windows Server 2019 IIS10.0+PHP(FastCGI)+MySQL环境搭建教程
  8. Angularjs Nodejs Grunt 一个例子
  9. 数字逻辑对偶式_数字电子技术实验——组合逻辑电路的设计
  10. 【报告分享】德勤-教育行业发展报告(政策、资本、AI、职业教育).pdf2019年中国外卖产业调查研究报告.pdf...
  11. 下一个主要AI平台是什么?苹果说:手机
  12. 超级计算机能算数学题吗,圆周率到底能不能算尽?人类拿超级计算机算了一下,结果不敢相信...
  13. java quartz 触发_JavaEE进阶知识学习-----定时任务调度Quartz-2-触发器Trigger
  14. ubuntu安装cuda11.2
  15. [WPF]控件应用多个样式
  16. Windows开机运行程序
  17. 视频捕获增加color space converter + Transform Filter
  18. ps图片去水印-ps图片去水印教程
  19. 利用函数wavread对语音信号进行采样_信号时间采样
  20. office启动出现oxc0000142的问题的解决方案

热门文章

  1. 99%的人不会计算绝对值——探究Java如何实现绝对值函数
  2. java做app流程图,Android App 构建流程分析
  3. 解决Error L6218E Undefined symbol XXX....问题
  4. Android面试送分题:这份354页笔记的Android进阶知识+大厂高频面试题,已拿offer
  5. 关于Yii1和Yii2的ActiveRecord活动记录对象关联查询时底层调用SQL语句的不同
  6. 女生穿不穿高跟鞋有什么区别?
  7. 国都证券短信平台遭攻击 证券客户信息安全谁之责
  8. photoshop样机素材使用
  9. 在WINCC中使用自定义的动画效果控件ocx
  10. “暴走P图“隐私政策