Linux 下搭建 FTP 服务器

一、搭建环境

        阿里云 CentOS 7.3 64位

二、FTP协议基础知识

2.1 简介

        FTP 是 File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文件协议”。用于 Internet 上的控制文件的双向传输。

2.2 FTP的运作流程与使用端口

        FTP 的传输使用的是 TCP 传输协议,由于 FTP 服务的特点是数据量大、控制信息相对较少,因此在设计的时分别对控制信息与数据进行处理的方式,这样用于通信的 TCP 连接有两个:控制连接与数据连接。其中,控制连接用于在通信双方之间传输 FTP 命令与响应信息,完成连接建立、身份认证与异常处理等控制操作;数据连接用于在通信双方之间传输文件或目录信息。

        FTP支持两种模式:Standard(PORT方式,主动方式),Passive(PASV,被动方式)。

2.2.1 PORT 方式

        图1 FTP服务器的 PORT 方式示意图

        至于连接的过程是这样的:

(1) 建立命令通道的连接

        如上图所示,用户端会随机取一个大于1024以上的端口(port AA)来与FTP服务器端的port 21进行连接,这个过程当然需要经历TCP的三次握手!完成连接后用户端便可透过这个连接来对TCP服务器下达指令,包括查询文件名、下载、上传等等指令都是利用这个通道来下达的。

(2)通知FTP服务器端使用 active 且告知连接的端口号

        FTP 服务器的 21 端口主要用在命令下达,但是当关系到数据流时,就不是使用这个连接了。用户端在需要数据的情况下,会告知服务器端需要用什么方式来连接,如果是 PORT 模式时,用户端会先随机启用一个端口(图中的port BB),且通过命令通道告知 FTP 服务器这两个信息,并等待 FTP 服务器的连接。

(3)FTP服务器【主动】向用户端连接

        FTP 服务器由命令通道了解用户端的需求后,会主动的由 20 这个端口向用户端的 port BB 连接,这个连接当然也会经历 TCP 的三次握手!此时 FTP 的用户端与服务器端会建立两条连线,分别用在命令的下达与数据的传送。而预设 FTP 服务器端使用的主动连接端口就是port 20。

2.2.2 PASV 方式

        图2 FTP服务器的 PASV 方式示意图

(1)用户与服务器建立命令通道

        同样的需要建立命令通道,通过三次握手就可以建立起这个通道了。

(2)用户端发出PASV的连接请求

        当有使用数据通道的指令时,用户端可通过命令通道发出 PASV 的被动式连接要求(Passive 的缩写),并等待服务器的回应。

(3)FTP服务器启动数据端口,并通知用户端连接

        如果你的 FTP 服务器能够处理被动式连接,此时 FTP 服务器会先启动一个端口在监听。这个端口号码可能是随机的,也可以是某一范围的端口,具体看你的 FTP 服务器软件而定。然后你的 FTP 服务器会通过命令通道告知用户端已经启动的端口(图中的 port PASV),并等待用户端的连接。

(4)用户端随机取用大于1024的端口进行连接

         然后你的用户端会随机取用一个大于 1024 的端口号来对主机的 port PASV 连接。

2.3 用户分类

2.2.1 Real账户

        这类用户是指在FTP服务上拥有账号。当这类用户登陆FTP服务器的时候,其默认的主目录就是其账号命名的目录。但是,其还可以变更到其他目录中去。如系统的主目录等等。

2.2.2 Guest用户

        在FTP服务器中,我们往往会给不同的部门或者某个特定的用户设置一个帐户。但是,这个账户有个特点,就是其只能够访问自己的主目录。服务器通过这种方式来保障FTP服务上其他文件的安全性。这类帐户,在Vsftpd软件中就叫做Guest用户。拥有这类用户的帐户,只能够访问其主目录下的目录,而不得访问主目录以外的文件。

2.2.3 Anonymous(匿名)用户

        这也是我们通常所说的匿名访问。这类用户是指在FTP服务器中没有指定帐户,但是其仍然可以进行匿名访问某些公开的资源。

三、VSFTP

3.1 简介

        VSFTP 是一个基于 GPL 发布的类 Unix 系统上使用的 FTP 服务器软件,它的全称是 Very Secure FTP。

3.2 安装

        查看是否装有 vsftpd 服务。

rpm -qa | grep vsftpd

        若不存在,则使用 yum 命令直接安装:

yum -y install vsftpd

3.3 配置 vsftpd

        修改配置文件,默认路径为 /etc/vsftpd/vsftpd.conf,命令如下。

vim /etc/ftpd/ftpd.conf

        以下为需要修改或添加的配置项。

  • anonymous_enable=NO #不允许匿名用户登陆
  • chroot_list_enable=YES #chroot_list_file 指定文件中指定的用户禁锢在其主目录中
  • chroot_list_file=/etc/vsftpd/chroot_list

        在 /etc/vsftpd 目录下建立文件 chroot_list,命令如下

cd /etc/vsftpd
touch chroot_list

        在 chroot_list 里添加 FTP 用户的用户名,每个用户一样,这里我添加的用户名为 symind。

3.4 添加 FTP 用户组及用户

        添加一个用户组,这里我命名为 webftp。

groupadd webftp

        在用户组中添加用户,并指定用户的主目录。

useradd -g webftp -M -d /home/www -s /sbin/nologin symind

        设置密码。

passwd symind

        修改目录拥有者。

chown -R symind.webftp /home/www

        修改目录权限,vsftp 默认要求如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了。

chmod u=rx /home/www

        也可以更改 vsftpd 的配置,allow_writeable_chroot=YES。

参考文献

1. 百度百科 - ftp(文件传输协议) https://baike.baidu.com/item/ftp/13839?fr=aladdin

2. 百度百科 - VSFTP https://baike.baidu.com/item/VSFTP/2596628?fr=aladdin

3. 鳥哥的 Linux 私房菜 - 檔案伺服器之三 http://linux.vbird.org/linux_server/0410vsftpd.php

4. vsftpd:500 OOPS: vsftpd: refusing to run with writable root inside chroot()错误的解决方法 http://blog.youkuaiyun.com/bluishglc/article/details/42399439

5. CentOS下vsftp设置、匿名用户&本地用户设置、PORT、PASV模式设置 http://desert3.iteye.com/blog/1685734

转载于:https://www.cnblogs.com/SyMind/p/8243454.html

飞思卡尔智能车竞赛是一项备受关注的科技赛事,旨在激发学生的创新和实践能力,尤其是在嵌入式系统、自动控制和机器人技术等关键领域。其中的“电磁组”要求参赛队伍设计并搭建一辆能够自主导航的智能车,通过电磁感应线圈感知赛道路径。本压缩包文件提供了一套完整的电磁组智能车程序,这是一套经过实战验证的代码,曾在校级比赛中获得第二名的优异成绩。 该程序的核心内容可能涉及以下关键知识点: 传感器处理:文件名“4sensor”表明车辆配备了四个传感器,用于获取环境信息。这些传感器很可能是电磁感应传感器,用于探测赛道上的导电线圈。通过分析传感器信号的变化,车辆能够判断自身的行驶方向和位置。 数据采集与滤波:在实际运行中,传感器读数可能受到噪声干扰,因此需要进行数据滤波以提高精度。常见的滤波算法包括低通滤波、高斯滤波和滑动平均滤波等,以确保车辆对赛道的判断准确无误。 路径规划:车辆需要根据传感器输入实时规划行驶路径。这可能涉及PID(比例-积分-微分)控制、模糊逻辑控制或其他现代控制理论方法,从而确保车辆能够稳定且快速地沿赛道行驶。 电机控制:智能车的驱动通常依赖于直流电机或无刷电机,电机控制是关键环节。程序中可能包含电机速度和方向的调节算法,如PWM(脉宽调制)控制,以实现精准的运动控制。 嵌入式系统编程:飞思卡尔智能车的控制器可能基于飞思卡尔微处理器(例如MC9S12系列)。编程语言通常为C或C++,需要掌握微控制器的中断系统、定时器和串行通信等功能。 软件架构:智能车软件通常具有清晰的架构,包括任务调度、中断服务程序和主循环等。理解和优化这一架构对于提升整体性能至关重要。 调试与优化:程序能够在比赛中取得好成绩,说明经过了反复的调试和优化。这可能涉及代码效率提升、故障排查以及性能瓶颈的识别和解决。 团队协作与版本控制:在项目开发过程中,团队协作和版本控制工具(如Git)的应用不可或缺,能够保
双闭环直流电机调速系统是一种高效且应用广泛的直流调速技术。通过设置转速环和电流环两个闭环,系统能够对电机的转速和电流进行精准控制,从而提升动态响应能力和稳定性,广泛应用于工业自动化领域。 主电路设计:主电路采用三相全控桥整流电路,将交流电转换为可调节的直流电,为电机供电。晶闸管作为核心元件,通过调节控制角α实现输出电压的调节。 元部件设计:包括整流变压器、晶闸管、电抗器等元件的设计与参数计算,这些元件的性能直接影响系统的稳定性和效率。 保护电路:设计过载保护、短路保护等保护电路,确保系统安全运行。 驱动电路:设计触发电路和脉冲变压器,触发电路用于触发晶闸管导通,脉冲变压器用于传递触发信号。 控制器设计:系统核心为转速调节器(ASR)和电流调节器(ACR),分别对转速和电流进行调控。检测电路用于采集实际转速和电流值并反馈给调节器。 仿真分析:利用MATLAB/SIMULINK等工具对系统进行仿真分析,验证其稳定性和性能指标是否达标。 方案确定与框图绘制:明确系统构成及各模块连接方式。 主电路设计:选择整流电路形式,设计整流变压器、晶闸管等元部件并计算参数。 驱动电路设计:设计触发电路和脉冲变压器,确保晶闸管准确触发。 控制器设计: 转速调节器(ASR):根据转速指令调整实际转速。 电流调节器(ACR):根据ASR输出指令调整电流,实现快速响应。 参数计算:计算给定电压、调节器、检测电路、触发电路和稳压电路的参数。 仿真分析:通过软件模拟系统运行状态,评估性能。 电气原理图绘制:完成调速控制电路的电气原理图绘制。 双闭环控制策略:转速环在外,电流环在内,形成嵌套结构,提升动态响应能力。 晶闸管控制角调节:通过改变控制角α调节输出电压,实现转速平滑调节。 仿真分析:借助专业软件验证设计的合理性和有效性。 双闭环直流电机调速系统设计涉及主电路、驱动电路和控制器设计等多个环节,通过仿
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值