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. canal数据同步 客户端代码实现

    1.引入相关依赖 <dependencies> <dependency> <groupId>org.springframework.boot</groupId ...

  2. 【原创】Linux虚拟化KVM-Qemu分析(十)之virtio驱动

    背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: KVM版本:5.9 ...

  3. Windows定时重新启动(适用于server 2012 r2)

    直接看链接吧:https://jingyan.baidu.com/article/2d5afd69dd8e9d85a2e28eb7.html 开始菜单,找到"计划任务程序"; 2 ...

  4. POJ-2240(floyd算法简单应用)

    Arbitrage poj-2240 #include<iostream> #include<cstdio> #include<cstring> #include& ...

  5. 基于Hi3559AV100 RFCN实现细节解析-(3)系统输入VI分析一 :

    下面随笔系列将对Hi3559AV100 RFCN实现细节进行解析,整个过程涉及到VI.VDEC.VPSS.VGS.VO.NNIE,其中涉及的内容,大家可以参考之前我写的博客: Hi3559AV100的 ...

  6. Windows下常用测试命令

      (1)ping 127.0.0.1 (测试本地网卡,127.0.0.1是本地循环地址,如果本地址无法Ping通,则表明本地机TCP/IP协议不能正常工作) (2)ping 127.0.0.1  - ...

  7. @WebFilter("")配置servlet访问出现404的原因

    配置 servlet 一共有两种方式 直接在web.xml中配置name 和 url-parttern 使用注解配置servlet 使用注解的方式配置servlet是在servlet3.0之后新增的特 ...

  8. Java 并发编程之 Condition 接口

    本文部分摘自<Java 并发编程的艺术> 概述 任意一个 Java 对象,都拥有一个监视器方法,主要包括 wait().wait(long timeout).notify() 以及 not ...

  9. Python编程中可能经常用到的函数

    1.os.walk() 一般用法为 import os ph=r'D:\temp\build' for root,dirs,files in os.walk(ph): print(root,dirs, ...

  10. jQuery学习笔记(2) jQuery选择器

     jQuery的选择器完全继承了CSS的风格,利用jQuery选择器,可以非常便捷和快速地找出特定的DOM元素,然后为它们添加相应的行为. 目录 目录 CSS选择器 jQuery选择器 jQuery选 ...