2021.2.20 更新

1 概述

文章核心:

  • CentOS8使用vsftpd搭建FTP服务器
  • 安装以及测试的详细过程

2 安装

2.1 安装vsftpd+ftp

sudo yum install -y vsftpd
sudo yum install -y ftp # 测试使用,搭建FTP服务器只需要vsftpd

2.2 开启服务

systemctl start vsftpd

2.3 设置开机启动(可选)

可以用

systemctl list-unit-files | grep vsftpd

查看是否开机启动,笔者机器上显示disabled

通过

chkconfig vsftpd on

开启自启,再次执行systemctl,可以看到变成了enabled

2.4 修改配置文件

配置文件默认为/etc/vsftpd/vsftpd.conf

sudo vim /etc/vsftpd/vsftpd.conf

首先修改anonymouse enable=YES,再添加一行anon_upload_enable=YES

第一行的意思是允许匿名登录,第二行的意思是允许匿名上传,接着重启服务:

systemctl restart vsftpd

3 测试准备

安装部分就算完成了,下面是测试。测试分为:

  • 浏览器测试
  • ftp命令测试

而为了测试权限,两者又分为:

  • 匿名测试
  • 用户登录测试

另外为了测试的完整还加入了wget的下载测试。

在测试之前先创建测试文件:

cd /var/ftp/pub
sudo vim test

4 浏览器测试

4.1 匿名测试

ifconfig获取内网ip,在浏览器中输入ftp://ip

可以看到有一个pub文件夹,里面有刚才新建的test文件:

右键保存即可下载文件:

下载完成。

去终端看看:

4.2 用户登录测试

输入

ftp://username@ip

再输入用户密码即可登录成功。默认访问的是用户根目录下的文件:

下载的话同上,右键选择下载即可。

5 ftp命令测试

首先安装ftp


5.1 匿名测试

ftp ip

ftp为默认的匿名登录用户名,至于密码,可以在/etc/vsftpd/vsftpd.conf中设置一个

no_anon_password=YES

这样匿名用户可以空密码登录。

5.1.1 上传测试

直接使用put命令,后面接上文件,这里的upload.txt是执行ftp之前的所在文件夹下的upload.txt

这里提示不能创建文件,是权限的原因,要确保/var/ftp/pubother用户有写权限:

默认的/var/ftp/pub的权限是644,修改成647

sudo chmod 647 /var/ftp/pub

同时修改上传文件的权限,允许other用户可读:

sudo chmod 644 /root/upload.txt

如果不行,可以使用selinux设置ftpd_full_access

getsebool -a | grep ftp

ftpd_full_access开启:

setsebool ftpd_full_access on

再进入upload.txt所在的文件夹,执行ftp,再次put

成功!

5.1.2 下载测试

直接get文件即可,由于上面已经设置好了权限,所以不会出现问题。

若出现权限问题可从三方面入手:

  • /var/ftp/pub的对other用户的可读权限:因为是下载,而且匿名,所以只需要对other用户的可读权限
  • 被下载文件的对other用户的可读权限
  • selinux的问题,设置ftpd_full_accesson

5.2 用户登录测试

执行ftp时用对应用户名与密码登录:

默认进入了用户根目录。

5.2.1 上传测试

直接put即可:

若出现权限问题参照上面5.1.2的那三种方法。

5.2.2 下载测试

随便在用户根目录新建一个文件,这里是kr:

直接get即可:

6 wget测试

wget用来下载文件,初始下载的目录与ftp登录时的目录一致:

  • 匿名登录ftp,登录的是/var/ftp目录,则wget会从这个/var/ftp目录下载文件,下载到执行wget命令所在的目录
  • 使用用户kr登录ftp,则登录的是/home/kr目录,wget会从/home/kr下载文件

6.1 匿名测试

注意,请确保被下载文件对other用户有可读权限:

sudo chmod o+w xxxxxx

然后使用wget

wget ftp://ip/pub/xxxx

6.2 用户登录测试

使用--ftp-user--ftp-password指定用户名与密码,其余同上:

wget ftp://ip/xxx --ftp-user=xxxx --ftp-password=xxxx

成功。

7 总结

总结一下步骤:

  • 安装好ftpvsftpd
  • 修改配置文件(/etc/vsftpd/vsftpd.conf
  • 添加对操作的文件的相应权限

对于不能上传与下载的原因,基本上都是权限的问题,主要就是三方面:

  • ftp目录的权限:比如可以是/var/ftp/pub没有对应的写权限导致上传失败,没有对应读权限导致下载失败
  • 被上传文件的权限:比如被上传的文件没有读权限导致上传失败
  • selinux:使用setsebool设置ftpd_full_accesson

解决权限问题后,基本就可以通过ftp/wget顺利地使用这个ftp服务器上传/下载文件了。

8 还有疑问?

可以在评论留言大家一起讨论。

CentOS8搭建FTP服务器的更多相关文章

  1. 在Ubuntu Server 14.04中搭建FTP服务器(VMWare)

    自己搭建ftp服务器,方便主机与虚拟机中的Ubuntu传输文件. 选用的ftp软件为vsftpd. 1.命令行: sudo apt-get install vsftpd 2.安装完配置: vsftpd ...

  2. 超简单——自己搭建ftp服务器

    自己搭建ftp服务器 之所以没选择serv-u,一是因为收费,虽说网上有破解版,但是使用过程中发现破解版很不稳定,经常异常死掉,随后改选用免费的filezilla. 1软件获取 从百度搜索 FileZ ...

  3. Linux 搭建FTP服务器

    介绍 本章主要介绍在Linux中搭建FTP服务器的过程,需要掌握的要点是配置文件的合理配置. 知识点 在linux中使用的FTP是vsftp FTP可以有三种登入方式分别是: 匿名登录方式:不需要用户 ...

  4. RedHat6.2搭建FTP服务器

    我的环境: A:Red Hat Enterprise 6.2 IP:192.168.16.12 此机作测试端 B:Red Hat Enterprise 6.2 IP:192.168.16.13 此机做 ...

  5. 使用FileZilla等软件搭建ftp服务器

    FTP的全称是File Transfer Protocol(文件传输协议).顾名思义,就是专门用来传输文件的协议. FTP服务器,则是在互联网上提供存储空间的计算机,它们依照FTP协议提供服务.简单地 ...

  6. 使用apache ftpserver搭建ftp服务器

    作为一个javaer,遇到任何问题,先查一下java中的解决方案.地球上的许多事情,在java中都能找到完美的解决方案.之前搭建ftp服务器使用的是vsftpd,现在可以把它卸掉了,它以服务的形式运行 ...

  7. 在阿里云主机上基于CentOS用vsftpd搭建FTP服务器

    最近需要在一台阿里云的云服务器上搭建FTP服务器,在这篇博文中分享一下我们根据实际需求进行的一些配置. ftp软件用的是vsftpd. vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序 ...

  8. Windows server 2008 r2搭建FTP服务器

    最近需要搭建FTP服务器,顺着书上的教程走一遍流程. 1. 安装FTP服务 图一 图二 图三 可以看到上面提示并未启动windows自动更新,这个需要注意一下. 2. 新建FTP站点 准备FTP文件夹 ...

  9. windows 下使用 Filezilla server 搭建 ftp 服务器

    windows 下使用 Filezilla server 搭建 ftp 服务器 1. Filezilla server 免费,开源, ftp 服务端 2. 下载安装, windows  https:/ ...

随机推荐

  1. (转)IP协议详解之子网寻址、子网掩码、构造超网

    原文网址:http://www.cnblogs.com/way_testlife/archive/2010/10/05/1844399.html 子网寻址 1. 从两级IP地址到三级IP地址 < ...

  2. linux下安装mysql8.0.x步骤

    1.下载mysql mysql官网:https://dev.mysql.com/downloads/mysql/ 将下载的mysql上传打linux 2.解压并重命名 [root@rsyncClien ...

  3. DOM及相关操作

    1.背景介绍        什么是DOM?简单地说,DOM是一套对文档的内容进行抽象和概念化的方法, 在现实世界里,人们对所谓的'世界对象模型'都不会陌生,例如,当用'汽车'.'房子'和'树'等名词来 ...

  4. Java线程池 ExecutorService了解一下

    本篇主要涉及到的是java.util.concurrent包中的ExecutorService.ExecutorService就是Java中对线程池的实现. 一.ExecutorService介绍 E ...

  5. 微信小程序:post请求参数放在请求体中还是拼接到URL中需要看后台是如何接收的

    前端发送post请求时,请求参数可以放在请求中,代码如下: function post(url, data, callback) { wx.request({ method: 'POST', url: ...

  6. Docker 镜像加速教程

    原文链接:https://fuckcloudnative.io/posts/docker-registry-proxy/ 在使用 Docker 和 Kubernetes 时,我们经常需要访问 gcr. ...

  7. 分布式文件系统FastDFS简介、搭建、与SpringBoot整合实现图片上传

    之前大学时搭建过一个FastDFS的图片服务器,当时只是抱着好奇的态度搭着玩一下,当时搭建采用了一台虚拟机,tracker和storage服务在一台机器上放着,最近翻之前的博客突然想着在两台机器上搭建 ...

  8. IDEA SVN 使用

    转: IDEA SVN 使用 一.上传项目到 SVN VCS -> Import into Version Control -> Share Project(Subversion) 点击 ...

  9. OpenGL中的坐标系统详细概括:包括Z缓冲

    一: 首先就是关于几个坐标系统的概括: 局部坐标是对象相对于局部原点的坐标,也是物体起始的坐标. 下一步是将局部坐标变换为世界空间坐标,世界空间坐标是处于一个更大的空间范围的.这些坐标相对于世界的全局 ...

  10. Azure Front Door(一)为基于.net core 开发的Azure App Service 提供流量转发

    一,引言 之前我们讲解到使用 Azure Traffic Manager.Azure LoadBalancer.Azure Application Gateway,作为项目的负载均衡器来分发流量,转发 ...