搭建FTP服务器(Linux)

[Linux新手必看]从零开始教你搭建FTP服务实验 在这个详细的指南中,我将手把手教你如何从零开始搭建你自己的FTP服务器。不管你是Linux系统的新手,还是对FTP概念一无所知,都不必担心,因为本教程将涵盖所有必要的基础知识和操作步骤。本人亲测,只要跟着一步一步做,每一步都正确的情况下,是绝对可以做出来的.即文件传输协议.一般来讲,人们将计算机联网的首要目的就是获取资料,而文件传输是一种非常重要的获取资料的方式 . 阅读详情

前言

本文仅说明如何在linux服务器上搭建FTP服务器。

成稿日期:2024-04-13

本文参考以下文章

Windows系统中搭建FTP站点_轻量应用服务器(SAS)-阿里云帮助中心

如何搭建VSFTP及配置虚拟用户-阿里云帮助中心

vsftpd虚拟用户和本地用户不能共存 - linux—jock - 博客园

Linux操作系统版本:CentOS 7

简介

FTP服务器是一种用于文件传输的服务器,其中FTP代表文件传输协议(File Transfer Protocol)。它允许用户在本地计算机和远程服务器之间传输文件。通过FTP服务器,用户可以上传、下载、删除和管理文件,通常用于网站托管、文件共享以及远程文件备份等用途。FTP服务器通常需要用户名和密码进行访问,以确保文件传输的安全性。

如果你有以下需求,那么FTP服务器可以满足:

假如现在你有一个团队,有多个不同的队员,每一个队员都需要将数据传输给你(并不是通过社交软件,而是暴露出一个服务器给他们用于上传文件),但是如果直接把服务暴露给他们那么他们都拥有对其他成员文件修改、删除的权力,这样文件的安全无法保证,甚至还可能危及服务器(如果修改某些敏感配置)。

而FTP服务器可以设置虚拟用户,每一个虚拟用户只有你配置的工作目录的权限,比如工作目录是…/vuser1,那么这个用户就只可以在这个目录下创建、修改、删除文件夹,甚至可以限制用户的读写权限等等,总而言之,如果你需要对服务器文件系统进行更安全的限制,那么FTP服务器可以解决。

FTP(File Transfer Protocol)是一种文件传输协议,基于客户端/服务器架构,支持以下两种工作模式:

  • 主动模式(PORT):客户端向FTP服务器发送端口信息,由服务器主动连接该端口。
  • 被动模式(PASV):FTP服务器开启并发送端口信息给客户端,由客户端连接该端口,服务器被动接受连接。

FTP支持以下三种认证模式:

  • 匿名用户模式:任何人无需密码验证就可以直接登录FTP服务器。该模式不安全,一般只用来传输不重要的公开文件,不推荐在生产环境中使用。
  • 本地用户模式:通过Linux系统本地用户验证登录权限,相较于匿名用户模式更安全。
  • 虚拟用户模式:通过虚拟用户验证登录权限,虚拟用户只能访问Linux系统为其提供的FTP服务,而不能访问Linux系统的其他资源。该模式相较于其他两种模式更加安全。

搭建FTP服务器

准备工作
  1. 在本地主机上,下载并安装FileZilla。

具体下载地址,请参见FileZilla下载中心。只需要下载客户端即可。

启动客户端之后的页面

安装与配置vsftpd

vsftpd(very secure FTP daemon)是Linux操作系统下的一款小巧轻快、安全易用的FTP服务器软件。

1、执行以下命令,查看轻量服务器是否已安装vsftpd。
vsftpd -v

如果显示以下信息就是已经安装。

2、运行以下命令,安装vsftpd,已经安装无需再次安装
sudo yum install -y vsftpd

出现如下图所示信息,表示vsftpd安装成功。

3、运行以下命令,设置FTP服务开机自启动
sudo systemctl enable vsftpd.service
4、运行以下命令,启动FTP服务
sudo systemctl start vsftpd.service

说明

如果出现无法启动FTP,且提示错误信息Job for vsftpd.service failed because the control process exited with error code,请排查是否存在21端口被占用问题。

  1. 使用lsof -i:21命令,查看是否存在进程。
  2. 如果存在进程,使用kill -9 <进程号>命令,杀掉进程。
5、运行以下命令,查看FTP服务的端口号
sudo netstat -antup | grep ftp

如下图表示FTP已经启动

配置FTP访问模式(本地用户模式)

1、运行以下命令为FTP服务创建一个Linux用户。本示例中,该用户名为ftpadmin
sudo adduser ftpadmin
2、运行以下命令修改ftptest用户的密码
sudo passwd ftpadmin

运行命令后,根据命令行提示完成FTP用户的密码修改。

注意:linux 的密码不会显示出来,也就是linux系统中输入密码不会显示字符或者*

3、运行以下命令创建一个供FTP服务使用的文件目录
sudo mkdir /var/ftp/admin
4、运行以下命令更改/var/ftp/test目录的拥有者为ftpadmin
sudo chown -R ftpadmin:ftpadmin/var/ftp/admin
5、修改vsftpd.conf配置文件

1、运行以下命令,修改配置文件/etc/vsftpd/vsftpd.conf

如果您在安装vsftpd时,使用的是apt install vsftpd安装命令,则配置文件路径为/etc/vsftpd.conf。

sudo vim /etc/vsftpd/vsftpd.conf

2、按i进入编辑模式

3、修改下列参数的值

#禁止匿名登录FTP服务器。
anonymous_enable=NO
#允许本地用户登录FTP服务器。
local_enable=YES
#监听IPv4 sockets。
listen=YES

在行首添加#注释掉以下参数,关闭监听IPv6 sockets:

#listen_ipv6=YES

在配置文件的末尾添加下列参数,其中pasv_address参数需要替换为轻量应用服务器的公网IP地址:
注意设置被动模式开放的端口需要防火墙放行

#设置本地用户登录后所在目录。
local_root=/var/ftp/admin
#全部用户被限制在主目录。
chroot_local_user=YES
#启用例外用户名单。
chroot_list_enable=YES
#指定例外用户列表文件,列表中用户不被锁定在主目录。
chroot_list_file=/etc/vsftpd/chroot_list
#开启被动模式。如果需要使用被动模式开启 主动模式不用管
#pasv_enable=YES 
allow_writeable_chroot=YES
#本示例中为轻量应用服务器的公网IP地址。
pasv_address=xx.xx.xx.xx
#设置被动模式下,建立数据传输可使用的端口范围的最小值。
#建议您把端口范围设置在一段比较高的范围内,例如50000~50010,有助于提高访问FTP服务器的安全性。
pasv_min_port=50000
#设置被动模式下,建立数据传输可使用的端口范围的最大值。
pasv_max_port=50010
6、按Esc退出编辑模式,然后输入:wq并回车,保存退出文件
7、创建chroot_list文件,并在文件中写入例外用户名单

1、运行以下命令,创建chroot_list文件

sudo vim /etc/vsftpd/chroot_list

2、输入例外用户名单。此名单中的用户不会被锁定在主目录,可以访问其他目录

注意:这个名单内的用户不会被限制在其工作目录下,请谨慎设置,一般如果你不希望用户可以访问其他用户的文件不要将其用户名写在这个文件中。

注意:没有例外用户时,也必须创建chroot_list文件,内容可为空。

8、运行以下命令,关闭防火墙(生产环境不建议执行)
sudo systemctl stop firewalld

如果不关闭防火墙就需要放行端口号(请自行百度)

9、修改配置文件

1、运行以下命令,打开/etc/ssh/sshd_config文件

sudo vi /etc/ssh/sshd_config

2、在文件尾行将PasswordAuthentication的值改为yes(好像默认就是yes)

10、运行以下命令,重启FTP服务
sudo systemctl restart vsftpd.service
配置Linux防火墙

测试FTP连接

在这里插入图片描述

登录类型中,如果开启了匿名访问就可以使用匿名,如果是本地用户或者虚拟用户就使用正常或者询问密码方式。

正常输入密码之后如果效果如下图:则登录成功

如果出现登录了但是无法正常上传、下载,那么先检查一下文件的所属人有没有输错

配置FTP访问模式(虚拟用户模式)

1、建立虚拟用户的宿主用户

虚拟用户并不是系统用户,也就是说这些FTP的用户在系统中是不存在的。他们的总体权限其实是集中映射在一个系统用户身上,所谓vsftpd的[虚拟宿主用户],就是这样一个支持着所有虚拟用户的宿主用户。执行以下命令将虚拟用户映射在virtusers这个用户上。

useradd -d /data/ftproot virtusers -s /sbin/nologin

说明:-d指定家目录,这里指定之前的ftp根目录 /data/ftproot 。 -s指定系统用户登录的shell,nologin即不允许系统login登录。

2、建立FTP相关工作目录

建立FTP相关工作目录,以及权限管理。 最新版vsftpd不允许用户主目录有w权限,因此在主目录下新建一个子目录。所有上传、下载、删除、重命名等操作只能在子目录中进行,虚拟用户vuser1的ftp目录是/data/ftproot/vuser1/,没有w权限,设置权限为500。

3、执行以下命令创建目录
mkdir -p /data/ftproot/vuser1
4、执行以下命令进行权限设置
chown -R virtusers.virtusers /data/ftproot
chmod 500 /data/ftproot/vuser1
5、执行以下命令生成虚拟用户列表
vi /etc/vsftpd/vuserlist

虚拟用户列表的内容

vuser1
123456

说明:奇数行是用户名,偶数行是用户密码。

6、用系统的db_load工具来生成db文件,出于安全角度修改vuserlist.db为600权限
db_load -T -t hash -f /etc/vsftpd/vuserlist /etc/vsftpd/vuserlist.db
chmod 600 /etc/vsftpd/vuserlist.db
7、修改PAM验证。 修改/etc/pam.d/vsftpd,这个文件名与/etc/vsftpd.conf中的pam_service_name=vsftpd相对应。注释掉所有参数,在最后面加入以下两行内容
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuserlist
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuserlist

注意:如果你想要虚拟用户模式与本地用户模式同时生效,那么按照下面的配置进行修改

这个是完整的配置

#%PAM-1.0
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vuserlist
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vuserlist

session    optional     pam_keyinit.so    force revoke
auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth       required     pam_shells.so
auth       include      password-auth
account    include      password-auth
session    required     pam_loginuid.so
session    include      password-auth

一定要将 虚拟用户的配置放在前面!!!并且 将required 改成 sufficient!!!

sufficient相当于充分条件,当登录的时候满足了前面两条(虚拟用户)就不会进行后面本地用户的登录认证,相反如果是本地用户登录就会先进行前面的验证,不通过就进行后面的验证。这样本地用户和虚拟用户就都可以登录了。

8、创建及配置虚拟用户的配置文件

创建虚拟用户配置文件

mkdir /etc/vsftpd/vuser_conf/

配置虚拟用户的配置文件

vi /etc/vsftpd/vuser_conf/vuser1

添加以下配置信息

local_root=/data/ftproot/vuser1
anon_upload_enable=YES
anon_world_readable_only=NO
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
9、配置VSFTP的/etc/vsftpd/vsftpd.conf主配置文件

如果以下配置项在上面已经配置过无需重复配置,按需开启!

listen=YES                                     #开启IPv4监听
listen_ipv6=NO                                 #关闭IPV6监听
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
pam_service_name=vsftpd                        #如果前面/etc/pam.d/vsftpd没有改文件名,就不修改
virtual_use_local_privs=YES                    #虚拟用户使用本地用户的权限
guest_enable=YES                               #开启虚拟用户
guest_username=virtusers                       #指定虚拟用户的宿主用户user_config_dir=/etc/vsftpd/vuser_conf         #指定虚拟用户配置文件
pasv_enable=YES                                #开启被动模式
pasv_min_port=30100                            #被动模式最小端口,本示例设置为30100
pasv_max_port=30200                            #被动模式最大端口,本示例设置为30200
pasv_address=X.X.X.X                           #被动模式的IP地址,VPC环境下需要设置为服务器公网地址
10、记得创建文件/etc/vsftpd/chroot_list,并且在文件中添加ftp用户,否则连接ftp会报错
touch /etc/vsftpd/chroot_list

修改文件,文件中添加ftp用户,本文档示例中的ftp用户是vuser1(非必要不要将用户加入这个文件中,在这个文件中的用户不会被限制在之前设置好的用户目录下,也就是用户可以修改不属于他的文件)

vim /etc/vsftpd/chroot_list

添加的用户列表内容

vuser1
11、增加虚拟用户

1、在之前的虚拟用户列表中添加虚拟用户

vi /etc/vsftpd/vuserlist
testUser
Ty9oIN@ke@g

注意:奇数行是用户名 偶数行是密码

2、在虚拟用户配置文件夹之下再创建一个该用户的配置文件并写入配置

vi /etc/vsftpd/vuser_conf/testUser

配置内容

local_root=/data/ftproot/testUser
anon_upload_enable=YES
anon_world_readable_only=NO
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

3、创建用户工作目录

mkdir -p /data/ftproot/用户目录名

4、设置权限

chmod 775 目录名

5、重启服务

# 重启服务
sudo systemctl restart vsftpd.service	
# 查看状态
sudo systemctl status vsftpd.service
写在最后

1、如果通过代码上传/下载文件连接成功,但是出现异常connect timed out

做以下排查:

- 防火墙已经关闭,或者21端口已经放行,如果是被动模式需要放行在vsftpd.conf文件中指定的被动模式端口号
- 用户具有该文件夹下的写权限,可以在ftp客户端尝试上传和下载文件
- 尝试增加连接超时时间
- 如果ftp服务器是主动模式,需要在上传之前设置ftpClient的模式为主动模式,也可以设置ftp服务器为被动模式(此方法亲测有效!!!)
Linux下实现FTP服务器 查看本地文件lls:可以直接使用system函数直接调用;显示服务器文件ls:则可以通过socket套接字来实现数据传输,然后用popen函数运行服务器ls这个api再通过read函数将ls展开的数据读出来,再通过write函数写到客户端,put、get均是以上思路。①获取服务器的文件: get xxx。④上传文件到服务器: put xxx。②显示服务器有哪些文件: ls。⑤打印当前服务器路径: pwd。①查看客户端本地文件: lls。②进入客户端文件夹: lcd。⑥退出服务器: quit。 阅读详情

相关推荐

linux搭建并使用FTP服务器(vsftp)&

linux如何配置ftp服务器,一文详解

小小白的博客 4460

搭建FTP服务器

计算机“”端口“” 是英文port的义译,可以认为是计算机与外界通讯交流的出口(1)公认端口:0-1023(2)注册端口:1024-49151(3)动态端口:49152-65535常见端口:8080为http服务的备用端口21FTP服务器所开放的端口。用于上传、下载22SSH端口23Telent25SMTP服务器所开放 的端口,用于发送邮件80用于网页浏览。

2201_75526942的博客 4万+

在linux下搭建ftp和nginx组合服务器

一、搭建ftp服务器 1、查看是否已经安装ftp [root@localhost ~]# which vsftpd 2、使用yum安装ftp服务器(安装目录在/usr/sbin/vsftpd下,工作目录在/home/ftpuser下) [root@localhost ~]# yum install vsftpd -y 3、创建一个ftp用户:ftpuser [...

云卷云舒的架构师之路 1944

FTP服务器搭建详细步骤

FTP服务器搭建详细操作

高校教师 | AI兴趣者 专注Python|大数据|LLM学习 分享浅显易懂知识体系 19万+

第十五届蓝桥杯省赛C/C++B组H题【拔河】题解(AC)

由于枚举三个点肯定会超时,所以只能枚举两个点,我们尝试枚举第一个区间。的复杂度,需要找出右区间中和左区间的和最相近的值,可以考虑使用。一开始,我们将所有可能的右区间的区间和,都插入。做法同上,用前缀和优化数组求和的过程。的数组和差值最小是多少,其中。递增进行枚举左区间,当。的数组,求两个子数组。为左端点的区间的和。

一只大采集~ 5283

课设报告-超市收银系统 javaweb(附源代码)

超市收银系统由收银员输入顾客的会员卡卡号(若有卡),所购买的货号。从数据库中取出有关价格信息,在把这些信息返回给收银台,同时把收银台的销售总量和有关种类商品的剩余量以及该持卡顾客的消费情况交数据库存储以供查询。另外,对没有卡的消费不记录该顾客的消费情况扥个人信息,如果一个未持卡顾客一次购买满200元,可围棋发放一张会员卡,以后在该商场购物可享受9折优惠。

m0_71106830的博客 2974

Linux - 搭建ftp服务器

目录 1. 搭建ftp服务器 1.1 .安装vsftpd软件 1.1.1 查看vsftpd软件的信息: 1. 2 .启动vsftpd软件 1.2.1 如何知道一个进程已经启动? 1.查看进程 2.查看端口号 1.3. 登录ftp服务 1.3.1 下载客户端工具 ftp和lftp 1.3.2 登录lftp 1.3.3 查看lftp常用命令: 1.3.4 lcd命令 : 在本地切换目录 1.3.5 !ls : 查看本地目录内容 1.3.6 put命令 上传文件到ft......

qq_48391148的博客 7万+

西门子 标准程序解读---> 机器手抓取和涂胶控制程序

摘要 该程序实现机械手在OP70/OP90工位的自动化控制,核心功能包括: 流程控制:分段(Seg1-Seg11)管理抓件、涂胶、放件等动作,结合DB1050/DB1250数据块监控工位状态及变位机位置反馈。 安全机制:配置干涉区(FC124)、实时检测安全光/急停信号,防止碰撞;服务程序(FB191)支持维修位触发与安全隔离。 参数配置:通过DB块关联机器人速度、节拍(FB27)、车型编码(如空过=2)及手自动模式(DB70.DBX21.2)。 应用场景:适用于汽车焊接/装配线

工控智联驿站 1238

Linux搭建FTP服务器

搭建FTP服务器及配置和登录

2501_90634316的博客 2881

【永磁同步电机】simulink永磁同步电机PMSM矢量控制【含Matlab源码 7372期】

simulink永磁同步电机PMSM矢量控制 完整的代码,方可运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 1028

vs code , 配置 claude code 插件, 默认选项 : --dangerously-skip-permission

摘要:本文介绍如何在VS Code中为Claude Code插件配置--dangerously-skip-permission参数,包含两种方法:图形界面设置(适合新手)和直接编辑settings.json(精准配置)。该参数会跳过权限检查,仅建议在本地测试环境中使用。配置后需通过命令面板验证参数是否生效,并注意安全风险,避免在生产环境使用。多参数配置时需用数组格式,不同版本插件可能键名略有差异。

AI天才研究院 4991

Linux搭建 FTP服务器

Linux搭建FTP服务器

m0_37642477的博客 4651

【ComfyUI】SDXL + 单LoRA 房屋平面图渲染装修

本文介绍了一种基于ComfyUI的室内平面设计图自动生成效果图的工作流。该流程通过导入房屋平面图,结合SDXL室内设计模型与北欧风格LoRA模块,快速生成多房间效果展示。工作流包含图像输入、文本处理、模型加载和图像生成等环节,支持风格化渲染和细节补充,适用于建筑设计、家装展示、房地产营销等场景。核心采用SDXL通用室内设计模型和北欧极简LoRA,通过节点衔接实现自动化批量生成,能在短时间内将平面方案转化为逼真的三维效果图。该技术可提升设计呈现效率,辅助客户决策,并应用于教学研究领域。

Mr数据杨 3648

linux搭建FTP服务器步骤

教你如何在linux中搭建ftp服务器

fish332的博客 7109

【华为OD机考真题】- 斗地主之顺子(B卷-200分)(Java版)

🔔本文收录于「最新最全华为OD机试真题(Java版)」专栏,手把手带你零基础教学华为OD机试。本题集提供最优题解思路,解题步骤,代码解析,复杂度分析及最优题解源码等,支持多语言题解,助你轻松拿捏OD机考,一举上岸!安利大家关注&&收藏&&订阅!题库正在疯狂收录中,up!up!up!! 🚫提醒:拒绝一切代考/替考,违法必究!专栏所写题库均精心搜集于互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验所撰,欢迎订阅。    💗订阅福利:一次订阅,可永久免费阅读,提供在线答疑解惑,后续题库更新

**My Coding Family** 815

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

在Linux上搭建ftp服务器

ftp服务器搭建 FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。使用起来还是挺方便的,偶尔可以用来在同一局域网的两台主机互传文件。下面介绍在Linux上关于ftp的搭建步骤: 1、安装ftp服务 在Linux上搭建ftp,需要下载vstfpd的软件包,为了方便直接使用yum命令进行安装。 yum install vsftpd 2、使用iptables配置防火墙规则 进入iptables里添加下面两条指令: vi /etc/sysconfig/

玄同的博客 1万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Linux下FTP服务器搭建

Linux下FTP服务器搭建一、FTP介绍二、环境介绍三、FTP服务端搭建步骤1.安装相关软件包2.启动FTP并检查状态3.检查服务端口运行状态4.修改FTP配置文件5.关闭selinux及防火墙三、客户端操作1.安装软件包2.客户端测试登录情况 一、FTP介绍 FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问

jks212454的博客 2241

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

linux如何测试ftp服务器,linux下FTP服务器的搭建

1、FTP服务器的简介关于ftp的介绍,大家也一定不陌生了。我就直接把百度百科上的介绍拿过来,和大家一起温习一下概念。FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以...

weixin_31653645的博客 1528

Linux——搭建FTP服务器

FTP(File Transfer Protocol) :是一种处于应用层的用于文件传输的协议。FTP客户端和FTP服务器之间的通信使用协议族。它规定了客户端和服务器之间的通信格式和命令集,包括用户认证、文件传输、文件名和目录信息等,允许用户在远程计算机上上传和下载文件。FTP协议的客户端可以是任何支持FTP协议的程序,例如Windows系统中的FileZilla、Mac OS系统中的Cyberduck、Linux系统中的vsftpd等。

星辰 4012

linux搭建ftp服务器

linux搭建ftp服务器 要在linux搭建ftp服务器的话,需要先安装一个工具 即 vsftpd 1 安装 yum install vsftpd -y (• 检查是否已安装vsftpd rpm -qa | grep vsftpd • 默认配置文件在/etc/vsftpd/vsftpd.conf) 2 创建ftp工作目录,例如: mkdir /usr/ftpdata: 3 添加用户ftp...

TaiYangb的博客 1556

FTP服务器搭建(Linux)

一、FTP1.1 FTP简介FTP协议包括两个部分,和FTP客户端。FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。可以利用FTP协议把网页或程序传到Web服务器上。因为FTP传输效率高,所以在网络上传输大的文件时,一般也采用该协议。默认情况下FTP协议使用TCP端口中的 20、21端口,20用于传输数据,21用于传输控制信息。1.2 Linux搭建FTP(需确认防火墙是否开启,如未开启防火墙需要打开)本实验Linux操作系统版本: CentOS 7.6。

z146484的博客 2111

Linux下搭建FTP服务器

Linux下搭建FTP服务器

weixin_67177297的博客 5115

Linux学习应用篇——搭建FTP服务器(超全面+详细!)

本文总结了如何在Linux系统上搭建FTP服务器,以及使用Windows系统和LInux系统作为客户端进行匿名用户连接和本地用户连接的过程;内容包括FTP概述、FTP的配置文件和常见配置方式、FTP服务器连接实验、常见报错原因和解决方法以及常用FTP命令和FTP应答码分析。发布于此供大家交流学习!

lonelypasserby的博客 5352

在Linux中搭建一个FTP服务器

在Linux中搭建一个FTP服务器   在Linux中搭建一个ftp服务器,以供两个工作小组保管文件使用。禁用匿名。第一个小组使用ftp账号:ftp1,工作目录在:/var/ftp/ftp1;第二个小组使用ftp2,工作目录在:/var/ftp/ftp2。   两个小组互相不能访问各自的文件,需要限制用户不能离开自己的工作目录。 【实现步骤】 1.检查安装vsftpd服务器 以ro...

睡梦空间 2172

Linux系统搭建 FTP服务器

摘要:本文详细介绍了在Linux系统中搭建FTP服务器的完整流程。主要内容包括FTP协议的定义、工作原理及两种工作模式(主动/被动模式),重点讲解通过VSFTPD服务实现基础配置的步骤:关闭防火墙、安装服务、文件准备、用户创建及权限管理。文章还涉及安全注意事项,建议对敏感环境使用FTPS或SFTP加密传输。该指南涵盖从匿名访问到本地用户管理的完整配置方案,并提供了连接测试方法,为系统管理员提供了实用的FTP服务器部署参考。(150字)

qq_45152408的博客 1505
上一篇: Seata Client 2.0 无法提示业务异常信息问题
下一篇: Spring boot集成xxl-job以及动态任务配置
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值