如何部署 ftp 文件服务

文件传输协议(英文:File Transfer Protocol,缩写:FTP)是用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式。它属于网络传输协议的应用层。FTP 是相当古老的传输协议之一,他最主要的功能是在服务器与客户端之间进行档案的传输。 FTP 其实是以 TCP 封包的模式进行服务器与客户端计算机之间的联机,当联机建立后,此外,也可以直接管理用户在 FTP 服务器上面的档案,相当的方便! 而这个古老的协议是使用明码传输,且过去有相当多的安全危机历史。为了更安全的使用 FTP 协议, 我们主要介绍较为安全但功能较少的 vsftpd 这个软件。今天这篇教程,我们将使用腾讯云CVM服务器来部署VSFTP所提供的FTP服务。

安装VSFTPD

vsftpd 是在 Linux 上被广泛使用的 FTP 服务器,根据其官网介绍,它可能是 UNIX-like 系统下最安全和快速的 FTP 服务器软件。因为我们使用的是Ubuntu Server 16.04.1 LTS版本的操作系统,所以我们将使用Ubuntu自带的apt包管理器进行安装。首先我们需要更新apt列表,然后在执行sudo apt-get install vsftpd来安装相关服务,具体如下。

sudo apt-get update
sudo apt-get install vsftpd -y

执行完成后,你将看到类似如下输出

ubuntu@VM-0-7-ubuntu:~/resume/pages/left$ sudo apt-get install vsftpd -y
Reading package lists... Done
.......
Processing triggers for systemd (229-4ubuntu21.2) ...
Processing triggers for ureadahead (0.100.0-19) ...
ubuntu@VM-0-7-ubuntu:~$ 

很快,vsftpd将安装完成,我们可以输入sudo netstat -nltp | grep 21命令检查FTP服务是否开启

ubuntu@VM-0-7-ubuntu:~$ sudo netstat -nltp | grep 21
tcp6       0      0 :::21                   :::*                    LISTEN      24487/vsftpd

我们看到,系统提示21端口已经被vsftpd占用。如果没有启动,可以手动开启 VSFTPD 服务:

sudo systemctl start vsftpd.service

配置VSFTPD

接下来,我们要专门创建一个用户给vsftpd使用,我们这里给用户起名叫www,大家可以随意设置。首先我们创建一个给www用户使用的主目录,我这里创建为/home/www

sudo mkdir /home/www

接下来,我们就可以创建用户了,使用下面的命令快速创建

sudo useradd -d /home/www -s /bin/bash www

然后,我们为www用户设置密码,以确保其安全。

sudo passwd www

这里系统会要求你输入两次密码,密码默认不显示,要确保两次密码输入相同。

ubuntu@VM-0-7-ubuntu:~$ sudo passwd www
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

接下来,为了确保www用户只能通过FTP访问,而无法使用ssh等方式访问,我们需要对其进行配置。

sudo usermod -s /sbin/nologin www

删除掉 pam.d 中 vsftpd,因为该配置文件会导致使用用户名登录 ftp 失败:

sudo rm /etc/pam.d/vsftpd

这时,你还需要进行一些设置,我们使用编辑器打开/etc/vsftpd.conf这个文件,然后新增以下内容。

sudo chmod a+w /etc/vsftpd.conf
sudo nano /etc/vsftpd.conf
# 限制用户对主目录以外目录访问
chroot_local_user=YES
# 指定一个 userlist 存放允许访问 ftp 的用户列表
userlist_deny=NO
userlist_enable=YES
# 记录允许访问 ftp 用户列表
userlist_file=/etc/vsftpd.user_list
# 不配置可能导致莫名的530问题
seccomp_sandbox=NO
# 允许文件上传
write_enable=YES
# 使用utf8编码
utf8_filesystem=YES

保存后,我们新建/etc/vsftpd.user_list文件,用于存放允许访问 ftp 的用户。

sudo nano /etc/vsftpd.user_list

在文件内部写入www,然后保存。

www

接下来用下面的命令赋予读写权限。

sudo chmod a+w /etc/vsftpd.user_list

由于vsftpd_2.3.5从版开始,取消了根目录的可写权限,所以我们要在根目录下创建新的文件夹以方便vsftpd运行。

设置主目录访问权限(只读):

chmod a-w /home/www

新建公共目录,并设置权限(读写):

sudo mkdir /home/www/public && sudo chmod 777 -R /home/www/public

然后我们重启 vsftpd 服务

sudo systemctl restart vsftpd.service

访问FTP服务

我们需要用软件链接到FTP服务器才行,通过我们上一步设置的FTP账户www及密码,使用ftp软件登录FTP服务器,这里我们以MobaXterm为例,点击左上角的Session按钮,选择以FTP方式连接,在Remote host输入你的服务器的公网IP地址,Username输入你的用户名,这里我们获取到的是www,输入www,点击OK

输入你设置的密码,即可连接到你的服务器,你会看到类似下面的页面。

此时我们就可以上传你的文件到public目录啦!

总结

怎么样,简单吗?赶快去腾讯云开发者实验室免费领取实验机器动手实践。当然,感兴趣的小伙伴也可以去购买一台服务器以便长期学习使用。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏IT笔记

记一次8小时惊心动魄的服务器+网站升级

写在前面,这篇文章服务器升级后然并没有找到论坛Discuz和博客Typecho异常所在,捯饬了半天最终选择升级和重装,成功解决。有些时候感觉真的没必要追究问题所...

4638
来自专栏帘卷西风的专栏

关于linux系统端口查看和占用的解决方案

转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog)

1102
来自专栏deepcc

IE=edge,chrome=1的META信息详解

4138
来自专栏张戈的专栏

php平滑重启nginx,彻底清除WordPress的静态缓存

每一次分享技术文章,都是基于自己的痛点,基于自己的需求。这次也一样,所以分享具体方法之前,我先说一下我这次的需求与痛点: 一、需求痛点 在博客集成了代码版缓存功...

4339
来自专栏哈雷彗星撞地球

Mac 下安装node.js

Node.js 是一个用Chrome's V8 JavaScript engine 构建的 JavaScript 运行时框架。Node.js 使用事件驱动、非阻...

2135
来自专栏腾讯移动品质中心TMQ的专栏

JAVA代码覆盖率工具JaCoCo-实践篇

上周 JAVA代码覆盖率工具JaCoCo-原理篇 简单介绍了JaCoCo其生成覆盖率的基本原理,这周的实践篇的主要内容就是将原理应用到实践中,本篇内容全部都是具...

1K9
来自专栏Java帮帮-微信公众号-技术文章全总结

Web-第二十七天 SVN使用【悟空教程】

为保障团队开发过程中人员沟通各方面成本的降低,必须使用一种有效的方式减少沟通环节,提高开发效率,对资源的共享进行管理。

1811
来自专栏程序员叨叨叨

【9】全民博客时代的到来——20分钟简要教程

很久以前就想搭建一个个人技术博客的网站了,但是那时候接触的东西不多,没有听说过hexo、jekyll、wordpress等快速blog生成工具,自己在网上找了博...

1343
来自专栏Python

linux目录结构详细介绍

3063
来自专栏刘明的小酒馆

事务与一致性:刚性or柔性?

在高并发场景下,分布式储存和处理已经是常用手段。但分布式的结构势必会带来“不一致”的麻烦问题,而事务正是解决这一问题而引入的一种概念和方案。我们常把它当做并发操...

91210

扫码关注云+社区

领取腾讯云代金券