华为ECS云服务器 Ubuntu 安装和配置FTP教程

折腾了一下在云服务器上搭建FTP,可以在浏览器输入公网IP查看共享的文件,也就是创建下载点。现记录如下。
第一种场景:匿名访问,通过浏览器输入公网地址即可实现下载
第二种场景:输入指定的用户名和密码,可进入到另一个目录,可实现下载和上传与新建。例如通过FileZilla.
0、环境
华为云ECS ubuntu18.04, vsftpd 3.0.3
一、FTP登陆方式
FTP可以有三种登入方式分别是:
  • *匿名登录:不需要用户密码
  • *本地用户:使用本地用户和密码登入
  • *虚拟用户:也是使用用户和密码登入,但是该用户不是linux中创建的用户
二、FTP连接方式
  • 控制连接:标准端口为21,用于发送FTP命令信息。
  • 数据连接:标准端口为20,用于上传、下载数据。
  • 主动模式:服务端从20端口主动向客户端发起连接。
  • 被动模式:服务端在指定范围内的某个端口被动等待客户端发起连接。
一般都采用被动模式。主动模式存在安全隐患,客户机很容易发起DdoS攻击。
三、FTP传输模式
  • 文本模式:ASCII模式,以文本序列传输数据。
  • 二进制模式:Binary模式,以二进制序列(比特流)传输数据。
ASCII模式一般只用于纯文本文件传输,而Binary模式更适合传输程序、图片等文件。尤其是对于可执行文件,如果把可执行文件以文本模式传输,则下载下来的文件将无法正常使用。
四、FTP安装和启动
  • 安装:apt-get install vsftpd
  • 启动:service vsftpd restart  或者 service vsftpd start
  • 查询:service vsftpd status
  • 停止:service vsftpd stop
  • 服务器放行规则设定:打开20-21 3000-3050(我配置的是3000-3050)
  •  
五、文件结构
vsftpd服务器的文件结构如下:
/usr/sbin/vsftpd              ##vsftpd主程序  
/etc/rc.d/init.d/vsftpd       ##用于启动终止脚本  
/etc/vsftpd/vsftpd.conf       ##vsftpd主配置文件  
/etc/pam.d/vsftpd             ##PAM认证文件  
/etc/vsftpd.ftpusers          ##禁止使用vsftpd的用户列表  
/etc/vsftpd.chroot_list       ##禁止或允许使用vsftpd的用户列表  需要在/etc/ 新建该文件
/srv/ftp                      ##匿名用户的下载目录  
/etc/logrotate.d/vsftpd.log   ##vsftpd的日志文件

六、配置文件说明

#一旦监听,进入standalone模式,与此相对的是inetd(inetd或xinetd)模式
listen=YES
# 是否监听ipv6,如果监听则需要另外再配置一个文件
listen_ipv6=NO
#是否允许匿名访问ftp
anonymous_enable=YES
#是否允许本地用户登录,指linux存在的用户,cat /etc/passwd 可以查看哪些用户,标准的七字段,默认NO
local_enable=YES
# 是否对登录用户开启写权限。属全局性设置。默认NO
write_enable=YES
#本地登录用户权限,022-umask=755,即代表文档的所有者(属主)有读写执行权,所属组有读和执行权,其他用户有读和执行权
local_umask=022
#是否允许匿名用户上传文件。只有在write_enable设置为YES时,该配置项才有效。而且匿名用户对相应的目录必须有写权限。默认为NO。
#anon_upload_enable=YES
#是否允许匿名用户创建目录。只有在write_enable设置为    YES时有效。且匿名用户对上层目录有写入的权限。默认为NO。
#anon_mkdir_write_enable=YES
#设置是否显示目录消息
dirmessage_enable=YES
#显示时间
use_localtime=YES
#是否启用上传和下载日志
xferlog_enable=YES
#默认值为YES,指定FTP数据传输连接使用20端口。若设置为NO,则进行数据连接时,所使用的端口由ftp_data_port指定。
connect_from_port_20=YES#设置匿名上传文档的属主,默认为NO。若设置为YES,则匿名用户上传的文档的属主将被设置为chown_username配置项所设置的用户名。
#chown_uploads=YES
#设置匿名用户上传的文档的属主名。只有chown_uploads=YES时才有效。建议不要设置为root用户。 但系统默root
#chown_username=whoever
#默认的系统日志,设置日志文件名及路径。需启用xferlog_enable选项
xferlog_file=/var/log/vsftpd.log#日志文件是否使用标准的xferlog日志文件格式(与wu-ftpd使用的格式相同) 。默认为NO
xferlog_std_format=YES
#设置多长时间不对FTP服务器进行任何操作,则断开该FTP连接,单位为秒,默认为600秒。即设置发呆的逾时时间,在这个时间内,若没有数据传送或指令的输入,则会强行断开连接。
idle_session_timeout=600
#设置建立FTP数据连接的超时时间,默认为300秒
data_connection_timeout=120#
# It is recommended that you define on your system a unique user which the
# ftp server can use as a totally isolated and unprivileged user.
#nopriv_user=ftpsecure
#
# Enable this and the server will recognise asynchronous ABOR requests. Not
# recommended for security (the code is non-trivial). Not enabling it,
# however, may confuse older FTP clients.
#async_abor_enable=YES#设置是否启用ASCII模式上传、下载数据。默认为NO。
#ascii_upload_enable=YES
#ascii_download_enable=YES#连接FTP的欢迎提示
ftpd_banner=Welcome to Jack  FTP service.
#
#指定不允许通过邮箱登录的文件,可以抵御DoS攻击。
#deny_email_enable=YES
#邮箱文件
#banned_email_file=/etc/vsftpd.banned_emails# 控制用户是否允许切换到上级目录
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
allow_writeable_chroot=YES
#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账户的主目录,即文件的系统的/srv/ftp目录。#被动模式下的设置,设置公网IP,和接收请求IP与端口,这里指定了服务器端口3000-3050用于发起到客户端连接,端口设置为0,则表示任意端口
pasv_address=XXX.XXX.XXX.XXX
pasv_min_port=3000
pasv_max_port=3050
#默认采用被动模式
#pasv_enable=NO
#
# You may activate the "-R" option to the builtin ls. This is disabled by
# default to avoid remote users being able to cause excessive I/O on large
# sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
# the presence of the "-R" option, so there is a strong case for enabling it.
#ls_recurse_enable=YES
## This option should be the name of a directory which is empty.  Also, the
# directory should not be writable by the ftp user. This directory is used
# as a secure chroot() jail at times vsftpd does not require filesystem
# access.
secure_chroot_dir=/var/run/vsftpd/empty
#
# This string is the name of the PAM service vsftpd will use.
pam_service_name=vsftpd
#
# This option specifies the location of the RSA certificate to use for SSL
# encrypted connections.
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO# Uncomment this to indicate that vsftpd use a utf8 filesystem.
utf8_filesystem=YES#################end#######################

其他说明:

#定义匿名用户的账户名称,默认值为ftp。
ftp_username=ftp           
#匿名用户是否允许下载可阅读的文档,默认为YES。
anon_world_readable_only=YES
#设置本地用户登录后所在的目录。默认配置文件中没有设置该项,此时用户登录FTP服务器后,所在的目录为该用户的主目录,对于root用户,则为/root目录。
local_root=/var/ftp             
#设置匿名用户登录后所在的目录。若未指定,则默认为/srv/ftp目录。
anon_root=/srv/ftp            
#设置匿名用户所能使用的最大传输速度,单位为b/s。若设置为0,则不受速度限制,此为默认值。
anon_max_rate=0       
#设置本地用户所能使用的最大传输速度。默认为0,不受限制。
local_max_rate=0       #对用户的访问控制由/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 文件中的用户将不允许访问FTP服务器;若设置为NO,则只有vsftpd.user_list文件中的用户,才能访问FTP服务器。#设置vsftpd允许的最大连接数,默认为0,表示不受限制。若设置为150时,则同时允许有150个连接,超出的将拒绝建立连接。只有在以standalone模式运行时才有效。
max_per_ip=0
#设置每个IP地址允许与FTP服务器同时建立连接的数目。默认为0,不受限制。通常可对此配置进行设置,防止同一个用户建立太多的连接。只有在以standalone模式运行时才有效
max_clients=0
#设置在指定的IP地址上侦听用户的FTP请求。若不设置,则对服务器所绑定的所有IP地址进行侦听。只有在以standalone模式运行时才有效。 对于只绑定了一个IP地址的服务器,不需要配置该项,默认情况下,配置文件中没有该配置项。若服务器同时绑定了多个IP地址,则应通过该配置项,指定在哪 个IP地址上提供FTP服务,即指定FTP服务器所使用的IP地址。
listen_address=IP地址        

七、遇到的问题及解决

外网服务器搭建FTP 出现的问题及解决:
(1)227 Entering Passive Mode
解决方法第一种就是配置为主动模式。
vim etc/vsftpd/vsftpd.conf     ##Vsftpd主配置文件
添加:pasv_enable=NO
注意的是:浏览器访问只支持FTP的被动模式,也就是说只有在FTP配置成被动模式时,才能在远程浏览器里通过url访问
第二种解决方法
指定公网ip 用listen_address.
八、其他

默认情况下,匿名用户所有上传下载,所使用的用户都是ftp用户的权限,若要上传文件,则需要ftp用户有写的权限,若要下载,则需要ftp用户有读的权限,也就是说一般情况下,ftp用户对文件有读权限就对文件有下载权限了。

九、创建用户和密码
(1) 创建一个名叫ftpu的用户,并指定他的根目录为/home/ftpdir
useradd -d /home/ftpdir/ -s /bin/bash ftpu

(2)设置密码

passwd ftpu

(3)查看

cat /etc/passwd

十、xinetd运行模式和 standalone模式

像其它守护程序一样,vsftpd提供了standalone和inetd(inetd或xinetd)两种运行模式。简单解释一下, standalone一次性启动,运行期间一直驻留在内存中,优点是对接入信号反应快,缺点是损耗了一定的系统资源,因此经常应用于对实时反应要求较高的 专业FTP服务器。inetd恰恰相反,由于只在外部连接发送请求时才调用FTP进程,因此不适合应用在同时连接数量较多的系统。此外,inetd模式不 占用系统资源。除了反应速度和占用资源两方面的影响外,vsftpd还提供了一些额外的高级功能,如inetd模式支持per_IP(单一IP)限制,而 standalone模式则更有利于PAM验证功能的应用。

1.xinetd运行模式
大多数较新的系统采用的是xinetd超级服务守护进程。使用“vi /etc/xinetd.d/vsftpd” 看一下它的内容,如下:
disable = no 
socket_type = stream
wait = no
# 这表示设备是激活的,它正在使用标准的TCP Sockets。
# 如果“/etc/vsftpd.conf”中的有选项为“listen=YES”,注销它
最后,重启xinetd,命令如下:
$ /etc/rc.d/init.d/xinetd restart
#需要注意的是,“/etc/xinetd.d”目录中仅能开启一个FTP服务。

2.standalone模式

standalone模式便于实现PAM验证功能。进入这种模式首先要关闭xinetd下的vsftpd,设置“disable = yes”,或者注销掉“/etc/inetd.conf”中相应的行。然后修改“/etc/vsftpd.conf”中的选项为“listen=YES”。

如果是standlone模式,那么它是作为单独的一个服务启动的,不需要系统协作,不作为系统服务,如果要是成为xinetd模式,那么它的服务就要受系统服务的限制,比如创建一个新的服务进程,但是也有缺点,如果xinetd服务本身出了问题,那么相关的服务也是会受到影响的。

十一、参考资料
https://www.cnblogs.com/xiaojwang/p/10102668.html
https://www.cnblogs.com/tuteng/articles/2953034.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/405113.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CM3计算板读取SHT30以及I2C驱动

1、引言 用SHT30测温湿度,SHT30是I2C通信总线,具体信息去看Datasheet文档:https://pdf1.alldatasheet.com/datasheet-pdf/view/897974/ETC2/SHT30.html。操作系统是Linux,机器是CM3计算板,当然也可以是树莓派和其他主…

由浅入深CIL系列:5.抛砖引玉:判断string是否为空的四种方法的CIL代码看看效率如何?...

本节将接触几个新的CIL操作码如下 ldc.i4.0 将整数值 0 作为 int32 推送到计算堆栈上 Ceq 比较两个值。如果这两个值相等,则将整数值 1 (int32) 推送到计算堆栈上;否则,将 0 (int32) 推送到计算堆栈上。 Brtrue.s 如果 value 为…

kmalloc, vmalloc分配的内存结构

From: http://linux.chinaunix.net/techdoc/system/2008/06/16/1011365.shtml 对于提供了MMU(存储管理器,辅助操作系统进行内存管理,提供虚实地址转换等硬件支持)的处理器而言,Linux提供了复杂的存储管理系统&#x…

多功能串口调试工具

自己编写的一个超强的多功能串口调试工具。特性如下: 串口自动识别,定时刷新,热插拔管理设置串口数据帧超时时长自定义背景、收发字体大小和颜色接收、发送字节计数文件发送、HEX、ASCII发送显示接收发送时间、标志、报文头日志保存、控制台…

Linux内存管理和分析vmalloc使用的地址范围

From: http://www.cnblogs.com/dubingsky/archive/2010/04/20/1716158.html Vmalloc可以获得的地址在VMALLOC_START到VMALLOC_END的范围中。这两个符号在<asm/pgtable.h>中定义&#xff1a; /* include/asm/pgtable.h */ #define VMALLOC_OFFSET (8*1024*…

bzoj 2820 YY的GCD 莫比乌斯反演

题目大意&#xff1a; 给定N, M,求1<x<N, 1<y<M且gcd(x, y)为质数的(x, y)有多少对 这里就抄一下别人的推断过程了 后面这个g(x) 算的方法就是在线性筛的时候只考虑当前的数最小因子&#xff0c;如果进来的最小因子不存在&#xff0c;相当于在之前那个数的基础上的…

构建第一个Flex的Mobile APP

Flash Builder 4.5已经支持直接创建Flex Mobile Project&#xff0c;写一个最简单的例子 1、建立工程 右击--》新建--》输入工程名“MyFirstMobileApp” 点击“Next”进入下一步 修改初始化的标题文本信息为“Home”&#xff08;默认为HomeView&#xff09;&#xff0c;勾选“G…

由于可能不会将凭据发送到远程计算机,因此将不会进行连接。若要获得协助,请与您的系统管理员联系。...

windows10系统下&#xff0c;在通过VPN连接到堡垒机的时候&#xff0c;出现“由于可能不会将凭据发送到远程计算机&#xff0c;因此将不会进行连接。若要获得协助&#xff0c;请与您的系统管理员联系。” 以下是解决方法&#xff1a; 方法一.组策略 请按照下列步骤操作&#xf…

Wireshark抓包工具使用教程以及常用抓包规则

From: http://fangxin.blog.51cto.com/1125131/735178 Wireshark是一个非常好用的抓包工具&#xff0c;当我们遇到一些和网络相关的问题时&#xff0c;可以通过这个工具进行分析&#xff0c;不过要说明的是&#xff0c;这只是一个工具&#xff0c;用法是非常灵活的&#xff0c;…

SSH整合--1

简单说明&#xff1a;整个整合过程使用mysql数据库、Myeclipse 8.5&#xff0c;框架使用struts2.1.6,hibernate3.x,spring2.5 功能&#xff1a;实现简单的用户登录 0. 简单的流程 1. Resister.jsp <% page language"java" import"java.util.*" pageEnco…

poj3750

简单题 View Code #include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>usingnamespacestd;#definemaxn 100intn, w, s;charname[maxn][100];boolout[maxn];intmain(){//freopen("t.txt", "r", stdin);sca…

EF架构~了解一下,ADO.NET Entity Framework

回到目录 以下文章部分来自百度百科 背景 长久以来&#xff0c;程序设计师和数据库总是保持着一种微妙的关系&#xff0c;在商用应用程序中&#xff0c;数据库一定是不可或缺的元件&#xff0c;这让程序设计师一定要为了连接与访问数据库而去 学习 SQL 指令&#xff0c;因此在信…

CM3计算板装系统

1、CM3计算板简介 把树莓派搬到自己的产品中&#xff0c;一种和树莓派基础功能一模一样的板卡&#xff0c;并对相关管脚扩展&#xff0c;完成产品级的功能设计和硬件设计。板卡如下图所示&#xff0c;运行的是Linux操作系统。 2、下载镜像 CM3有多种内存搭配&#xff0c;常见…

关于 CKEditor 3.6以后不兼容ie6的问题解决方案

2019独角兽企业重金招聘Python工程师标准>>> skins\模版名称\editor.css 在第一个.cke_skin_kama *,.cke_skin_kama a:hover,.cke_skin_kama a:link,.cke_skin_kama a:visited,.cke_skin_kama a:active{.....}里面添加 _overflow:hidden;即可. 转载于:https://my.os…

USB/UART 串口转LoRa无线传输调试工具 评估套件

一、LoRa无线传输的特点 LoRa无线通信采用扩频调制通信方式&#xff0c;抗干扰强、灵敏度高&#xff0c;能够在较低功耗的情况下传输更远的距离。采用ISM免授权频段&#xff08;470MHZ-510MHZ&#xff09;&#xff0c;用于无线抄表、工业监控、农业管理、智慧园区、智慧楼宇等…

新手指导:51CTO微博小技巧

您是初次接触微博吗&#xff1f;您是不是不了解微博&#xff0c;不知道怎样才能玩转微博&#xff1f;没关系&#xff0c;小管家这就教您几招&#xff0c;让您通过140字轻松的将看到的、听到的、想到的事情随时随地分享给朋友。 一、怎样拥有微博二、新手快速使用微博攻略 2…

Linux给GCC编译的应用程序创建服务

一、创建服务文件 linux 服务文件的位置在&#xff1a; /etc/systemd/system &#xff0c;进入该目录。首先创建一个服务文件&#xff0c;名字可以按照xxx.service 的格式命名&#xff0c;例如我的噪声处理服务命名: noiserun.service。创建文件需要sudo权限&#xff1a;sudo …

IOS贝塞尔曲线圆形进度条和加载动画

做项目让做一个加载动画,一个圈圈在转中间加一个图片,网上有好多demo,这里我也自己写了一个,中间的图片可加可不加。其中主要用到贝塞尔曲线。UIBezierPath是对CGContextRef的进一步封装,不多说直接上代码&#xff1a; #import <UIKit/UIKit.h>interface CircleLoader : …

CM3计算板EC20模组拨号上网

1、安装 ppp 安装ppp&#xff1a;sudo apt-get install ppp 2、配置路由 查看路由和网卡 ifconfig ; route -n增加路由设备&#xff1a; sudo route add default dev ppp0 3、执行拨号脚本 进入linux-ppp-scripts 文件下&#xff1a;sudo ./quectel-pppd.sh /dev/ttyUSB3 …

CM3计算板I/O编程

1、CM3计算板的IO资源 CM3支持的I/O管脚数为54个&#xff0c;每个管脚包括一个或多个复用功能&#xff0c;分别位于ALT0~ALT5&#xff0c;如下表&#xff1a; 2、设备树启用IO外设的方式 通过在/boot/config.txt 文件中描述IO行为&#xff0c;可以在系统启动时&#xff0c;初…