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 还有疑问?

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


氷泠
420 声望647 粉丝